我尝试了这种方法:
add_action( \'woocommerce_review_order_before_payment\', array( $this, \'my_custom_checkout_field\') );
add_action(\'updated_checkout\',array( $this, \'my_custom_checkout_field\'));
public function my_custom_checkout_field(){
$chosen_methods = WC()->session->get( \'chosen_shipping_methods\' );
$chosen_shipping = $chosen_methods[0];
if($chosen_shipping == \'zasilkovna\'){
include_once(\'special-field.php\');
}
}
但是,当用户单击发货方式时,不会显示特殊字段。用户需要手动刷新页面,这不好。
我需要在ajax上挂接自己,并在单击正确的发货时显示字段。
我知道jqery正在发动行动,但不太确定如何抓住它。。。
最合适的回答,由SO网友:Alexander Holsgrove 整理而成
您需要在字段上设置更改事件:
$(\'select.shipping-field\').on(\'change\', function()) {
$.post(
ajaxurl,
{
action: \'shipping_special\',
data: \'your data here..\'
},
function(response){
// The response should contain your special field HTML
}
);
});
您可以传递当前发货选择选项
然后你的主题functions.php
如果发货是zasilkovna
add_action(\'wp_ajax_shipping_special\', \'shipping_special_field\' );
add_action(\'wp_ajax_nopriv_shipping_special\', \'shipping_special_field\' );
function shipping_special_field() {
// Return your special field HTML here
}
请参见
wp_ajax__requestaction, 这
tutorial 来自WPMUDev或此
SO answer;