WooCommerce自定义短代码:解决Elementor编辑器兼容问题
解决Elementor编辑器中WooCommerce SKU短代码报错问题
你的问题核心是没有对$product变量的有效性做判断——在Elementor编辑器这类无产品上下文的环境中,global $product获取到的是null,直接调用get_sku()方法会触发致命错误,导致编辑器无法加载。
只需给函数加上有效性校验逻辑,在无有效产品对象时返回空值即可:
function display_woo_sku() { global $product; // 检查产品对象是否存在且为合法的WooCommerce产品实例 if ( ! $product || ! is_a( $product, 'WC_Product' ) ) { return ''; } return $product->get_sku(); } add_shortcode( 'woo_sku', 'display_woo_sku' );
代码说明:
! $product:判断$product是否为空(比如编辑器无产品上下文时的情况)! is_a( $product, 'WC_Product' ):额外确保拿到的是合法的WooCommerce产品对象,避免意外类型错误- 满足任一条件时返回空字符串,否则正常返回SKU值
替换你主题functions.php里原有的代码后,Elementor编辑器就能正常加载,同时在有产品上下文的页面依然能正常输出SKU。
内容的提问来源于stack exchange,提问作者funtoosh
相关产品推荐
相关产品推荐

