ログインしたユーザーのみのモーダルを作成しました。ユーザーがclose
アイコンをクリックすると、特定のユーザーのユーザーメタフィールドを更新します。WP AJAXがupdate_user_meta(複数の値を持つ)を更新していません
私のモーダルのコードは次のようになります。私はuser_metaを更新するために必要な情報を格納data-id
属性を使用してい
function theme_notification_popup() {
$level = get_user_meta($user_id, 'author_level', true); ?>
<div id="my-id" class="uk-modal" data-uk-modal="{center:true}">
<div class="uk-modal-dialog">
<a class="uk-modal-close uk-close" data-id="<?php echo esc_attr($level[0]); ?>-notification-read"></a>
<h4>Title</h4></div>
...content...
</div>
</div>
<?php }
add_action ('wp_footer', 'theme_notification_popup');
。
AJAXは、これを処理する方法であるので、ここで私のAJAXコードは
jQuery('document').ready(function($) {
jQuery('#uk-modal').on('click', '.uk-modal-close', function(e) {
e.preventDefault();
var levelRead = $('.uk-modal-close').attr('data-id');
$.ajax({
url : ajax_url,
type: 'POST',
data: {
action : 'km_ajax',
'data-id': levelRead,
}
})
.success(function(results) {
// console.log('User Meta Updated!');
console.log(levelRead);
})
.fail(function(data) {
console.log(data.responseText);
console.log('Request failed: ' + data.statusText);
});
return false;
});
});
だし、ここに必要なコールバックは、私はユーザーがクリックしたときにAJAXが成功したことがわかりコンソールで
add_action('wp_ajax_nopriv_km_ajax', 'km_ajax_callback');
add_action('wp_ajax_km_ajax', 'km_ajax_callback');
function km_ajax_callback() {
if(! empty($_POST['data-id'])) {
$user_id = get_current_user_id();
if (empty($user_id)) {
return false;
}
$level = get_user_meta($user_id, 'author_level', true);
$new_val = sanitize_text_field($_POST['data-id']);
update_user_meta($user_id, 'author_level', array($level[0], $new_val));
}
wp_die();
}
ですclose
ボタン。ただし、user_metaは更新されません。これは私のkm_ajax_callback()
機能に間違いがなければならないことを意味します。それとも別の場所?
誰でも私が間違っていることを教えてもらえますか?それとも私は行方不明ですか?
私もうまくいきません。 – kiarashi