我需要在我的woocommerce购物车页面上隐藏标签,但要在结帐页面上显示。
我已经读过,我可以使用is_cart()专门定位购物车,但它没有使用我在functions.php中编写的任何代码。
有谁知道如何做到这一点?
-edit -
我找到了以下代码来放入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())”结合起来专门定位购物车页面,但我还没弄清楚如何。
答案 0 :(得分:1)
购物车页面由插件文件夹中的模板加载:
woocommerce/templates/cart/cart-shipping.php
要覆盖此模板,您需要在主题中复制该文件:
/your_theme_folder/woocommerce/cart/cart-shipping.php
现在你可以用它做任何事情(甚至把它留空),它只会影响购物车页面。结帐页面使用不同的模板文件来生成送货字段。
来源:经验+ template overriding
答案 1 :(得分:0)
这就是我的工作,即编辑woocommerce运输细节模板。老问题我知道,我的回答与这个问题没有100%的关系,但是搜索对我这个问题没有多大帮助,所以我想我会帮助任何人继续寻找......
在$pos=strpos($wherefrom,"checkout");
行中,checkout
必须是结帐页面的名称(slug)。允许您选择付款方式的部分由ajax加载,因此所有&#39; is_page&#39; is_checkout&#39;等返回空白,因此我使用了http_referrer 。这是因为一个小小的&#39;问题。此代码位于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>
答案 2 :(得分: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 );
答案 3 :(得分:0)
在结帐页面上隐藏运输标签并仅显示运费在下面的代码下方。
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;
}