簡體   English   中英

WooCommerce 如何檢查產品是否有貨

[英]WooCommerce how to check if the product is in stock

我認為有一個非常簡單的解決方案:

在 WooCommerce 中,我想將我的交貨時間過濾器應用於單個產品,但前提是它有available/in stock 在檢查產品庫存時出現任何錯誤。

function filter_woocommerce_germanized_delivery_time_html( $str_replace, $html ) { 
    
    global $product;
if( $product->is_in_stock() ) {

        echo '<p class="wc-gzd-additional-info delivery-time-info">';
        echo $str_replace;
        echo '</p>'; 
    echo '<p class="wc-gzd-additional-info"><a href="https://xyz.at/info/lieferzeiten/" target="_blank"><i class="fas fa-shipping-fast"></i> EU-Lieferzeiten</a></p></span>';
    
}
    
}   
         
// add the filter 
add_filter( 'woocommerce_germanized_delivery_time_html', 'filter_woocommerce_germanized_delivery_time_html', 10, 2 );

我也試過:

if($product->get_stock_quantity()>0) 

但類似的錯誤如:

“未捕獲的錯誤:在 null 上調用成員函數 is_in_stock() ..”

謝謝您的幫助!

問候, 菲利克斯

該錯誤告訴您您在null值上使用了您的函數,這意味着它找不到$product變量。

不確定這個woocommerce_germanized_delivery_time_html過濾器鈎子來自哪里以及您在哪里使用global $product ,但您可以使用以下代碼段來獲取產品。

global $post;
$product = wc_get_product($post->ID);

現在你的整個代碼將是這樣的:

add_filter( 'woocommerce_germanized_delivery_time_html', 'filter_woocommerce_germanized_delivery_time_html', 10, 2 );

function filter_woocommerce_germanized_delivery_time_html($str_replace, $html)
{

    global $post;

    $product = wc_get_product($post->ID);

    if ($product->is_in_stock()) {

        echo '<p class="wc-gzd-additional-info delivery-time-info">';
        echo $str_replace;
        echo '</p>';
        echo '<p class="wc-gzd-additional-info">';
        echo '<a href="https://xyz.at/info/lieferzeiten/" target="_blank"><i class="fas fa-shipping-fast"></i> EU-Lieferzeiten</a>';
        echo '</p>';
    } else{
       return $str_replace;
    }

}

或者您可以像這樣獲得庫存數量:

add_filter( 'woocommerce_germanized_delivery_time_html', 'filter_woocommerce_germanized_delivery_time_html', 10, 2 );

function filter_woocommerce_germanized_delivery_time_html($str_replace, $html)
{

    global $post;

    $stock_quantity = get_post_meta($post->ID, '_stock', true);

    if ($stock_quantity > 0) {

        echo '<p class="wc-gzd-additional-info delivery-time-info">';
        echo $str_replace;
        echo '</p>';
        echo '<p class="wc-gzd-additional-info">';
        echo '<a href="https://xyz.at/info/lieferzeiten/" target="_blank"><i class="fas fa-shipping-fast"></i> EU-Lieferzeiten</a>';
        echo '</p>';
    } else {
       return $str_replace;
    }

}

讓我知道你是否可以讓它工作!

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM