Получить ошибки из WP_Error для разных переменных

Я добавил несколько ошибок в WP_ERROR. Я хочу получить эти ошибки отдельно в разных переменных. Со следующим кодом я могу получить все ошибки с циклом foreach, но как я могу назначить их отдельным переменным.

Ошибки, которые я добавил, – « login_error » и « email_error ».

<?php $return = my_custom_function(); if ( is_wp_error($return) ){ foreach ( $return -> get_error_messages() as $error ) { echo $error; } } ?> 

Я попытался добавить это в следующий цикл:

 $login_error = apply_filters('login_error', $error); $email_error = apply_filters('email_error', $error); 

Но он присваивает одинаковые ошибки обеим переменным.

Редактировать:

Когда форма отправляется, и в любом поле есть ошибка, я добавляю ошибки следующим образом:

 $errors -> add( 'login_error', __( 'Please type your username' ) ); $errors -> add( 'email_error', __( 'Please type your e-mail address.' ) ); if ( $errors->get_error_code() ){ return $errors; } 

После этого я хочу отобразить вышеуказанные ошибки рядом с каждым из полей формы, это то, что я хочу получить ошибки отдельно.

Solutions Collecting From Web of "Получить ошибки из WP_Error для разных переменных"

Перемещение данных ошибки в независимую переменную является пустой тратой усилий. У вас уже есть данные, которые вам нужны в объекте WP_Error и вы можете получить с ним чистый синтаксис объекта и массива PHP, если хотите, но давайте посмотрим на методы, которые объект предоставляет для извлечения данных (с записками, скопированными из Codex):

 $errors = new WP_Error; $errors -> add( 'login_error', __( 'Please type your username' ) ); $errors -> add( 'email_error', __( 'Please type your e-mail address.' ) ); var_dump($errors->get_error_codes()); // Retrieve all error codes. Access public, returns array List of error codes, if available. var_dump($errors->get_error_code()); // Retrieve first error code available. Access public, returns string, int or Empty if there is no error codes var_dump($errors->get_error_messages('login_error')); // Retrieve all error messages or error messages matching code. Access public, returns an array of error strings on success, or empty array on failure (if using code parameter) var_dump($errors->get_error_message('login_error')); // Get single error message. This will get the first message available for the code. If no code is given then the first code available will be used. Returns an error string. var_dump($errors->get_error_data('login_error')); // Retrieve error data for error code. Returns mixed or null, if no errors. 

Если вы посмотрите на этот вывод, вы должны сразу заметить несколько вариантов:

 array(2) { [0]=> string(11) "login_error" [1]=> string(11) "email_error" } string(11) "login_error" array(1) { [0]=> string(25) "Please type your username" } string(25) "Please type your username" NULL 

Например, в вашей форме рядом с полем имени пользователя …

 // username field echo implode(', ',$errors->get_error_messages('login_error')); // empty string if no error; aka prints nothing if no error 

Я не уверен, как выглядит ваша полная реализация. Вы почти наверняка нуждаетесь в чем-то более сложном, но это идея.