Я создал страницу входа, интегрированную с fb login. Когда пользователь нажимает на кнопку забыть пароли, он перенаправляет на страницу с просьбой ввести ваше имя пользователя. При нажатии на кнопку «Отправить» генерируется сообщение об ошибке, в котором говорится, что вы вошли в систему с помощью команды fb, и, пожалуйста, измените пароль fb.
Чтобы достичь этого, я использовал add_filter «allow_password_reset hook». Но как бы то ни было записано, его выполнение выполняется перед загрузкой файла заголовка, и вывод отображается поверх файла заголовка. Я перепробовал все, что знаю, и все же проблема существует. Вот мой код:
function se_deny_password_reset() {
$allow = false;
showMessage("Error", true);
return $allow;
}
add_filter( 'allow_password_reset', 'se_deny_password_reset', 10, 2 );function showMessage($message, $errormsg = false)
{
echo '<p><strong>' . $message . '</strong></p></div>';
}
НОТА:
Ваш вопрос не дает четкого объяснения, ГДЕ вы хотите, чтобы показывалось сообщение, так что это просто шаблон, который вы можете использовать для отслеживания статуса вашего $allow
переменная, так что вы можете в свою очередь отображать сообщение так, как считаете нужным:
(Используйте этот код вместо тех функций, которые у вас уже есть)
class MyPasswordClass {
/**
* Track the state of $allow.
* Change if desired in a class function like so: $this->allow = TRUE;
*
* @var bool
*/
private $allow = FALSE;
/**
* Constructor.
* Set up the action / filter hooks.
*/
public function __construct() {
add_filter( 'allow_password_reset', array( $this, 'allow_password_reset' ), 10, 2 );
add_filter( 'retrieve_password_message', array( $this, 'password_message' ), 10, 4 );
}
/**
* Hooks into WP 'allow_password_reset' filter.
*
* @param bool $allow
* @param int $user_id
*
* @return bool
*/
public function allow_password_reset( $allow, $user_id ) {
// If desired, change permission. Example:
// $this->allow = TRUE;
return $this->allow;
}
/**
* Hooks into WP 'retrieve_password_message' filter.
* Message that displays when user attempts to reset password.
*
* @param string $message
* @param string $key
* @param string $user_login
* @param object $user_data
*
* @return string
*/
public function password_message( $message, $key, $user_login, $user_data ) {
$message = 'My custom error message.';
return $message;
}
}
// Instantiate the class so that the filters are set up / used
new MyPasswordClass();
Других решений пока нет …