wordpress 自定义php代码错误Woocommerce Elementor模板与ACF

hk8txs48  于 2022-12-22  发布在  WordPress
关注(0)|答案(1)|浏览(180)

我得到了一个500错误的产品模板,我粘贴的短代码。
我创建了一个短码显示视频,如果用户购买了特定的产品.
视频URL来自ACF字段。

// Shortcode for Video from ACF
function wpc_elementor_shortcode( $atts ) {
    global $product;
    if ( ! is_user_logged_in() ) return;
    if ( wc_customer_bought_product( '', get_current_user_id(), $product->get_id() ) ) {
    echo get_field('video_tutorial');
    } 
}
add_shortcode( 'purchase_video_tutorial', 'wpc_elementor_shortcode');

在前端,它可以工作,但在elementor构建器中,如果放置了短代码[purchase_video*_*tutorial],则显示500错误。
以上代码调试显示错误:

Uncaught Error: Call to a member function get_id() on null in ..... functions.php:133

我需要在php代码中添加什么来修复elementor pagebuilder的这个错误?

bttbmeg0

bttbmeg01#

验证意味着检查您正在访问的对象是否不为空,如下所示:

if ( $product != null && wc_customer_bought_product( '', get_current_user_id(), $product->get_id() ) ) {

同样,短码应该返回字符串,而不是打印它

echo get_field('video_tutorial');

return get_field('video_tutorial');

另外,wc_customer_bought_product的第一个参数是客户的电子邮件

$current_user = wp_get_current_user();
    $customer_email = $current_user->email;
    wc_customer_bought_product($customer_email, get_current_user_id(), $product->get_id() )

相关问题