Вопрос или проблема
Я использую плагин под названием “перенаправление на страницу входа для приватного контента”.
Плагин на самом деле содержит только этот фрагмент кода:
add_action('template_redirect', 'private_content_redirect_to_login', 9);
function private_content_redirect_to_login() {
global $wp_query,$wpdb;
if (is_404()) {
$private = $wpdb->get_row($wp_query->request);
$location = wp_login_url($_SERVER["REQUEST_URI"]);
if( 'private' == $private->post_status ) {
wp_safe_redirect($location);
exit;
}
}
}
Что он делает: когда незарегистрированный пользователь посещает приватную страницу, его перенаправляет на страницу входа. После входа в систему его возвращают обратно на приватную страницу, которую он только что посетил, и он может ее прочитать.
Я хотел бы, чтобы его перенаправляло на страницу входа, но после того как он вошел в систему, он должен быть перенаправлен на конкретную страницу (например, http://www.testsite.com/start), вместо приватной страницы, которую он посещал.
В вашем коде вам нужно изменить одну строку, чтобы перенаправить пользователя на конкретную страницу после входа.
Ваш код :
$location = wp_login_url($_SERVER[“REQUEST_URI”]);
Измените его на
$location = wp_login_url (т.е. http://www.testsite.com/start); // передайте URL страницы, на которую хотите перенаправить пользователя после входа
Надеюсь, это поможет вам.
Ответ или решение
Вам необходимо изменить функциональность вашего плагина «private content login redirect», чтобы пользователи перенаправлялись на конкретную страницу после входа в систему, а не на ту страницу, которую они пытались посетить перед входом. Это можно сделать, изменив один из участков кода, который отвечает за URL перенаправления на страницу входа.
Шаги по изменению кода:
-
Общий обзор функциональности:
Исходный код вашего плагина выполняет функцию перенаправления неавторизованных пользователей на страницу входа, если они пытаются получить доступ к закрытому (приватному) контенту. После завершения процесса аутентификации пользователи возвращаются на ту страницу, которую они изначально пытались посетить. -
Изменение URL перенаправления на страницу входа:
Чтобы изменить поведение таким образом, чтобы после входа пользователи перенаправлялись на конкретную страницу (например,http://www.testsite.com/start
), вам нужно изменить одну строку кода в функцииprivate_content_redirect_to_login
. Замените:$location = wp_login_url($_SERVER["REQUEST_URI"]);
на:
$location = wp_login_url('http://www.testsite.com/start');
-
Обновленный код:
Вот как должен выглядеть обновленный участок кода:add_action('template_redirect', 'private_content_redirect_to_login', 9); function private_content_redirect_to_login() { global $wp_query, $wpdb; if (is_404()) { $private = $wpdb->get_row($wp_query->request); $location = wp_login_url('http://www.testsite.com/start'); // Переход на конкретную страницу после входа if ('private' == $private->post_status) { wp_safe_redirect($location); exit; } } }
-
Тестирование:
После внесения изменений в код обязательно протестируйте функциональность, чтобы убедиться, что:- Неавторизованные пользователи действительно перенаправляются на страницу входа при попытке доступа к приватным страницам.
- После успешного входа их перенаправляет на
http://www.testsite.com/start
, а не на первоначальную страницу.
Причины и рекомендации:
- Удобство для пользователя: Перенаправление на заранее определённую страницу после входа в систему улучшит пользовательский опыт, позволяя пользователям сразу же увидеть контент, который более актуален или полезен для них.
- SEO-оптимизация: Обеспечьте корректную настройку мета-тегов на странице, на которую пользователь будет перенаправлен после входа. Это поможет вам улучшить видимость вашего сайта в поисковых системах.
С помощью этих шагов вы сможете успешно изменить поведение вашего плагина в соответствии с требованиями. Если у вас возникнут дополнительные вопросы или потребуются разъяснения, не стесняйтесь обращаться за помощью.