これが私のフォームです:
<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>
すべての入力に必須フィールドがありますが、コメントテキストフィールドにのみ取り組んでいます。
何か案は?
まず第一に、私はcomment_form()
関数を使うことを強く勧めます。上記のコードはすべて1行に収まっています(コードの一部を調整する必要がある場合はさらに多くのコードが必要です)。管理領域の設定セクションで、必要に応じて名前と電子メールアドレスを指定できます。
(注:私は経験豊富な開発者ですが、WPコードベースは初めてのため、その意味で次の点に注意してください。)
.required
CSSクラスはスタイル設定の目的で使用されているように見えますが、ロジックではありません。他に2つのクラスがあります - form-required
とaria-required
。 form-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コアコードでは一般的な方法では扱われていないような主題。