如果购物车订单审核区域的运输方式区域是否显示,我想在结账页面上的总计上方添加一条消息。这是 #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>';
}
}
更新:
如果在 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 文件中(或插件中)。已测试并有效。