Ошибки проверки обновления блока

Я пытаюсь проверить, как пользователи формы при обновлении данных профиля. Я подключился к user_profile_update_errors. Он правильно печатает ошибки пользователю, однако он по-прежнему позволяет использовать ошибки в профиле пользователя. Отображаемые ошибки фактически не применяются.

Как я могу препятствовать сохранению записей из заданного профиля и блокировать их?

благодаря

function tml_profile_errors( $errors ) { if ( empty( $_POST['state'] ) ) $errors->add( 'empty_missing_', '<strong>ERROR</strong>: Please enter your state.' ); return $errors; } add_filter( 'user_profile_update_errors', 'tml_profile_errors' ); 

Solutions Collecting From Web of "Ошибки проверки обновления блока"

Решение:

Во-первых, Jeff Farthing из темы-my-login указал, что я использовал add_filter вместо add_action и помог создать первый код ниже, однако он все еще имеет ту же проблему, поэтому это шаг в правильном направлении, но не мое решение:

 function tml_profile_errors( &$errors ) { if ( empty( $_POST['state'] ) ) $errors->add( 'empty_missing_', '<strong>ERROR</strong>: Please enter your state.' ); } add_action( 'user_profile_update_errors', 'tml_profile_errors' ); 

Во-вторых, я добавил тот же шаг проверки внутри моих действий «personal_options_update» и «edit_user_profile_update», используя приведенный ниже код. Поскольку это выполняется во время шага сохранения, это предотвратит сохранение пользователем и недопустимое значение. Есть гораздо больше полей, чем просто «состояние» для формы, поэтому в приведенном ниже примере используется вложенный, а не оператор &&:

 function tml_edit_user_profile_update( $user_id ) { if ( current_user_can('edit_user',$user_id) ) { if ( !empty( $_POST['state'] ) ) update_user_meta( $user_id, 'state', $_POST['state'] ); } } add_action('personal_options_update', 'tml_edit_user_profile_update'); add_action('edit_user_profile_update', 'tml_edit_user_profile_update');