php 在文章内容中使用短代码触发Woocommerce钩子

vltsax25  于 2023-04-04  发布在  PHP
关注(0)|答案(1)|浏览(118)

我试图将动作钩子woocommerce_single_product_summary分配给一个短代码,这样,最终用户就可以在他们在 gutenberg 中创建的布局中自由移动页面的整个single_product_summary部分,而不是在模板中的固定位置使用do_action。
我在functions.php中有以下内容:

function getsummary_shortcode( $atts ) {
    ob_start();
    do_action( 'woocommerce_single_product_summary' );
    $woocommerce_single_product = ob_get_clean();
    return $woocommerce_single_product;
}

add_shortcode('getsummary','getsummary_shortcode');

但是,这似乎会在无限循环中输出single_product_summary内容。
我发现这里有一些帖子试图做一些类似的事情,但没有一个试图做我正在做的事情。

2admgd59

2admgd591#

您可能需要取消注册,并在函数回调中重新注册getsummary短代码,以防止它被woocommerce_single_product_summary钩子调用

function getsummary_shortcode( $atts ) {
    remove_shortcode('getsummary');
    ob_start();
    do_action( 'woocommerce_single_product_summary' );
    $woocommerce_single_product = ob_get_clean();
    add_shortcode('getsummary','getsummary_shortcode');
    return $woocommerce_single_product;
}

add_shortcode('getsummary','getsummary_shortcode');

相关问题