我在functions.php中定义了一个方法,如下所示:
add_filter('woocommerce_get_price', 'return_custom_price', $product, 2);
function return_custom_price($price, $product) {
return 'something';
}
此外,使用以下代码创建了一个选择框:
add_action('woocommerce_before_order_notes',
'wps_add_select_checkout_field');
function wps_add_select_checkout_field( $checkout ) {
//echo '<h2>'.__('Select Price').'</h2>';
woocommerce_form_field( 'selectCountry', array(
'type' => 'select',
'class' => array( 'wps-drop' ),
'label' => __( 'Select Price' ),
'options' => array(
'AU' => __( 'AU', 'wps' ),
'NZ' => __( 'NZ', 'wps' ),
'OTHER' => __( 'IE', 'wps' ),
'UK' => __( 'GB', 'wps' )
)
),
$checkout->get_value( 'daypart' ));
}
我已将JS排队如下:
add_action( 'wp_enqueue_scripts', 'my_enqueueforAjax' );
function my_enqueueforAjax() {
wp_enqueue_script( 'custom_price', get_template_directory_uri() . '/js/selectCountry.js', array('jquery') );
wp_localize_script('custom_price', 'ajax_var', array(
'url' => admin_url('admin-ajax.php'),
'nonce' => wp_create_nonce('ajaxnonce')
));
}
add_action( 'wp_ajax_return_custom_price', 'return_custom_price' );
add_action( 'wp_ajax_nopriv_return_custom_price', 'return_custom_price' );
我在selectCountry.js文件中编写了以下Jquery代码:
var jExample = jQuery.noConflict();
jExample( document ).ready(function() {
jExample('#selectCountry').on('change', function() {
var value = jExample('#selectCountry').val();
jExample.ajax({
type: "post",
url: ajax_var.url,
data: "action=return_custom_price&nonce="+ajax_var.nonce+"&country="+value,
success: function(response){
// Do your stuff here once ajax response is returned
console.log(response);
}
});
});
});
当我更改selectbox值时,jquery函数不会调用。我该如何解决这个问题?有什么错吗?邀请您的建议。