Blockiere Update-Profilerrors

Ich versuche, das Formular zu bestätigen, das Benutzer beim Aktualisieren ihrer Profildaten übermitteln. Ich habe mich in user_profile_update_errors eingeklinkt. Es druckt Fehler korrekt für den Benutzer, jedoch können die Fehler weiterhin auf das Benutzerprofil angewendet werden. Die angezeigten Fehler werden nicht tatsächlich erzwungen.

Wie kann ich verhindern, dass errorshafte Profileinträge gespeichert und stattdessen blockiert werden?

Vielen Dank

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

Solutions Collecting From Web of "Blockiere Update-Profilerrors"

Lösung:

Erstens, Jeff Farthing von theme-my-login wies darauf hin, dass ich add_filter anstelle von add_action benutzt habe und geholfen habe, den ersten Code unten zu erstellen, aber es hat immer noch das gleiche Problem, also ist dies ein Schritt in die richtige Richtung, ist es aber nicht meine Lösung:

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

Zweitens fügte ich denselben validationsschritt innerhalb meiner Aktionen ‘personal_options_update’ und ‘edit_user_profile_update’ mit dem folgenden Code hinzu. Da dies während des Speicherschritts ausgeführt wird, wird verhindert, dass der Benutzer einen ungültigen Wert speichert. Es gibt sehr viel mehr Felder als “state” für das Formular, weshalb das folgende Beispiel einen verschachtelten if-Operator anstelle eines &&-Operators verwendet:

 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');