WordPress: как отобразить ошибки WP_Error () на другой странице? - PullRequest
1 голос
/ 02 ноября 2011

Как отобразить WP_Error() ошибки на другой странице?

В functions.php у меня есть обработчик форм со следующим кодом:

global $current_user, $errors; get_currentuserinfo();

$errors = new WP_Error();

if( isset( $_POST['user_email']) ) {
    if( !is_email( $_POST['user_email'] ) ) {
        $errors->add('invalid_email', __('<strong>ERROR</strong>: The email address isn&#8217;t correct.'));
    } elseif( email_exists( $_POST['user_email'] ) ) {
        $errors->add('email_exists', __('<strong>ERROR</strong>: This email is already registered, please choose another one.'));
    } elseif( $_POST['user_email'] <> $current_user->{user_email} ) {
        wp_update_user( array( 'ID' => $uid, 'user_email' => esc_attr( $_POST['user_email'] ) ) );
    }       
}
if($errors->get_error_code()) { return $errors; }

В account.php, который отображает форму, у меня есть следующий код:

<?php
    $return = update_account();
    if(is_wp_error($return)) { echo $return->get_error_message(); }
?>

Во время тестирования не сообщается ни об ошибках invalid_email, ни email_exist. Однако ошибки предотвращены. Я просто не понимаю, почему они не отображаются. Что я делаю не так?

Ответы [ 2 ]

0 голосов
/ 21 марта 2014

Вам необходимо указать глобальные ошибки $ на странице вашего аккаунта.

0 голосов
/ 02 ноября 2011

Так что просто для ясности, у вас есть account.php (обычный файл php), который при отправке ссылается на какой-то другой файл php, который выполняет update_account (), а затем возвращается в account.php, у вас есть код, приведенный выше?

Для решения этой проблемы было бы полезно больше кода, если он слишком большой?

Вы не можете обработать данные $ _POST в functions.php, не передавая данные в качестве параметрафункция, так как вы на самом деле не отправляете сообщения на functions.php.

У меня такое ощущение, что ваше сообщение об ошибке php отключено.Добавить в error_reporting (E_ALL);чтобы убедиться.

Если account.php не является шаблоном страницы, вам необходимо включить wp_blog_header.php (из корня вашей установки wp), чтобы WordPress действительно загружался и знал, что вы имеете в виду с помощьюпользовательские функции и wp_error и все.

РЕДАКТИРОВАТЬ: понял, что functions.php загружается в любом случае на каждой странице, извините.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...