付款前从结帐页面更新用户元数据
Update user meta from checkout page before payment
你能帮我吗 - 我在结帐页面上用 billing/shipping 按钮分隔了地址表。我想通过 AJAX 单击下一步按钮将地址保存在数据库中。现在,当我更改表单地址中的数据时,我在 POST 中拥有 return 的权利,但数据未在用户配置文件中更新。
function.php
add_action("wp_ajax_userAddressUpdate", "userAddressUpdate");
add_action("wp_ajax_nopriv_userAddressUpdate", "my_must_login");
function userAddressUpdate($user_id) {
if (isset($_POST['billing_first_name'])) {
update_user_meta($user_id, 'billing_first_name', sanitize_text_field(($_POST['billing_first_name'])));
}
if (isset($_POST['billing_last_name'])) {
update_user_meta($user_id, 'billing_last_name', sanitize_text_field(($_POST['billing_last_name'])));
}
}
file.js
jQuery(document).ready( function($) {
$( '#update_address' ).click(function(){
const billing_first_name = $("input[name=billing_first_name]").length ? $("input[name=billing_first_name]").val() : '';
const billing_last_name = $("input[name=billing_last_name]").length ? $("input[name=billing_last_name]").val() : '';
$.ajax({
url : ajax_object.ajaxurl,
type: 'POST',
data : {
action: "userAddressUpdate",
billing_first_name,
billing_last_name,
},
success: function( data ) {
alert( data.message );
}
});
})
})
首先,请只使用小写的动作名称
“更新地址”->“更新地址”
其次,您尝试警告“消息”,但从未从 php 函数中 returning 数据。
success: function( data ) {
alert( data.message );
}
第三,将 return 数据添加到您的 php 函数中,例如:
wp_send_json_success(["message" => "done"]);
请确保您的 ajax 调用从代码 200 得到 wordpress 的响应,以防您得到 40x,您的 php 代码可能永远不会 运行。
在php函数中添加$user_id = get_current_user_id()
你能帮我吗 - 我在结帐页面上用 billing/shipping 按钮分隔了地址表。我想通过 AJAX 单击下一步按钮将地址保存在数据库中。现在,当我更改表单地址中的数据时,我在 POST 中拥有 return 的权利,但数据未在用户配置文件中更新。
function.php
add_action("wp_ajax_userAddressUpdate", "userAddressUpdate");
add_action("wp_ajax_nopriv_userAddressUpdate", "my_must_login");
function userAddressUpdate($user_id) {
if (isset($_POST['billing_first_name'])) {
update_user_meta($user_id, 'billing_first_name', sanitize_text_field(($_POST['billing_first_name'])));
}
if (isset($_POST['billing_last_name'])) {
update_user_meta($user_id, 'billing_last_name', sanitize_text_field(($_POST['billing_last_name'])));
}
}
file.js
jQuery(document).ready( function($) {
$( '#update_address' ).click(function(){
const billing_first_name = $("input[name=billing_first_name]").length ? $("input[name=billing_first_name]").val() : '';
const billing_last_name = $("input[name=billing_last_name]").length ? $("input[name=billing_last_name]").val() : '';
$.ajax({
url : ajax_object.ajaxurl,
type: 'POST',
data : {
action: "userAddressUpdate",
billing_first_name,
billing_last_name,
},
success: function( data ) {
alert( data.message );
}
});
})
})
首先,请只使用小写的动作名称
“更新地址”->“更新地址”
其次,您尝试警告“消息”,但从未从 php 函数中 returning 数据。
success: function( data ) {
alert( data.message );
}
第三,将 return 数据添加到您的 php 函数中,例如:
wp_send_json_success(["message" => "done"]);
请确保您的 ajax 调用从代码 200 得到 wordpress 的响应,以防您得到 40x,您的 php 代码可能永远不会 运行。
在php函数中添加$user_id = get_current_user_id()