搜索

首页  >  问答  >  正文

为 WooCommerce 存档循环项目上的特定产品 ID 自定义徽章

我正在尝试在商店页面或类别存档中或每当显示此特定产品循环项目时向特定产品显示带有“独家”文本的徽章。

但是我尝试在_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粉087074897P粉087074897289 天前374

全部回复(1)我来回复

  • P粉718165540

    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 );
    

    回复
    0
  • 取消回复