Intereting Posts
Ограничить количество сообщений в петле wp Создайте несколько разделов для всех категорий, а затем запросите все сообщения для каждой из этих категорий Запланировать некоторые работы в пользовательском плагине Получите все в одном пакете SEO, чтобы использовать настраиваемое поле вместо содержимого Тема изменена по обновлениям Создание плагина для дезинфекции комментария и поля url перед отображением только Как получить постоянную ссылку для персонализированного сообщения в другом cpt? как использовать wp_redirect внутри функции Могу ли я добавить ссылку «показать все страницы» на страницы ссылок wp? Запустить скрипт проверки JavaScript на форме submit в плагине Как создать такое подменю в новой строке? Настройка чтения не работает для количества сообщений Проверьте, изменилось ли значение на save_post Плагин подсказки для ссылки на теги Предупреждать пользователя о том, что данные могут быть потеряны для пользовательских страниц

Обновление персонализированной мета-почты с помощью 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 

Если вы загружаете файл напрямую, ни одна из функций 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 ) ); }