ワードプレスのcomment_formフィルタの使用方法・解説

概要

comment_formフィルタは、WordPressのコメント投稿フォームを表示する際に使われる重要なフィルタです。このフィルタを利用することで、コメントフォームのデフォルトの設定を変更したり、追加の要素を挿入したりすることが可能になります。主に以下のような機能実装に使われることが一般的です:

  1. コメントフォームのタイトルを変更する
  2. フォーム内に説明文を追加する
  3. 特定の条件に応じてフィールドを表示/非表示にする
  4. 必要な検証ルールを追加する
  5. スタイルやレイアウトをカスタマイズする
  6. ソーシャルメディアリンクを挿入する
  7. プライバシーや同意に関するチェックボックスを追加する
  8. 他のプラグインとの連携のためにフォームを拡張する

構文

apply_filters( 'comment_form', $form, $args );

パラメータ

  • $form: 現在のコメントフォームのHTML。
  • $args: comment_formに渡される引数の配列。

戻り値

フィルタリングされたコメントフォームのHTML。

関連する関数

filter_name

使用可能なバージョン

このフィルタはWordPress 2.0以降で使用可能です。

コアファイルのパス

wp-includes/comment-template.php

サンプルコード

サンプルコード1: フォームタイトルの変更

add_filter( 'comment_form_title', function( $title ) {
    return '新しいコメントタイトル';
});

このコードは、コメント投稿フォームのタイトルを「新しいコメントタイトル」に変更します。

サンプルコード2: コメントフォームの説明文を追加

add_filter( 'comment_form_defaults', function( $defaults ) {
    $defaults['comment_notes_after'] = 'あなたの意見をお聞かせください。';
    return $defaults;
});

このコードは、コメントフォームの後に説明文を追加します。

サンプルコード3: 特定条件でフィールドを非表示にする

add_filter( 'comment_form_field_comment', function( $field ) {
    if ( is_user_logged_in() ) {
        return '';
    }
    return $field;
});

このコードは、ログインユーザーにはコメントフィールドを表示しないようにします。

サンプルコード4: プライバシー同意チェックボックスを追加

add_filter( 'comment_form_fields', function( $fields ) {
    $fields['privacy'] = '<p class="comment-form-privacy">
    <input type="checkbox" required /> プライバシーポリシーに同意します
    </p>';
    return $fields;
});

このコードは、コメントフォームにプライバシー同意のチェックボックスを追加します。

サンプルコード5: コメント送信後のメッセージをカスタマイズ

add_filter( 'comment_post_redirect', function( $location ) {
    return add_query_arg( 'message', 'comment_submitted', $location );
});

このコードは、コメントが送信された後にリダイレクト先のURLにメッセージを追加します。

この関数のアクションでの使用可能性

アクション 使用可能性
mu_plugin_loaded
registered_post_type
plugins_loaded
wp_roles_init
setup_theme
after_setup_theme
set_current_user
init
register_sidebar
wp_loaded
send_headers
parse_query
pre_get_posts
wp
template_redirect
get_header
wp_head

非推奨または削除されたバージョン

特に非推奨又は削除されたバージョンはありません。

この関数について質問する


上の計算式の答えを入力してください