我想删除“运送到其他地址?” WooCommerce 结帐页面上的复选框,但我遇到结帐计算问题。
场景如下:
remove_action
这样的 WooCommerce 挂钩删除复选框时,checkout.min.js
中的 JavaScript 逻辑会将复选框视为 未选中。目前,我已修改
checkout.min.js
文件以始终考虑 update_checkout_action
函数中的发货字段:
update_checkout_action: function (o) {
var r = e("#shipping_country").val(),
c = e("#shipping_state").val(),
i = e("#shipping_postcode").val(),
n = e("#shipping_city").val(),
a = e("#shipping_address_1").val(),
u = e("#shipping_address_2").val(),
d = r,
s = c,
m = i,
l = n,
p = a,
h = u;
var g = {
s_country: d,
s_state: s,
s_postcode: m,
s_city: l,
s_address: p,
s_address_2: h,
// other data...
};
// ajax call...
}
此修改按预期工作。但是,我想避免修改核心 checkout.min.js 文件。
一种挂钩 WooCommerce 以从 DOM 中删除复选框 (#ship-to- different-address) 的方法。 确保 WooCommerce 计算仍然使用送货地址,即使该复选框已删除。 避免修改核心 WooCommerce 文件。 有没有办法使用钩子、自定义 JavaScript 或其他干净的方法来实现此目的?
这里不需要 JavaScript。你需要 3 样东西:
第一件事,默认选中该复选框:
add_filter( 'woocommerce_ship_to_different_address_checked', '__return_true');
第二件事,使用 CSS 隐藏复选框:
add_action( 'wp_head', 'hide_ship_to_different_address_checkbox');
function hide_ship_to_different_address_checkbox(){
if( is_checkout() && ! is_wc_endpoint_url() ) : ?>
<style>#ship-to-different-address-checkbox {display:none !important;}</style><?php
endif;
}
第三件事,重命名“运送到不同的地址?”发送短信至“运送详细信息”:
add_filter('gettext', 'rename_checkout_ship_to_different_address', 20, 3);
function rename_checkout_ship_to_different_address( $translated_text, $untranslated_text, $domain ) {
if( is_checkout() && ! is_wc_endpoint_url()
&& $untranslated_text == 'Ship to a different address?' ) {
$translated_text = esc_html__('Shipping details', 'woocommerce');
}
return $translated_text;
}
代码位于子主题的functions.php 文件中(或插件中)。应该可以。