You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Woocommerce Elementor模板ACF自定义PHP短代码编辑器500错误修复咨询

修复Elementor编辑器中自定义短代码的500错误

错误原因

在Elementor编辑器环境中,全局$product对象不存在(值为null),代码直接调用$product->get_id()会触发致命错误。

需要修改的代码部分

  1. 校验$product对象有效性:在调用$product->get_id()前,必须判断$product是否为WC_Product类的实例,避免对null调用方法。
  2. 增加编辑器环境判断(可选):直接检测是否处于Elementor编辑模式,是的话返回空内容,跳过后续逻辑。
  3. 短代码改用return输出:遵循WordPress短代码规范,将echo改为return,避免输出顺序混乱。

修改后的完整代码

// Shortcode for Video from ACF
function wpc_elementor_shortcode( $atts ) {
    global $product;
    
    // 检测Elementor编辑器环境,直接返回空内容
    if ( isset( $_GET['action'] ) && $_GET['action'] === 'elementor' ) {
        return '';
    }
    
    if ( ! is_user_logged_in() ) return '';
    
    // 先确认$product是有效产品对象,再执行购买判断
    if ( is_a( $product, 'WC_Product' ) && wc_customer_bought_product( '', get_current_user_id(), $product->get_id() ) ) {
        return get_field('video_tutorial');
    }
    
    return '';
}
add_shortcode( 'purchase_video_tutorial', 'wpc_elementor_shortcode');

补充说明

  • 编辑器环境判断通过URL参数action=elementor实现,这是Elementor编辑页面的典型标识。
  • 用is_a()判断$product类型,能确保在非产品页面(如首页、编辑器)也不会触发错误。
  • 短代码返回内容而非直接echo,符合WordPress短代码运行机制,避免内容提前输出导致的布局问题。

内容的提问来源于stack exchange,提问作者Anzy's Art

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.07 23:01:34