在结帐页面上更改送货方式时会触发哪种方法或操作挂钩?
Which method or action hook is fired when changing shipping method on checkout page?
我需要将地址字段更改为 'required',此时用户将 select 不同于 "local pickup" 的送货方式。
我设法使用过滤器将其默认设置为可选(本地取件默认为 selected),如下所示:
add_filter( 'woocommerce_checkout_fields', 'disable_required_address_shipping' );
function disable_required_address_shipping($fields ) {
if ( check_if_local_pickup() ) {
$fields['billing']['billing_address_1']['required'] = false;
$fields['billing']['billing_address_2']['required'] = false;
$fields['billing']['billing_city']['required'] = false;
}
return $fields;
}
function check_if_local_pickup() {
$chosen_methods = WC()->session->get( 'chosen_shipping_methods' );
$chosen_shipping = $chosen_methods[0];
if ($chosen_shipping == 'local_pickup') {
return true;
}
}
但我需要使用一个动作来动态改变它。
我试图在这里寻找解决方案,但找不到。
更改送货方式时是否会触发任何操作?
有什么想法吗?
要在运输方式更改时触发操作,您可以使用 do_action( 'woocommerce_shipping_method_chosen', $chosen_method );
:
do_action( 'woocommerce_shipping_method_chosen', 'check_if_local_pickup', 10, 1 );
function check_if_local_pickup( $chosen_method ) {
$chosen_methods = WC()->session->get( 'chosen_shipping_methods' );
$chosen_shipping = $chosen_methods[0];
if ($chosen_shipping == 'local_pickup') {
return true;
}
}
参考文献:
woocommerce_shipping_method_chosen (hookr.io)
Source code: class WC_Shipping (line 311)
我需要将地址字段更改为 'required',此时用户将 select 不同于 "local pickup" 的送货方式。
我设法使用过滤器将其默认设置为可选(本地取件默认为 selected),如下所示:
add_filter( 'woocommerce_checkout_fields', 'disable_required_address_shipping' );
function disable_required_address_shipping($fields ) {
if ( check_if_local_pickup() ) {
$fields['billing']['billing_address_1']['required'] = false;
$fields['billing']['billing_address_2']['required'] = false;
$fields['billing']['billing_city']['required'] = false;
}
return $fields;
}
function check_if_local_pickup() {
$chosen_methods = WC()->session->get( 'chosen_shipping_methods' );
$chosen_shipping = $chosen_methods[0];
if ($chosen_shipping == 'local_pickup') {
return true;
}
}
但我需要使用一个动作来动态改变它。
我试图在这里寻找解决方案,但找不到。
更改送货方式时是否会触发任何操作?
有什么想法吗?
要在运输方式更改时触发操作,您可以使用 do_action( 'woocommerce_shipping_method_chosen', $chosen_method );
:
do_action( 'woocommerce_shipping_method_chosen', 'check_if_local_pickup', 10, 1 );
function check_if_local_pickup( $chosen_method ) {
$chosen_methods = WC()->session->get( 'chosen_shipping_methods' );
$chosen_shipping = $chosen_methods[0];
if ($chosen_shipping == 'local_pickup') {
return true;
}
}
参考文献:
woocommerce_shipping_method_chosen (hookr.io)
Source code: class WC_Shipping (line 311)