Как перенаправить ссылку action=register на странице восстановления пароля на другую ссылку?

10 мар. 2012 г., 18:00:02
Просмотры: 13.5K
Голосов: 2

У меня есть специальная страница регистрации в WordPress, где новые пользователи заполняют регистрационную форму. Однако, если кто-то перейдет по ссылке "забыли пароль" в разделе входа на сайте, а затем нажмет "регистрация", он сможет зарегистрироваться на сайте, не проходя обычную форму регистрации. Как я могу перенаправить страницу wp-login.php?action=register на sample.com/register?

Заранее спасибо!

0
Все ответы на вопрос 1
2

Подключитесь к хуку 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' );
}

Как плагин.

10 мар. 2012 г. 19:54:35
Комментарии

Спасибо, Кристофер! Только один вопрос: как мне реализовать это в виде плагина? Я никогда раньше не создавал плагины для WordPress, но если у вас есть ссылка с инструкциями и т.д., я разбираюсь в коде и подобных вещах.

BentCircle BentCircle
10 мар. 2012 г. 20:32:43

Вам нужно просто скопировать и вставить код выше в один PHP-файл, добавить заголовок плагина (http://codex.wordpress.org/Writing_a_Plugin#File_Headers), поместить PHP-файл в директорию wp-content/plugins. Вот полный вариант в виде плагина: https://gist.github.com/2012290

chrisguitarguy chrisguitarguy
10 мар. 2012 г. 21:10:04