У меня есть комментарии на разных типах страниц в WordPress (архив, тег, поиск, главная страница), и после того, как пользователь отправляет комментарий, я бы хотел, чтобы они были перенаправлены обратно на их ссылочную страницу, а не на одну страницу публикации. Есть идеи?
Поместите это в свои functions.php :
add_filter('comment_post_redirect', 'redirect_after_comment'); function redirect_after_comment($location) { return $_SERVER["HTTP_REFERER"]; }
Используйте API-интерфейс WordPress. Это правильный способ расширения или настройки функций в WordPress. После того, как вы немного ознакомились с API, ознакомьтесь с ссылкой на Action ( я бы опубликовал ссылку, но StackOverflow не позволит мне ).
Для выполнения вашей задачи вам понадобится как минимум два крюка для действий:
В принципе, мы хотим захватить переменную HTTP_REFERER в постоянной $ _SESSION всякий раз, когда пользователь сначала видит форму комментария. Затем мы перенаправляем их после публикации комментария.
Создайте comment-redirect.php
в папке wp-content/plugins
WordPress.
Вот приблизительное представление о том, что вы поместили бы в этот файл (я оставлю его для уточнения / проверки):
<?php /* Plugin Name: Post Comment Redirect Plugin URI: http://example.com Description: Redirects you to the previous page after posing a comment Version: 0.1a Author: Anonymous Author URI: http://example.com License: GPL2 */ // Run whenever a comment is posted to the database. // If a previous page url is set, then it is unset and // the user is redirected. function post_comment_redirect_action_comment_post() { if (isset($_SESSION['PCR_PREVIOUS_PAGE_URL'])) { $ref = $_SESSION['PCR_PREVIOUS_PAGE_URL']; unset($_SESSION['PCR_PREVIOUS_PAGE_URL']); header('Location: '.$ref); } } // Run whenever comment form is shown. // If a previous page url is not set, then it is set. function post_comment_redirect_action_comment_form() { if (!isset($_SESSION['PCR_PREVIOUS_PAGE_URL'])) { if ($ref = $_SERVER['HTTP_REFERER']) { $_SESSION['PCR_PREVIOUS_PAGE_URL'] = $ref; } } } add_action('comment_post', 'post_comment_redirect_action_comment_post'); add_action('comment_form', 'post_comment_redirect_action_comment_form');
с<?php /* Plugin Name: Post Comment Redirect Plugin URI: http://example.com Description: Redirects you to the previous page after posing a comment Version: 0.1a Author: Anonymous Author URI: http://example.com License: GPL2 */ // Run whenever a comment is posted to the database. // If a previous page url is set, then it is unset and // the user is redirected. function post_comment_redirect_action_comment_post() { if (isset($_SESSION['PCR_PREVIOUS_PAGE_URL'])) { $ref = $_SESSION['PCR_PREVIOUS_PAGE_URL']; unset($_SESSION['PCR_PREVIOUS_PAGE_URL']); header('Location: '.$ref); } } // Run whenever comment form is shown. // If a previous page url is not set, then it is set. function post_comment_redirect_action_comment_form() { if (!isset($_SESSION['PCR_PREVIOUS_PAGE_URL'])) { if ($ref = $_SERVER['HTTP_REFERER']) { $_SESSION['PCR_PREVIOUS_PAGE_URL'] = $ref; } } } add_action('comment_post', 'post_comment_redirect_action_comment_post'); add_action('comment_form', 'post_comment_redirect_action_comment_form');
После того как вы сохранили свой плагин, включите его в разделе «Плагины wp-admin» (обычно находится около h ** p: //your-website-address.com/wp-admin).
$ref = $_SERVER["HTTP_REFERER"]; header("Location: $ref");