2014-10-08 172 views
2

我需要隱藏航運標籤我woocommerce購物車頁面上,但保持可見結帳頁面上。隱藏貨運標籤woocommerce

我已閱讀,我可以使用is_cart()爲目標的車特別,但它並沒有與我已經寫在functions.php中的任何代碼工作。

有誰知道如何做到這一點?

CNC中

我發現下面的代碼放到functions.php中:

add_filter('woocommerce_cart_shipping_method_full_label', 'remove_shipping_label', 10, 2); 

function remove_shipping_label($label, $method) { 
    $new_label = preg_replace('/^.+:/', '', $label); 
    return $new_label; 
} 

現在我需要的代碼相結合「如果(is_cart())」爲目標的購物車頁面,但我還沒有想出如何。

+0

你好,所以你需要用戶選擇結帳頁面的送貨方式?但隱藏在購物車頁面? – Mauro 2014-10-08 17:32:20

+0

是的,這是正確的。我需要用戶在結帳頁面選擇送貨方式。但在購物車頁面上隱藏運輸標籤(運輸方式的名稱)。 – Skurt 2014-10-08 21:02:45

回答

1

的購物車頁面是由插件文件夾中的模板裝:

woocommerce/templates/cart/cart-shipping.php 

要你需要這個文件拷貝到您的主題在overridethis模板:

/your_theme_folder/woocommerce/cart/cart-shipping.php 

現在你可以做任何事與它(甚至保持空),它只會影響購物車頁面。結帳頁面使用不同的模板文件來生成發貨字段。

來源:經驗+ template overriding

+0

謝謝你的回答Yavor。 我發現,以下顯示運輸標籤和運輸成本,但是當我刪除該行時,它將刪除購物車和結帳的標籤和成本。我需要的是隻刪除購物車上的標籤。 – Skurt 2014-10-09 10:42:35

+0

試試這個:<?php if(is_page('checkout'))echo wp_kses_post(wc_cart_totals_shipping_method_label($ method)); ?> – Yavor 2014-10-09 16:02:04

+0

給模板覆蓋位+1(已經搜索了一段時間),但是最後一行關於'is_page('checkout');'沒有工作.... – 2015-02-10 16:35:52

0

這是我得到了什麼工作,那是編輯woocommerce送貨細節模板。老問題,我知道,我的回答是不是100%相關的問題,但搜索沒有幫我解決這個問題太多,所以我想我會幫助任何人還在尋找......

在該行$pos=strpos($wherefrom,"checkout");checkout必須是結帳頁面的名稱(slug)。讓您選擇付款方式的部分由ajax加載,所以所有的'is_page','is_checkout'等都返回空白,所以我使用了http_referrer。這是「小」問題導致太多時間的結果。此代碼按照Yavour的回答中所述放入cart-shipping.php文件,並且必須替換現有的<ul></ul>之間的現有代碼。

 <ul id="shipping_method"> 
      <?php 
      $wherefrom=wp_get_referer(); 
      $pos=strpos($wherefrom,"checkout"); 
      if ($pos!==false) 
      { 
       echo "<li>"; 
       foreach ($available_methods as $method) 
       { 
        if ($method->id==$chosen_method) 
        { 
         $mymethod=wp_kses_post(wc_cart_totals_shipping_method_label($method)); 
        } 
       } 
       echo $mymethod; 
       echo "</li>"; 
      } 
      else 
      { 
      ?> 
       <?php foreach ($available_methods as $method) : ?> 
       <li> 
        <input type="radio" name="shipping_method[<?php echo $index; ?>]" data-index="<?php echo $index; ?>" id="shipping_method_<?php echo $index; ?>_<?php echo sanitize_title($method->id); ?>" value="<?php echo esc_attr($method->id); ?>" <?php checked($method->id, $chosen_method); ?> class="shipping_method" /> 
        <label for="shipping_method_<?php echo $index; ?>_<?php echo sanitize_title($method->id); ?>"><?php echo wp_kses_post(wc_cart_totals_shipping_method_label($method)); ?></label> 
       </li> 
       <?php endforeach; ?> 
      <?php 
      } 
      ?> 

     </ul> 
0
function disable_shipping_calc_on_cart($show_shipping) { 
    if(is_cart()) { 
     return false; 
    } 
    return $show_shipping; 
} 
add_filter('woocommerce_cart_ready_to_calc_shipping','disable_shipping_calc_on_cart', 99); 
+1

請爲你的原因添加一些解釋答案解決了OP的問題。 – Tom 2017-02-07 12:47:39