WooCommerce如何识别相关产品循环,仅用woocommerce_after_shop_loop_item_title钩子
在WooCommerce中识别当前循环并仅在相关产品循环中使用钩子
嘿,这个需求很常见!在WooCommerce里完全可以精准识别当前处于哪个产品循环,尤其是你想单独在相关产品循环里使用woocommerce_after_shop_loop_item_title钩子的场景,咱们来一步步实现:
核心思路:利用WooCommerce全局变量$woocommerce_loop
WooCommerce在初始化各类产品循环(比如店铺主循环、相关产品、 upsell产品、 cross-sell产品等)时,会维护一个全局的$woocommerce_loop数组,里面存储了当前循环的关键标识信息——其中的name字段就是循环的唯一名称,相关产品循环的name值固定为related_products。
具体实现代码
你只需要在钩子的回调函数里,先检查这个全局变量的值,再决定是否执行你的自定义代码:
add_action('woocommerce_after_shop_loop_item_title', 'custom_related_products_extra_content', 10); function custom_related_products_extra_content() { // 引入WooCommerce循环的全局变量 global $woocommerce_loop; // 精准判断当前是否为相关产品循环 if (isset($woocommerce_loop['name']) && $woocommerce_loop['name'] === 'related_products') { // 这里写你要在相关产品标题后添加的内容 echo '<span class="related-product-badge">你可能也喜欢</span>'; } }
额外小贴士
- 如果你想进一步确保代码只在产品详情页生效(毕竟相关产品只会在产品页展示),可以在判断里再加一层
is_product():if (is_product() && isset($woocommerce_loop['name']) && $woocommerce_loop['name'] === 'related_products') { // 你的代码 } - 钩子的第三个参数
10是默认优先级,如果你需要调整代码的执行顺序(比如要在其他插件内容之前/之后显示),可以修改这个数字,数字越小执行越早,越大越晚。
内容的提问来源于stack exchange,提问作者Digitos
相关产品推荐
相关产品推荐

