WooCommerce 如何检查结帐时是否显示送货方式?

问题描述 投票:0回答:1

如果购物车订单审核区域的运输方式区域是否显示,我想在结账页面上的总计上方添加一条消息。这是 #order_review 表中的表行,除非我认为至少有(针对美国)国家、州、城市和邮政编码的信息集,否则不会显示。

因此,如果账单中未输入地址,或者选中“运送到其他地址”,并且已输入运送地址。

查看 review-order.php 模板文件 W.C.使用: if ( WC()->cart->needs_shipping()){} 所以我尝试使用它作为条件,但它似乎总是返回 true:

add_action('woocommerce_review_order_before_order_total', 'rnr_needs_shipping');

function rnr_needs_shipping(){

   if( WC()->cart->needs_shipping() ){

   echo'<tr>My message</tr>';

   }

}
php wordpress woocommerce field checkout
1个回答
1
投票

更新:

如果在 WooCommerce 设置 > 送货 > 选项 > 送货目的地中,选择了“默认为客户帐单地址”,则客户可以使用帐单地址作为送货地址:在这种情况下,默认情况下未选中送货复选框,送货字段不显示显示,如果客户下订单,则将从账单值克隆运输字段值。这就是为什么标题是“运送到不同的地址?”

您可以强制以两种不同的方式显示运输字段:

  • 在 WooCommerce 设置 > 送货 > 选项 > 送货目的地中,选择“默认为客户送货地址”。
  • 通过添加
    add_filter( 'woocommerce_ship_to_different_address_checked', '__return_true' );

检查结账时是否选中运输复选框的唯一方法是:

add_action('woocommerce_review_order_before_order_total', 'checkout_needs_shipping_address');
function checkout_needs_shipping_address(){
   if( 'shipping' === get_option( 'woocommerce_ship_to_destination' ) ){
       echo'<tr>My message</tr>';
   }
}

注意: 如果在 WooCommerce 设置 > 运送 > 选项 > 运送目的地中,选择了 “强制运送到客户帐单地址”,则不会显示运送表格。


原答案。

以下代码将:

  • 始终显示结账发货字段,
  • 隐藏“运送到其他地址?”复选框,
  • 替换“运送到其他地址?”带有“运送详细信息”的文字。

通常显示的运输字段是必需的,因此如果客户没有填写所有必填的运输字段,则会显示错误通知,避免下订单。

代码:

// Show checkout shipping fields
add_filter( 'woocommerce_ship_to_different_address_checked', '__return_true' );

// Hide "Ship to a different address?" checkbox (inline CSS)
add_filter( 'wp_head', 'shipping_address_checkbox_ccs' );
function shipping_address_checkbox_ccs() {
    if( is_checkout() && ! is_wc_endpoint_url() ) {
        ?><style>#ship-to-different-address-checkbox{display:none;} 
        #ship-to-different-address label{cursor: default;}</style><?php
    }
}

// Change "Ship to a different address?" text
add_filter( 'gettext', function( $translated_text, $original_text, $domain ) {
    if( is_checkout() && 'Ship to a different address?' === $original_text ) {
        $translated_text = 'Shipping details';
    }
    return $translated_text;
}, 10, 3 );

代码位于子主题的functions.php 文件中(或插件中)。已测试并有效。

相关:如果 WooCommerce 购物车中有特定产品,则强制“运送到不同地址”

© www.soinside.com 2019 - 2024. All rights reserved.