Как перенаправить ссылку action=register на странице восстановления пароля на другую ссылку?
У меня есть специальная страница регистрации в WordPress, где новые пользователи заполняют регистрационную форму. Однако, если кто-то перейдет по ссылке "забыли пароль" в разделе входа на сайте, а затем нажмет "регистрация", он сможет зарегистрироваться на сайте, не проходя обычную форму регистрации. Как я могу перенаправить страницу wp-login.php?action=register на sample.com/register?
Заранее спасибо!
Подключитесь к хуку login_form_register и перенаправляйте пользователей на вашу страницу регистрации с помощью wp_redirect.
<?php
add_action( 'login_form_register', 'wpse45134_catch_register' );
/**
* Перенаправляет посетителей с `wp-login.php?action=register` на
* `site.com/register`
*/
function wpse45134_catch_register()
{
wp_redirect( home_url( '/register' ) );
exit(); // всегда вызывайте `exit()` после `wp_redirect`
}
Вы также можете скрыть ссылку "регистрация" на этой странице, перехватив опцию user_can_register на странице входа. Подключитесь к хукам login_form_lostpassword и login_form_retrievepassword, а затем добавьте фильтр для pre_option_users_can_register.
<?php
add_action( 'login_form_lostpassword', 'wpse45134_filter_option' );
add_action( 'login_form_retrievepassword', 'wpse45134_filter_option' );
/**
* Простая обёртка для вызова add_filter, чтобы убедиться, что мы
* фильтруем опцию только на странице входа.
*/
function wpse45134_filter_option()
{
// используем __return_zero, потому что pre_option_{$opt} проверяет
// на `false`
add_filter( 'pre_option_users_can_register', '__return_zero' );
}
Как плагин.
Спасибо, Кристофер! Только один вопрос: как мне реализовать это в виде плагина? Я никогда раньше не создавал плагины для WordPress, но если у вас есть ссылка с инструкциями и т.д., я разбираюсь в коде и подобных вещах.
BentCircle
Вам нужно просто скопировать и вставить код выше в один PHP-файл, добавить заголовок плагина (http://codex.wordpress.org/Writing_a_Plugin#File_Headers), поместить PHP-файл в директорию wp-content/plugins. Вот полный вариант в виде плагина: https://gist.github.com/2012290
chrisguitarguy