【问题标题】:Hide shipping label woocommerce隐藏运输标签 woocommerce
【发布时间】:2014-10-08 13:48:36
【问题描述】:

我需要在我的 woocommerce 购物车页面上隐藏运输标签,但在结帐页面上保持可见。

我已经读到我可以使用 is_cart() 来专门定位购物车,但它不适用于我在 functions.php 中编写的任何代码。

有谁知道如何做到这一点?

-编辑-

我在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;
}

现在我需要将代码与“if (is_cart())”结合起来以专门针对购物车页面,但我还没有弄清楚如何。

【问题讨论】:

  • 您好,您需要用户在结帐页面选择送货方式吗?但隐藏在购物车页面中?
  • 是的,没错。我需要用户在结帐页面中选择送货方式。但在购物车页面中隐藏运输标签(运输方式的名称)。

标签: php wordpress woocommerce


【解决方案1】:

购物车页面由插件文件夹中的模板加载:

woocommerce/templates/cart/cart-shipping.php

要覆盖此模板,您需要将该文件复制到您的主题中:

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

现在您可以用它做任何事情(甚至将其留空),它只会影响购物车页面。结帐页面使用不同的模板文件来生成运输字段。

来源:经验+template overriding

【讨论】:

  • 感谢您的回答 Yavor。我发现以下 在 cart-shipping.php 中显示运输标签和运输成本,但是当我删除该行时,它会删除购物车和结账时的标签和成本。我需要的是只删除购物车上的标签。
  • 试试这个:
  • 为模板覆盖位(已经搜索了一段时间)给了一个 +1,但是你关于 is_page('checkout'); 的最后一行没有工作....
【解决方案2】:

这就是我要做的工作,即编辑 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>

【讨论】:

    【解决方案3】:

    在结帐页面上隐藏运费标签仅显示运费在代码下方。

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

    【讨论】:

      【解决方案4】:
      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 );
      

      【讨论】:

      • 请添加一些解释,说明您的答案为何解决了 OP 的问题。
      猜你喜欢
      • 1970-01-01
      • 2014-07-05
      • 1970-01-01
      • 2019-08-10
      • 1970-01-01
      • 2018-07-10
      • 2018-11-09
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多