WordPress 3.0 以降はコメント入力フォームを表示するためのテンプレートがとんでもなく簡単になっています。
comment_form()
以上。
今までの苦労は何だったんでしょうか。しかも項目の追加とかカスタマイズも出来るようになってるらしいです。が、ここでも流行(?)の functions.php 経由。というわけでこれまでピンとこなかったんですがとりあえず触れるようになったので方法を書いてみることにしました。もちろんツッコミ大歓迎です。
早速結論です。コメント欄に twitter の項目を作って url の項目を消すには functions.php に以下のように追加します。
function custom_comment_fields($fields) {
$fields['url'] = '';
$fields['twitter'] = '<p class="comment-form-twitter"><label for="twitter">twitter@</label><input id="twitter" name="twitter" type="text" value="" size="15" /></p>';
return $fields;
}
add_filter('comment_form_default_fields','custom_comment_fields');
※もともと url に設定されている内容は wp-includes/comment-template.php の1528 行目あたりをご覧ください。
簡単といえば簡単。でも、これだけだと入力欄が表示されるだけで、書き込んでも twitter の項目はデータベースに記録されません。記録するためにはデータベースへ書き込むためにゴニョゴニョやらなきゃいけないらしいです。もちろん取り出すためにもゴニョゴニョ。というわけでとりあえずの使い道のメインは「お名前」とかをカスタマイズするぐらい?:oops:
2012/02 追記:データベースへ書き込んだり読み出したりするところまで WordPants | WordPants第2号メリークリスマス・パンツ!! の靴下編で解説されてます。
そのうちコメントフォームをカスタマイズして記録と呼び出しまでしてくれるプラグインが出るんじゃないかなぁとか期待しておくのもいいかもしれません。
あと、デフォルトだと入力フォームの下に許可されているタグ一覧が表示されますが、これを消すにはテンプレートからフォームを呼び出すときに
comment_form(array('comment_notes_after'=>''));
としてあげます。他にもいろんな所にテキストを差し込んだり差し替えたり出来るんですが、詳しくは codex で。名前がそのまんま場所を表してる感じです。
Function Reference/comment form « WordPress Codex
というわけでテンプレートはどんどんシンプルになっていく感じですが、細かく設定しようと思えばそれなりにガッツリもどうぞ、という印象。もちろん if がいくつも重なってておっかなびっくり触らなきゃいけないのに比べたら格段に楽ちんです。
もっとちゃんとした説明が読みたい!というかたは
WordPress 3.0 Theme Tip: The Comment Form » Otto on WordPress
をどうぞ。コメント欄でもいろいろ補足されてます。
“WordPress 3.0 以降のコメントフィールド” への1件のコメント
[…] http://www.csfactory.jp/blog/2010/08/25/wordpress-3-0-%E4%BB%A5%E9%99%8D%E3%81%AE%E3%82%B3%E3%83%A1%E3%83%B3%E3%83%88%E3%83%95%E3%82%A3%E3%83%BC%E3%83%AB%E3%83%89/ […]