web-dev-qa-db-ja.com

フィルタを使用してcomment_form()にフィールドを追加する

コメントにフィールドを追加し、これらのコードを使用しました。

functions.php

function my_fields($fields) {
    $fields['url2'] = '<p class="comment-form-url2">
                          <label for="url2">URL hittad på webben</label>
                          <input id="url2" name="url2" type="text" value="" size="30" />
                       </p>';
    return $fields;
}
add_filter('comment_form_default_fields','my_fields');

comments.php

comment_form();

質問

  1. 管理者コメントに余分なフィールドを追加しません。それがいいですか、そうではありませんか?
  2. 余分なフィールドを節約するようには思われません。コメント配列をvarダンプしようとしました。何故なの?
1
Jens Törnell

あなたが使うことができるコメントフォームには他にもいくつかのフックがあります。ユーザーがログインしていない場合にのみ表示されます。ログインしているかどうかにかかわらず、このフィールドを表示するには、comment_form_after_fieldscomment_form_logged_in_afterの両方にフックしてフォームを追加する必要があります。アクションを実行し、新しいフィールドをエコーアウトします。

<?php
add_action( 'comment_form_logged_in_after', 'pmg_comment_tut_fields' );
add_action( 'comment_form_after_fields', 'pmg_comment_tut_fields' );
function pmg_comment_tut_fields()
{
    ?>
    <p class="comment-form-title">
        <label for="pmg_comment_title"><?php _e( 'Title' ); ?></label>
        <input type="text" name="pmg_comment_title" id="pmg_comment_title" />
    </p>
    <?php
}

このチュートリアルをチェックしてください私が書いた(上の例はそれからです)。フィールドの追加からデータの保存、メタボックスの追加まですべてをカバーしているので、バックエンドで追加のフィールドも編集できます。

6
chrisguitarguy

あなたの余分なフィールドを節約するために、あなたはしなければなりません:

function save_comment_meta_data( $comment_id ) {
    add_comment_meta( $comment_id, 'extra_field', $_POST[ 'extra_field' ] );
}
add_action( 'comment_post', 'save_comment_meta_data' );

コメントフォームの追加フィールドをカバーする この素晴らしいチュートリアル を参照してください。

4
mike23

このプラグインを見てください http://www.solaceten.info

(情報公開:私は共著者です。プラグインは無料ですが、もうメンテナンスされていません)

0
Sol