我正在尝试在商店页面或类别存档中或每当显示此特定产品循环项目时向特定产品显示带有“独家”文本的徽章。
但是我尝试在_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 - 就在销售徽章之前。
关于如何过滤循环项有什么建议吗?
Copyright 2014-2025 https://www.php.cn/ All Rights Reserved | php.cn | 湘ICP备2023035733号
默认情况下,
$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 ''; } } } add_action( 'woocommerce_before_shop_loop_item', 'action_woocommerce_before_shop_loop_item', 10 );