我正在尝试在商店页面或类别存档中或每当显示此特定产品循环项目时向特定产品显示带有“独家”文本的徽章。
但是我尝试在_shop_loop_item之前添加_action,但问题是$product
变量不包含该对象。我正在考虑 $product->get_id()
,如果它与产品 id 匹配,则将一些 HTML 应用于该特定产品循环项目。
add_action('woocommerce_before_shop_loop_item', 'add_custom_badge', 1); function add_custom_badge( $product ) { if ( $product->get_id() === 123 ) { echo '<script>console.log("add_custom_badge")</script>'; } }
顺便说一句,get_id()
无法执行,因为 $product
看起来是空的。这就是我堆叠的地方。
是的,我想要打印 HTML 的位置是 woocommerce_before_shop_loop_item
- 就在销售徽章之前。
关于如何过滤循环项有什么建议吗?
P粉7181655402024-02-18 11:58:24
默认情况下,
$product
不会传递到 woocommerce_before_shop_loop_item
挂钩处的回调函数。这就是为什么它不起作用
改用global $product
所以你得到:
function action_woocommerce_before_shop_loop_item() { global $product; // Is a WC product if ( is_a( $product, 'WC_Product' ) ) { if ( $product->get_id() == 123 ) { echo 'sssccc'; } } } add_action( 'woocommerce_before_shop_loop_item', 'action_woocommerce_before_shop_loop_item', 10 );