Wie validiere ich das Array der Registereinstellungen?

Ich würde gerne wissen, wie man eine korrekte validation mit der Callback-function register_setting() .

Hier ist ein Beispiel für meinen Code, mit dem ich arbeiten möchte:

 register_setting( 'wpPart_options', 'wpPart_options', array( &$this, 'wpPartValidate_settings' ) ); 

$this ist ein Array von Objekten.

Und hier ist der Inhalt meiner wpPartValidate_settings(); function.

 public function wpPartValidate_settings( $input ) { $options = get_option( 'wpPart_options' ); if ( check_admin_referer( 'wpPart_nonce_field', 'wpPart_nonce_verify_adm' ) ) { return $input; } } 

Da $input ein Array ist, wie kann ich eine korrekte validation für jede Eingabe durchführen, die zur validationsfunktion kommt?

Ich möchte zum Beispiel eine strlen() Prüfung auf ein Textfeld durchführen:

 if ( strlen( $input ) != 20 ) add_settings_error( 'wpPart_options', 'textField', __( 'TextField incomplete.', 'wpPart' ) , 'error' ); 

Solutions Collecting From Web of "Wie validiere ich das Array der Registereinstellungen?"

Persönlich würde ich es auf die gleiche Weise tun, da es der einzige Punkt zu sein scheint, an dem Sie Benutzereingaben untersuchen und validieren können.

Außerdem leihen Sie sich aus dem Codebeispiel in diesem exzellenten Artikel sehr viel:

 function wpPartValidate_settings( $input ) { if ( check_admin_referer( 'wpPart_nonce_field', 'wpPart_nonce_verify_adm' ) ) { // Create our array for storing the validated options $output = array(); foreach( $input as $key => $value ) { // Check to see if the current option has a value. If so, process it. if( isset( $input[$key] ) ) { // Strip all HTML and PHP tags and properly handle quoted strings $output[$key] = strip_tags( stripslashes( $input[ $key ] ) ); } // end if } // end foreach } // end if // Return the array processing any additional functions filtered by this action return apply_filters( 'wpPartValidate_settings', $output, $input ); } 

Mein Lieblingsteil ist der Anruf apply_filters am Ende. Nun, das ist Best Practice!