web-dev-qa-db-fra.com

Comment puis-je rendre les champs de commentaire wordpress requis?

Voici mon formulaire:

<form action="<?php echo get_option('siteurl'); ?>/wp-comments-post.php" method="post" id="commentform" class="validate">  
   <?php if($user_ID) : ?>  
   <?php else : ?>
   <div class="label_container">
      <div class="left">
         <label for="author" class="label label_name">Name*</label>                 
      </div>
      <div class="right">
         <label for="email" class="label label_email">Email*</label>              
      </div>
      </div>
   <div class="input_container">
      <input id="name" name="author" class="required input_text input_name" type="text" value="" /> 
      <input id="email" name="email" class="required input_text email input_email" type="text" value="" />
   </div>         
   <?php endif; ?>
      <div class="label_container"> 
         <label for="comment" class="label label_comment">Comment</label>                 
      </div>
   <textarea id="comment_box" class="required input_comment" name="comment" cols="40" rows="6"></textarea>   
   <p><input name="submit" class="input_submit" type="submit" id="submit" tabindex="5" value="Submit Comment" />  
   <input type="hidden" name="comment_post_ID" value="<?php echo $id; ?>" /></p>  
   <input type="hidden" id="redirect_to" name="redirect_to" value="<?php echo get_bloginfo('wpurl');?>/comment">
   <?php do_action('comment_form', $post->ID); ?>  
</form>

J'ai des champs obligatoires sur toutes les entrées, mais cela ne fonctionne que sur le champ de texte de commentaire.

Des idées?

1
danixd

Tout d’abord, je vous recommande vivement d’utiliser la fonction comment_form(). C'est tout le code ci-dessus dans une ligne (plus si vous avez besoin de Tweak parties du code). Vous pouvez désigner un nom et une adresse électronique comme requis dans la section des paramètres de votre zone d'administration:

Discussion settings

8
John P Bloch

(Remarque: je suis un développeur expérimenté, mais la base de code WP est nouvelle, prenez donc ce qui suit dans ce contexte.)

La classe CSS .required semble être utilisée à des fins de style, mais pas de logique. Il existe deux autres classes d’intérêt possible: form-required et aria-required. form-required est spécifiquement recherché dans wp-includes/js/wp-ajax-response.dev.js (la version modifiée est celle référencée sur les pages) et est utilisée pour la validation. Cependant, les champs obligatoires dans un commentaire (dont John Bloch a indiqué les paramètres) sont explicitement vérifiés dans wp-comments-post.php (près de la ligne 76) et il ne semble pas exister de mécanisme général pour l'étendre. C'est à dire. il n'y a pas une boucle disant quelque chose comme foreach ($fields as $field) {if ($field.is_required() ...}.

Exiger un champ fait partie du problème plus vaste de validation du formulaire (c'est-à-dire que non seulement il doit être non vide, mais son contenu doit être conforme certains critères), sujet qui ne semble pas être abordé de manière générale dans le code de base WP.

1
Peter Rowell