WordPressでちょっと疑問に思ったことがありまして…。
一つのページ内に、ループとかで幾つも投稿を表示する際、すべての投稿ごとにコメント欄をつけたい、というとき、Twenty Tenとかのコメントのテンプレをそのまま使うと、コメント欄のパーツのid属性とname属性が全て同じになる、これってHTML的にまずいことなんじゃないの? ということなんです。
実際やってみると、これでもってコメント投稿しても、挙動的には問題ないんですけどね。ただ、W3C的には正しいわけがない。
フォーラムでも質問させてもらったりして、いろいろ調べたところ、以下のような事実と、私の勘違いが判明。
- コメントのpost先は、wp-comments-post.php。もしテンプレをいじってname属性を重複しないように変更するなら、wp-comments-post.phpも書き換えなきゃならない。wp-comments-post.phpはWordPressのコアファイルなので、それは避けたい。
-
とか思ってW3Cの勧告をよくよく見てみると、
The scope of the name attribute for a control within a FORM element is the FORM element.
とある。なんと、フォーム内のname属性のスコープは、そのフォームの中だった。
- ってことは、テンプレでid属性だけいじれば問題なし。wp-comments-post.phpとかには影響しない。
ということで、一件落着です。
フォーラムで、辛抱強く付き合っていただいたnobita様に感謝です。