用短代码动态插入WooCommerce产品ID

时间:2019-01-18 12:34:19

标签: php wordpress woocommerce

设置

我在Elementor有一家WooCommerce商店。

我正在使用Elementor单个产品页面模板来为每个产品生成产品页面。

我想使用this plug-in在每个产品页面上显示“经常一起购买(FBT)”元素。

为显示FBT元素,插件的创建者提供了以下短代码:[premmerce_get_bundles_by_main_product_id id="X"],其中X是WooCommerce产品ID。


问题

X不是动态的。

如果我填写产品ID,例如简码中的产品2,Elementor产品页面模板将显示我的每个产品的产品2的FBT产品。


问题

我可以使X动态吗?优选地,X被自动设置为正在访问哪个页面的产品的id。

2 个答案:

答案 0 :(得分:1)

仅当以如下方式输出简码时,才可以在简码中使用动态数据:

global $product;
$id = $product->get_id();

echo do_shortcode( '[premmerce_get_bundles_by_main_product_id id="' . $id . '"]');

请参阅https://developer.wordpress.org/reference/functions/do_shortcode/

答案 1 :(得分:1)

您可以尝试扩展短代码:

function so_extend_frequent_bought_shortcode() {
    global $product;
    $id = $product->get_id();

    return do_shortcode( '[premmerce_get_bundles_by_main_product_id id="' . $id . '"]');
}
add_shortcode( 'my_new_shortcode', 'so_extend_frequent_bought_shortcode' );

现在,您只需要在帖子中添加[my_new_shortcode]即可。 如果您无法编辑functions.php,请使用名为Code Snippets

的插件