web-dev-qa-db-ja.com

コメントを追加カスタムフィールド

私は自分の問題に関して多くのスレッドを検索しましたが、残念ながら何もうまくいかなかったので、これが私の最後の選択肢です。コメントフォームにいくつかのカスタムフィールドを追加したいです。どうやってやるの?

1
markyeoj

ここに行きます: WordPressのコメントフォームにカスタムフィールドを追加しますか?

そしてこれに関するもう一つの素晴らしい記事: http://wpengineer.com/2214/adding-input-fields-to-the-comment-form/ /

投稿やユーザーのメタと同様に、コメントのメタの追加/更新、削除などの機能を利用できます。

編集:これはあなたにスタートをさせるための例です(コードをfunctions.phpに、またはカスタムプラグインに入れてください):

コメントフォームにフィールドを追加します。

add_filter( 'comment_form_defaults', 'change_comment_form_defaults');
function change_comment_form_defaults( $default ) {
    $commenter = wp_get_current_commenter();
    $default[ 'fields' ][ 'email' ] .= '<p class="comment-form-author">' .
                                            '<label for="city">'. __('City') . '</label>
                                        <span class="required">*</span>
                                        <input id="city" name="city" size="30" type="text" /></p>';
    return $default;
}

コメントメタを取得/追加/更新/削除する4つの機能:

get_comment_meta( $comment_id, $meta_key, $single = false );
add_comment_meta($comment_id, $meta_key, $meta_value, $unique = false );
update_comment_meta($comment_id, $meta_key, $meta_value, $unique = false );
delete_comment_meta( $comment_id, $meta_key, $single = false );

これが検証を行う場所です。

add_filter( 'preprocess_comment', 'verify_comment_meta_data' );
function verify_comment_meta_data( $commentdata ) {
    if ( ! isset( $_POST['city'] ) )
        wp_die( __( 'Error: please fill the required field (city).' ) );
    return $commentdata;
}

そしてコメントメタを保存します。

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

コメントメタを取得して表示します。

add_filter( 'get_comment_author_link', 'attach_city_to_author' );
function attach_city_to_author( $author ) {
    $city = get_comment_meta( get_comment_ID(), 'city', true );
    if ( $city )
        $author .= " ($city)";
    return $author;
}

:すべてのコードは上で投稿した WPengineer リンクからのものです。その投稿にはより多くの詳細と高度な使用法があります。それらもチェックしてください!)

5

Beau Lebensからのこのスライドショーは、あなたにどのようにあなたを示すことができるはずです: コメントに引っ掛ける

そしてOttoからのこのブログ投稿はもっとあなたを見せることができるべきです: WordPress 3.0テーマのヒント:コメントフォーム

"Wordpress Plugin:Extra Comment Fields"と呼ばれる基本的なプラグインもあります(申し訳ありませんが、リンクを投稿することはできません)。

1
Aleks