簡體   English   中英

在woocommerce訂單確認頁面隱藏發貨方式

[英]Hide shipping method in the woocommerce order confirmation page

我需要根據是否使用折扣代碼來隱藏送貨方式。 但是我沒有找到如何在訂單確認頁面中隱藏送貨方式。 我看到了那個答案,但它什么也沒做,我試過這段代碼來驗證:

add_filter( 'woocommerce_package_rates', 'custom_shipping_rates', 100, 2 );
function custom_shipping_rates( $rates, $package ) {
    exit();
}

哪個應該阻止頁面顯示但頁面加載良好。

編輯:永遠不會調用過濾器,因為 wordpress 使用 class-wc-shipping.php 中的存儲費率:

if ( ! is_array( $stored_rates ) || $package_hash !== $stored_rates['package_hash'] || 'yes' === get_option( 'woocommerce_shipping_debug_mode', 'no' ) ) 
{
            
...
            // Filter the calculated rates.
            $package['rates'] = apply_filters( 'woocommerce_package_rates', 
           $package['rates'], $package );
...
} 
else
{
            $package['rates'] = $stored_rates['rates'];
}

除非您有舊的 wc 版本,否則該代碼實際上應該可以工作。 您可以通過在 /plugins/woocommerce 代碼庫中搜索來驗證該掛鈎是否存在。 如果找不到,則說明更新有問題。

如果您找到它並且您的代碼仍然無法正常工作,那么唯一的其他原因是您將代碼片段放在一個永遠不會被解雇的地方,或者您來得太晚了。

您能否添加放置該代碼的位置和方式,以便我們可以更好地了解發生了什么?

編輯:

如果你看上面你復制的片段,你會看到:

// Get rates stored in the WC session data for this package.
$wc_session_key = 'shipping_for_package_' . $package_key ;
$stored_rates   = WC()->session->get( $wc_session_key );

這讓我認為這是與會話相關的事情。 因此,為了全面測試,您需要使用其他瀏覽器打開網站,清空瀏覽器緩存 + cookie 或使用匿名瀏覽器 session

有一個禁用緩存使用的技巧,我將其限制為“更新訂單審查”操作:

if (preg_match('#update_order_review#i',$_SERVER['REQUEST_URI']))
{
    add_filter('transient_shipping-transient-version', function($value, $name) 
    { 
        return false; 
    }, 10, 2);
}

add_filter( 'woocommerce_package_rates', 'custom_shipping_rates', 100, 2 );
function custom_shipping_rates( $rates, $package )
{
    //get coupons
    $reduc=WC()->cart->get_coupons();
    $hidemr=isset($reduc['thediscountcode']);

    if ($hidemr)
    {
        foreach($rates as $k=>$v)
        {
            if (preg_match('#MethodLabelToHide#i',$v->get_label()))
                unset($rates[$k]);
        }
    }
    
    return $rates;
}

暫無
暫無

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

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