web-dev-qa-db-fra.com

Comment valider le tableau de paramètres de registre

J'aimerais savoir comment effectuer une validation appropriée avec la fonction de rappel register_setting().

Voici un exemple de code avec lequel je souhaite travailler:

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

$this est un tableau d'objets.

Et voici le contenu de ma fonction wpPartValidate_settings();.

public function wpPartValidate_settings( $input ) {

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

}

Puisque $input est un tableau, comment puis-je effectuer une validation correcte sur chaque entrée de la fonction de validation?

J'aimerais par exemple effectuer une vérification strlen() sur un champ de texte:

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

Personnellement, je le ferais de la même manière, car il semble que ce soit le seul point où vous pouvez examiner les entrées de l'utilisateur et les valider.

En outre, nous avons beaucoup emprunté à l'exemple de code dans cet excellent article :

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

Ma partie préférée est l’appel apply_filters à la fin. Maintenant c'est la meilleure pratique!

1
montrealist