Вы и не замечаете, как часто вам встречается AJAX функционал в сайтах. Тем не менее, он всюду: в различных опросниках, рейтингах и, конечно, в комментировании статей.
Нет особой нужды перегружать веб-страницу в таких случаях, поэтому в этой статье мы разберем, как сделать так, чтобы можно было оставлять комментарии в вашем WordPress блоге без перезагрузки страницы.
Примечание: В статье представлена только серверная часть скрипта, без клиентской составляющей.
PHP
Добавьте следующую функцию в файл function.php вашей темы:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 |
// Метод для обработки комментариев function ajaxComment($comment_ID, $comment_status) { // Если коммент отправлен с помощью AJAX if(isset($_SERVER['HTTP_X_REQUESTED_WITH']) && strtolower($_SERVER['HTTP_X_REQUESTED_WITH']) == 'xmlhttprequest'){ // Получаем данные $comment = get_comment($comment_ID); // email автора wp_notify_postauthor($comment_ID, $comment->comment_type); $commentContent = getCommentHTML($comment); die($commentContent); } } |
Функция получает новый ID
комментария (комментарий уже в базе) и comment_status
, если вам нужна такая информация. Если комментарий был отправлен с помощью AJAX, то забираются метаданные комментария, вызывается wp_notify_postauthor
, для отправки уведомления на e-mail автора этого комментария, и последним шагом возвращается форматированный HTML ответ с помощью функции formatComment
. Последним шагом для того, чтобы все заработало, будет добавление действия add_action
для вызова этой функции:
1 2 |
// Отправляем все комментарии через метод "ajaxComment" add_action('comment_post', 'ajaxComment', 20, 2); |
Теперь все новые AJAX комментарии будут проходить через метод ajaxComment
, выдавая определенный HTML код, позволяя вставлять содержимое комментария в соответствующие OL/UL элементы на стороне клиента.
Кто бы мог подумать, что AJAX функционал прикручивается так просто!
ремонт телефонов Samsung в Подольске
Спасибо
Что-то не получилось сделать ((( А вторую часть кода куда нужно вставлять? Сразу после первой или внутрь её? Если можно — объясните...
После первой.
на 3.5 не работает...
Дело в том, что в статье представлена только серверная часть. Клиентскую часть вы можете взять на сайтеmakeuseof.com
Или наwebdeveloperplus.com
Там даже исходники скачать можно.