web-dev-qa-db-ja.com

ワードプレスのコメントフィールドを必須にするにはどうすればよいですか。

これが私のフォームです:

<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>

すべての入力に必須フィールドがありますが、コメントテキストフィールドにのみ取り組んでいます。

何か案は?

1
danixd

まず第一に、私はcomment_form()関数を使うことを強く勧めます。上記のコードはすべて1行に収まっています(コードの一部を調整する必要がある場合はさらに多くのコードが必要です)。管理領域の設定セクションで、必要に応じて名前と電子メールアドレスを指定できます。

Discussion settings

8
John P Bloch

(注:私は経験豊富な開発者ですが、WPコードベースは初めてのため、その意味で次の点に注意してください。)

.required CSSクラスはスタイル設定の目的で使用されているように見えますが、ロジックではありません。他に2つのクラスがあります - form-requiredaria-requiredform-requiredはwp-includes/js/wp-ajax-response.dev.js(ページ上で参照されているものは縮小版)で特にチェックされ、検証に使用されます。しかし、コメント内の必須フィールド(設定はJohn Blochによって指されています)はwp-comments-post.php(76行目付近)で明示的にチェックされており、これを拡張する一般的なメカニズムはないようです。すなわちforeach ($fields as $field) {if ($field.is_required() ...}のようなループはありません。

フィールドを要求することは、フォーム検証の大きな問題の一部です(つまり、空白でないことだけでなく、その内容を満たすことも必要です)。 WPコアコードでは一般的な方法では扱われていないような主題。

1
Peter Rowell