Intereting Posts
Отдельные страницы для пользовательских типов сообщений Как удалить все экземпляры эскизов, отображаемых в моей теме? Страница пользовательского архива для пользовательского интерфейса CPT та же роль пользователя или копировать роль пользователя, чтобы быть такой же, как и другая роль Добавить пользовательскую настройку, которая использует радиокнопку в WP Gallery Внешние соединения wpdb в разных плагинах на одной странице Плагин галереи заставляет себя над текстом связать проблему с anker Использование параметров виджета «вне» виджета Удаление пробелов из сценариев для уменьшения времени загрузки страницы Как я могу ограничить доступ к виджетам только администраторам? Комплекс WP_Query (два типа сообщений и несколько операторов) Показать наиболее популярную запись за последние 12 месяцев add_image_size (), чтобы обрезать изображения на квадраты? изменять размер изображений без урожая

Обновление персонализированной мета-почты с помощью ajax

Эта функция AJAX вызывается нажатием кнопки:

$.ajax({ url: 'site/ajax.php', data: {id: $('section#single article input:last-of-type').attr('value'), cote: 'like'} }).done(function(html) {} 

Он передает идентификатор сообщения (который содержится в скрытом вводе) для функции get_post_meta (), которая находится в ajax.php. Вот что выглядит AJAX.php:

 $cote = get_post_meta($_GET['id'], 'cote', true); if($_GET['cote'] == 'like') { $newCote = $cote++; update_post_meta($_GET['id'], 'cote', $newCote); } else { $newCote = $cote--; update_post_meta($_GET['id'], 'cote', $newCote); } 

Предположительно обновить поле «cote» пользовательской почты, но проблема в том, что функция get_post_meta () не определена в ajax.php. Это сообщение об ошибке:

 Fatal error: Call to undefined function get_post_meta() in /home2/electro/public_html/beta... on line 2 

Solutions Collecting From Web of "Обновление персонализированной мета-почты с помощью ajax"

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

Вы завершаете обработку PHP, это функция:

 function my_ajax_cb_wpse_108143() { $cote = get_post_meta($_POST['id'], 'cote', true); if($_POST['cote'] == 'like') { $newCote = $cote++; update_post_meta($_POST['id'], 'cote', $newCote); } else { $newCote = $cote--; update_post_meta($_POST['id'], 'cote', $newCote); } } 

Закрепите это в системе AJAX:

 add_action('wp_ajax_my_update_pm', 'my_ajax_cb_wpse_108143'); add_action('wp_ajax_nopriv_my_update_pm', 'my_ajax_cb_wpse_108143'); 

Отправьте свой запрос на http://site/wp-admin/admin-ajax.php и передайте my_update_pm в качестве аргумента, когда Javascript делает запрос.

 var data = { action: 'my_update_pm', id: jQuery('section#single article input:last-of-type').attr('value'), cote: 'like' }; jQuery.post(ajax_url, data, function(response) { // whatever you need to do; maybe nothing }); 

Вы можете установить ajax_url аналогично этому из Codex:

 add_action( 'admin_enqueue_scripts', 'my_enqueue' ); function my_enqueue($hook) { if( 'index.php' != $hook ) return; // Only applies to dashboard panel wp_enqueue_script( 'ajax-script', plugins_url( '/js/my_query.js', __FILE__ ), array('jquery')); // in javascript, object properties are accessed as ajax_object.ajax_url, ajax_object.we_value wp_localize_script( 'ajax-script', 'ajax_object', array( 'ajax_url' => admin_url( 'admin-ajax.php' ), 'we_value' => $email_nonce ) ); }