Wordpressのコメント欄の各項目を非表示にしたり、コメント欄の文言をそれぞれ変更する方法をまとめました。
コメント時に入力してもらう項目ですが、メールアドレスやサイトの入力欄など入力項目が多いと閲覧者はコメントしづらくなります。
また「メールアドレスが公開されることはありません。」などの補足はコメントをする際に少し不安になります。
不要な入力項目や補足を削除し、文言も変更するとコメント率が上がります。
基本的にfunctions.phpで対応しました。一部CSSを使った方法もご紹介。
この記事の目次
WordPressのコメント欄をカスタマイズする
この記事ではfucntions.phpを使ってWordPressのコメント欄をカスタマイズする方法として、以下のカスタマイズ方法を記述しています。
非表示にできる内容
- 「名前」「メール」「サイト」の項目
- 次回のコメントで使用するため~
- メールアドレスが公開されることはありません
変更できる文言
- コメント欄のタイトル、送信ボタン
- 「名前」「メール」「サイト」の項目
- コメント内容の上部に表示されるコメント
デザインのカスタマイズについては記載しておりません。
各項目ごとに使用するコードをそれぞれ書いています。
ページの最後にまとめたコードを記載しております。
ポイント
使用しているテーマによっては、テーマの設定からコメント欄をカスタムできるものがあるので、確認がまだの方はそちらをまず確認しましょう!
funcitons.phpって何?という方は関連記事(↓)も参考にどうぞ!
コメント欄の各入力欄を非表示にする
コメント欄の「名前」「メール」「サイト」を非表示にする方法です。
名前とメールアドレスの入力欄を削除する際には注意があります。
Wordpressの設定で名前とメールアドレスの入力を必須にしている場合、空欄のまま送信を押すとエラーが出てしまうのでまずこちらを無効にします。
管理画面からディスカッションに進みます。
「コメントの投稿者の名前とメールアドレスの入力を必須にする」のチェックを外しておきましょう。
functions.phpに記述するコード
以下のコード(どちらでもOK)をfunctions.phpに記述します。
コードその1
function commentform_remove($args) { //名前の入力欄 $args['author'] = ''; //メールの入力欄 $args['email'] = ''; //サイトの入力欄 $args['url'] = ''; return $args; } add_filter('comment_form_default_fields', 'commentform_remove');
comment_form_default_fieldsというフックを使い、各項目の配列を設定して渡すことでfunctions.phpにて各項目を操作できます。
消したい項目を空にするとその入力項目を非表示に出来ます。
コードその2
unset関数を使って各配列の要素を削除する方法でもOKです。
function commentform_remove($args) { unset($args['author']); unset($args['email']); unset($args['url']); return $args; } add_filter('comment_form_default_fields', 'commentform_remove');
やっていることは同じです。一つ目のコードの方が動作が軽いかな?
cssのdisplay:noneなどを使って消すこともできますが、ページ上に存在するものを見えなくするだけなのであまり良くないと思います。
項目を削除するとこんな感じにコメント本文のみの入力欄になります。
コメント欄の必須項目とCookieの設定
- 「*が付いている欄は必須項目です」
- 「次回のコメントで使用するためブラウザーに自分の名前、メールアドレス、サイトを保存する。」
を非表示にする方法です。
これはWordpressの設定で簡単に行うことができます。
画像を参考に赤枠のところのチェックを外すとOKです。かんたん。
こんな感じになります。
「メールアドレスが公開されることはありません」を非表示にする
- 「メールアドレスが公開されることはありません。」
- 「次のHTMLタグと属性が使えます…」
を非表示にする方法です。
functions.phpに記述するコード
function commentform_remove_text( $args ){ //「メールアドレスが公開されることはありません」を削除 $args['comment_notes_before'] = ''; //「HTMLタグと属性が使えます…」を削除 $args['comment_notes_after'] = ''; return $args; } add_filter('comment_form_defaults', 'commentform_remove_text');
comment_form_defaultsというフックを使います。
入力欄を削除するのに使ったフックには_fieldsが付いていましたが違います。
comment_form_default_fields
「fields」配列のauthor、email、url、cookiesなどの要素を操作可能。
comment_form_default
全てのコメントフィールドを操作可能。
二次元配列の記述でfields要素も操作できる。
外部リンク
comment_notes_beforeとcomment_notes_afterという配列でコメント本文入力欄の前後にあるテキストを設定できます。
コメント欄のタイトルと送信ボタンの文字を変更する
- 「コメントする」や「コメントを残す」などの文字を変更する方法。
- 「コメント送信ボタン」の文字を変更する方法です。
コメント欄のタイトルや、コメントの送信ボタンを目を引くものに変更することによってコメントされる確率が上がるかもしれません。
こちらもfunctions.phpを使えば簡単に変更することが出来ますので、魅力的な一文に変更して下さい・w・
functions.phpに記述するコード
function commentform_change_text( $args ){ //コメント欄のタイトル $args['title_reply'] = 'コメントほしいなぁ~…'; //送信ボタンのテキスト $args['label_submit'] = '送信するっ!!'; return $args; } add_filter('comment_form_defaults', 'commentform_change_text');
title_replyに代入したテキストがコメント欄のタイトルになり、
label_submitに代入したテキストが送信ボタンの文字になります。
こんな感じに変わります。
テーマによってtitle_replyでタイトル文字が変更されない事があります。
コメント欄のタイトルを非表示にする
title_replyを空欄にすることでコメント欄上部のタイトルを非表示にできます。
functions.phpに記述するコード
function commentform_remove_title( $args ){ //コメント欄のタイトル $args['title_reply'] = ''; //タイトルを囲む開始タグ $args['title_reply_before'] = ''; //タイトルを囲む終了タグ $args['title_reply_after'] = ''; //送信ボタンのテキスト $args['label_submit'] = '送信するっ!!'; return $args; } add_filter('comment_form_defaults', 'commentform_remove_title');
title_replyを空に設定するとタイトルの表示場所に変な空白が出来てしまいます。
そこでタイトルを囲む前後のHTMLタグも同時に削除します。
- title_reply_beforeが開始タグ(<h2>~ほげほげ~)
- title_reply_afterが終了タグ(~ほげほげ~</h2>)
という感じです。こちらも空欄にしておきましょう。
各入力欄の文字を変更する
コメント欄の「名前」「メール」「サイト」の文字を変更する方法です。
CSSを使って変更することも可能ですが、ここではfunctions.phpにプログラムを記述し、読み込み時にテキストを置換する方法で実装します。
CSSの疑似要素を使う方法では元のテキストを隠す必要があります。
ソース上には存在してしまう為、あまり良くないと思います。
functions.phpに記述するコード
まず1項目のみ変更したい場合です。
文言を1つ変更したい場合のコード
//名前をニックネームに変更する function commentform_change_name( $changed ) { $changed = str_ireplace( '名前', 'ニックネーム', $changed ); return $changed; } add_filter('comment_form_default_fields', 'commentform_change_name');
【上記コードの使用例】
メールを変更:名前をメールに、ニックネームを変更後の文字に変更する。
サイトを変更:名前をサイトに、ニックネームを変更後の文字に変更する。
ただ単にテキストを置換しているだけなので、適宜変更することで文字を変更することが出来ます。
(comment_form_default_fields
フックなのでコメント欄以外に影響なし。)
続いて、3項目全て変更したい場合です。
入力欄の文言を全て変更したい場合のコード
//名前、メール、サイトをそれぞれ文字変更する function commentform_change_titles( $changed ) { $target = array('名前','メール','サイト',); $replace = array('ニックネーム','mailアドレス','あなたのサイトURL'); $changed = str_ireplace( $target, $replace, $changed ); return $changed; } add_filter('comment_form_default_fields', 'commentform_change_titles');
変更前のテキストと変更後のテキストを配列にまとめています。
配列0,1,2がそれぞれの文言と対応する感じ。
これで任意の箇所の文字を1発で変更することができます。
コメント内容上部の文字を変更する
コメント本文の上側にある「コメント」という文字を変更する方法です。
「コメント」の文字についてはcomment_form_default_fieldsを使った方法ではうまく変更できませんでしたのでCSSで文言変更します。
style.cssに記述するコード
.comment-form-comment label{ font-size: 0 !important; } .comment-form-comment label::before{ font-size: 18px; content: "コメント内容"; }
「コメント」となっている部分にはcomment labelというクラスが当てられているので、こちらをまずfont-size:0で非表示にします。
あとは疑似要素を使って任意のテキストに変更します。
こんな感じに変わります。
非表示にしたい場合は、display:none;を使用するとOKです。
CSS使用時のクラス名の参考
他の項目でもクラス名を変えることで同様に文言変更ができます。
項目 | クラス名 |
コメント | .comment-form-comment label |
名前 | .comment-form-author label |
メール | .comment-form-email label |
サイト | .comment-form-url label |
WordPressコメント欄カスタム用コード
コメント欄関連のコードをまとめました。
入力項目やテキストの削除と変更
function my_comment_form_custom( $args ){ //名前の入力欄を削除する $args['fields']['author'] = ''; //メールの入力欄を削除する $args['fields']['email'] = ''; //サイトの入力欄を削除する $args['fields']['url'] = ''; //「次回のコメントで使用するため…」を削除 $args['fields']['cookies'] = ''; //「メールアドレスが公開されることはありません」を削除 $args['comment_notes_before'] = ''; //「HTMLタグと属性が使えます…」を削除 $args['comment_notes_after'] = ''; //コメント欄のタイトル $args['title_reply'] = 'コメントはお気軽にどうぞ!'; //コメント送信ボタン $args['label_submit'] = 'コメントを送信'; return $args; } add_filter('comment_form_defaults', 'my_comment_form_custom');
「名前」「メール」「サイト」の文言を変更
//名前、メール、サイトをそれぞれ文字変更する function commentform_change_titles( $changed ) { $target = array('名前','メール','サイト',); $replace = array('ニックネーム','mailアドレス','あなたのサイトURL'); $changed = str_ireplace( $target, $replace, $changed ); return $changed; } add_filter('comment_form_default_fields', 'commentform_change_titles');
コメント本文上部の「コメント」の文言を変更
.comment-form-comment label{ font-size: 0 !important; } .comment-form-comment label::before{ font-size: 18px; content: "コメント内容"; }
以上の内容で大方コメント欄はカスタマイズできると思います。
まとめ
Wordpressのコメント欄をカスタマイズする方法でした。
ほとんどfunctions.phpだけで対応できます。
コメント欄はシンプルなほどコメント率が上がりますが、入力項目が少ないほどスパムコメントが増える可能性がありますので注意は必要です。