【发布时间】:2018-02-08 13:32:15
【问题描述】:
我想在主页上弹出一个简单的模型,让用户在结帐/购物车页面之前选择他们的送货国家。
我制作了一个小的选择框弹出模型,然后使用 AJAX 运行此功能以更改用户发货国家/地区,但它没有更新。
// 本地化
//*********** Ajax Change shipping country on press ***********/
function localize_array() {
$localize = array(
'ajax_url' => admin_url( 'admin-ajax.php' ),
'nonce' => wp_create_nonce( 'yo-ajax-call-ak' ),
);
return $localize;
}
function ajax_change_shipping() {
wp_enqueue_script( 'ak-country-change', get_template_directory_uri() . '/inc/js/select-country.js', array( 'jquery', ), '1.0', true );
wp_localize_script( 'ak-country-change', 'akselect', localize_array() );
}
add_action( 'wp_enqueue_scripts', 'ajax_change_shipping' );
// ajax 调用
$(document).ready(function () {
$('body').on('change', '.yo-lang-select', function () {
var select = $(this);
var value = select.val();
$.ajax({
url: akselect.ajax_url,
method: 'POST',
dataType: 'json',
data: {
action: 'get_the_defualt_lang',
value: value
nonce: akselect.nonce
},
success: function (respond) {
console.log(respond);
},
error: function (jqXHR, textStatus, errorThrown) {
console.log(jqXHR, textStatus, errorThrown);
}
});
});
});
//这是函数
add_action( 'wp_ajax_get_the_defualt_lang', 'get_the_defualt_lang' );
add_action( 'wp_ajax_nopriv_get_the_defualt_lang','get_the_defualt_lang' );
function get_the_defualt_lang() {
$lang = $_POST['value'];
add_action( 'woocommerce_add_to_cart', 'set_country_befor_cart_page' );
function set_country_befor_cart_page() {
WC()->customer->set_country( $lang );
WC()->customer->set_shipping_country( $lang );
}
$respond = $lang;
echo json_encode( $respond );
die();
}
//弹出表单
<div data-effect="mfp-zoom-out" id="shop-pop_1" class="mfp-hide">
<select class="yo-lang-select" data-type="lang" title="">
<option value="US">United States</option>
<option value="GB">United Kingdom (UK)</option>
<option value="US">Other Countries</option>
</select>
// 使用钩子将 from 插入到商店页面
add_action( 'woocommerce_after_shop_loop', 'ak_store_popup' );
function ak_store_popup() {
get_template_part( 'template-parts/popups/popup', 'store-main' );
}
【问题讨论】:
-
我在结帐前添加了表单的代码和挂钩以在商店页面中获取它,希望对您有所帮助,感谢您的反馈
-
我现在添加了,谢谢
标签: php jquery ajax wordpress woocommerce