搜尋

首頁  >  問答  >  主體

為 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粉087074897286 天前371

全部回覆(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
  • 取消回覆