связать переменную с пользователем

есть ли простой способ сохранить переменную и связать ее с пользователем?

в частности, я хочу использовать мета-поле для вывода переменной на первой странице, а затем она будет ссылкой, поэтому, если пользователь нажмет на нее, она сохранит ее в div. Я могу делать все мета-файлы, просто нужно, чтобы переменная была сохранена при нажатии ссылки. вроде как любимая система, но более обычная. предполагая, что мне придется каким-то образом получить доступ к базе данных? даже не уверен, с чего начать.

Чтобы изложить ответ Криса, вызов AJAX будет выглядеть примерно так в файле functions.php:

add_action('wp_ajax_add_favorite', 'add_favorite'); function add_favorite(){ $post_id = $_POST['postID']; $nonce = $_POST['nonce']; if(!wp_verify_nonce($nonce, 'wpnonce')) exit; if($post_id): $favorites = get_user_meta(get_current_user_id(), 'favorites'); if(in_array($post_id, $favorites)): $response = 'Already in favorites.'; $success = false; else: if(add_user_meta(get_current_user_id(), 'favorites', $post_id, false)): $response = "This post was added to your favorites"; $success = true; endif; endif; else: $success = false; $response = "No post ID was supplied"; endif; $output = json_encode(array('success'=>$success, 'response'=>$response)); echo $output; exit; } 

Запрос JQuery AJAX будет выглядеть так:

 jQuery('.add-to-favorites').click(function(){ var data = { action: 'add_favorite', nonce: jQuery('#_wpnonce').val(), postID: jQuery(this).attr('rel') }; jQuery.post(ajaxurl, data, function(output) { var obj = jQuery.parseJSON(output); if(!obj.response) alert('Something went wrong with the server.'); if(obj.success){ //Do Something Here alert(obj.response); } else{ alert(obj.response); } }); //Disable Click Through return false; }); 

Ваша ссылка на front-end будет выглядеть так:

 <a class="add-to-favorites' rel="<?php echo $post->ID;?>" href="#">Add To Favorites</a> 

Добавьте скрытое поле nonce к вызываемому wpnonce, и это должно работать только денди. Кроме того, убедитесь, что вы определяете ajaxurl на интерфейсе, поэтому скрипт знает, куда отправить запрос.

Вам нужно будет сделать некоторое обратное проектирование в другой функции AJAX PHP, чтобы удалить из избранного. Надеюсь, что это помогает вам.

Вы можете использовать update_user_meta для хранения данных и get_user_meta для извлечения данных. Что касается фактического сохранения его при нажатии, вы можете использовать простой вызов ajax, когда пользователь нажимает на ссылку. Ознакомьтесь со следующими ресурсами для работы с AJAX в WordPress.

AJAX в WordPress AJAX в плагинах