wordpressの記事に対してのコメントをカスタマイズしたい
-
こんにちは、
ageというテキストフィールドを、コメントに追加する例です
functions.php
<?php /** * Set extend field for comment * * * */ add_filter('comment_form_default_fields','add_comment_fields',11); function add_comment_fields($fields) { $my_comment_id = get_comment_ID(); $my_exten_field_html = '<p class="comment-form-age"><label for="%1$s">%2$s</label><input id="age" name="%1$s" type="text" size="30" value="%4$s" />%3$s</p>'; $fields['age']= sprintf( $my_exten_field_html , 'age' , __( 'Age','your-theme-name' ) , esc_attr( $commenter['age'] ) , get_comment_meta( $my_comment_id, 'age', true ) ); return $fields; } /** * Save extend field for comment * * * */ add_action( 'comment_post', 'add_custom_comment_field' ); function add_custom_comment_field( $comment_id ) { $age = esc_html( $_POST['age'] ); add_comment_meta( $comment_id, 'age', $age ); } /** * Display extend field for comment with template * * * */ /*<?php $my_comment_id = get_comment_ID(); echo get_comment_meta( $my_comment_id, 'age', true ); ?>*/
ご連絡ありがとうございます!
早速functions.phpに記述し、
single.phpに<?php comments_template(); ?>
を記述いたしましたが、
ageというフィールドは表示することができませんでした。
<?php comments_template(); ?>
では表示することはできないのでしょうか、、、、ご連絡お待ちしております
ageというフィールドは表示することができませんでした。
WordPressの環境により、フィルターの実行タイミングを調整しなければならない場合があるようです。
提示したコードは、ローカル環境のWordPress3.6で、テスト済みですが、念のため異なる環境の、WordPress3.6(マルチサイト3.6)でテストしたところ、sensensenさんのおっしゃるように、フィールドを追加できない現象を確認しました。
以下のように、フィルタの実行タイミングを変更したところ、動作していますので、参考にしてください
add_action( 'init', 'comment_init' ); function comment_init(){ add_filter('comment_form_default_fields','add_comment_fields',5); add_action( 'comment_post', 'add_custom_comment_field' ); }
コードの動作は、以下で確認できます
nobitaさま
素早いご連絡ありがとうございました。参考させていただいたサイト
http://tenman.info/labo/snip/archives/1899を拝見し、
まずは
functions.phpに<?php add_action( 'init', 'comment_init' ); function comment_init(){ add_filter('comment_form_default_fields','add_comment_fields',5); add_action( 'comment_post', 'add_custom_comment_field' ); } function remove_comment_fields($fields) { unset($fields['url']); return $fields; } add_filter('comment_form_default_fields','remove_comment_fields',10);
を記述し、
ソースを見ると、コメントのデフォルトである、
ウェブサイトを削除してくれるのかと思いましたが、single.phpで
<?php comments_template(); ?>
を記述し、出力された内容に
特に変化はございませんでした。・名前 (必須)
・メールアドレス (非公開) (必須)
・ウェブサイト
・コメントが表示されております。
add_filterの第3引数の調節なども行ってみましたが、
今一動作いたしません、、、記述している箇所などに誤りがあるのでしょうか?
ご連絡お待ちしております、
add_filter('comment_form_default_fields','remove_comment_fields',10);
が2度記述されていますが、削除してください
add_action( 'comment_post', 'add_custom_comment_field' );
も書いてあるのであれば、削除してください
コードはあくまで、動作を確認するサンプルなので、実装に当たっては、さらに いろいろと必要な修正もあると思いますので、Codexなどで、フィルタの動作などをよく理解したうえで、行ってください 🙂
- トピック「wordpressの記事に対してのコメントをカスタマイズしたい」には新たに返信することはできません。
(@sensensen)
11年、 6ヶ月前
いつもお世話になっております、
コメントをカスタマイズする方法は引数などの設定で変更できると分かりましたが、
新しく値を追加するようなことはできないでしょうか?
例えば
メールアドレス
名前
血液型
コメント
のように
血液型を入力できる、ラジオボタンの設置など。
プラグインや何でも構いません。
教えて頂けると幸いです。
どうぞよろしくお願いします。