Wordpressでコメント欄のタイトル「コメントを残す」がtitle_replyを使っても変更されない場合。

2021-04-20

title_replyでタイトル変更できない_eyecatch

Wordpressのコメント欄のタイトル変更が出来なくて詰まった時の話です。

コメント欄上部の「コメントを残す」「コメントする」「コメントをどうぞ」などの文言、英語では「Leave a comment」と表示されるコメント欄のタイトルがtitle_replyで変更できない時にご確認ください。

comment_form_defaultsなどのフックでtitle_replyを使ってもコメント欄のタイトルが変更されない場合、原因はcomments.phpにあります。

title_replyでコメントタイトルが変更されない

Wordpress関数のうちの一つ、comment form関数の配列引数title_replyにコメント欄のタイトルを入力すればタイトルを変更することが可能です。

functions.phpなどでコメント欄のタイトルを変更したい場合は、フィルターフックのcomment_form_defaultsを使用すれば良いのですが、今回Twenty Twenty-Oneなどの一部のテーマでコメント欄のタイトル変更が出来ませんでした。

comments.phpにtitle_replyが直接記述されていることが原因のようです。

参考

テーマ専用の設定画面でコメントタイトルが変更できるテーマの場合も
comments.php内で設定した値を読み込んでいるのでtitle_replyが効きません。

コメント欄のタイトルを変更する

title_replyでコメント欄タイトル変更_001

コメント欄のタイトル「コメントを残す」変更する

まずtitle_replyがうまく動作する場合の例です。
デフォルトテーマTwenty Twentyを使いました。
こちらの「コメントを残す」のタイトル部分を変更してみましょう。
functions.phpに以下のコードを書きます。

function my_comment_form_custom( $args ){
    $args['title_reply'] = 'コメントタイトル変更!';
    return $args;
}
add_filter('comment_form_defaults', 'my_comment_form_custom');
title_replyでコメント欄タイトル変更_002

title_replyでコメント欄のタイトルを変更

ファイルを保存後、ページをリロードするとタイトルが変更されます。
他にも色々できます。その他については別の記事にまとめました。

スポンサーリンク

コメント欄のタイトルが変更できない

続いてうまく動作しなかった場合です。
Twenty Twenty-Oneでは「コメントする」の部分が変更できませんでした。

title_replyでタイトル変更できない_001

タイトルが変更されない

コードを同じようにfunctions.phpに記述してもタイトル部分が変更されません。
詰まったので調べたのですが、あまり有力な情報は発見できず…

ここらでWordPressの関数リファレンスを見ると、comment form関数でtitle_replyに設定したテキストが呼び出されるとありました。

comment form関数はcomments.php内で使用されています。
このcomments.phpは親テーマ内にあり、コメント欄の表示方法が記述されているPHPファイルです。

【comments.phpの場所】
wp-content > themes > テーマ名 > comments.php

それぞれ開いてコードを比べてみました。

title_replyでタイトル変更できない_002

Twenty Twentyのコード(うまくいく)

title_replyでタイトル変更できない_003

Twenty Twenty-Oneのコード(うまくいかない)

うまくいかない場合、title_replyが直接記述されています。

esc_html__('Leave a comment','twentytwentyone')

この部分で「Leave a comment」がtwentytwentyoneの翻訳によって「コメントを残す」に書き換えられているようです。

title_replyでタイトル変更できない_004

第二引数をdefaultに変更

esc_html__('Leave a comment','default')

title_replyでタイトル変更できない_005

翻訳されずに英語のまま出力される

と変更してみます。
翻訳されずにLeave a commentとそのまま表示されました。

解決法-comments.phpを編集する

comments.php内にtitle_replyが直接記述されているとダメみたいです。
ココが原因の可能性が高いので、コメントアウトしてみます。

title_replyでタイトル変更できない_006

comments.phpのtitle_reply部分をコメントアウト

comments.phpのtitle_reply部分を消してみました。

title_replyでタイトル変更できない_007

functions.phpのtitle_replyが反映された

序盤で紹介したコードが効き、コメント欄のタイトルが無事に変更されました!

title_replyでタイトル変更できない_008

comments.phpを直接編集

comments.php内のtitle_replyに直接タイトルを入力してみます。
(親テーマの場合テーマアップロード時に初期化されてしまいます。)

title_replyでタイトル変更できない_009

コメント欄のタイトルが変更された

これでもOKのようです。(当たり前か...)

title_replyが効かないテーマについて

Twenty Nineteenの場合も「コメントをどうぞ」が変更できませんでした。

title_replyでタイトル変更できない_010

Twenty Nineteenのコメント欄タイトルも変更できない

comments.phpを見てみます。

title_replyでタイトル変更できない_011

Twenty Nineteenの場合は直接タイトルが書かれている

comment form関数が使われていませんでした。
直接タイトルが記述されています。これではtitle_replyが効かないわけですね。

設定でタイトルが変更できるようになっているテーマの場合

多くの有名テーマの場合、テーマ専用の設定画面が付いており、ここからコメント欄のタイトルを変更できるようになっている場合があります。
このようなテーマのcomments.phpも確認してみます。

当サイトのテーマAFFINGERも設定画面でコメント欄のタイトル変更が可能です。

title_replyでタイトル変更できない_affinger5コード

AFFINGER5のcomments.php内のコード

グローバル変数から設定したタイトル文字を引っ張ってきているようでした。
title_replyに別の変数が入れられているため、やはりfunctions.phpからtitle_replyを使ってタイトル文字を変更することが出来ません。

続いて有名な無料テーマ、Cocoonも確認。
Cocoonもテーマ専用の設定画面があり、こちらからコメント欄のタイトルを変更することが出来るようになっています。

title_replyでタイトル変更できない_cocoonコード

Cocoonのcomments.php内のコード

Cocoonの場合、専用の関数を使ってtitle_replyに値を入れているようです。
Cocoonでもtitle_replyが効きませんが、そういうことだったのですね。



まとめ

Wordpressのコメントタイトルがtitle_replyで変更できない場合はcomments.phpに原因あり。

comments.php内のtitle_reply部分をコメントアウトするか削除して対応する。

title_reply_beforeやtitle_reply_afterなども同様で、直接記述されているとfunctions.phpから操作することが出来ないようです。

良く作りこまれた有名テーマの場合、テーマの設定画面でコメント欄のタイトルが変更できるようになっているため、title_replyは効きません。
(commnets.phpがテーマ専用のものになっているため。)

Wordpressのリファレンスや情報サイトで、出来ると書かれているのに自分のサイトでは反映されない時はやはり苦労します。
ではではこのへんで・w・

-WordPress
-

site-logo
ありがとうございました!
良かったらシェアしてネ・w・
当サイトはピンバックを受け付けます。
  • この記事を書いた人
ザキ

ザキ

X:@sologaku

プログラミングに興味があり情報系の大学を卒業。

新卒で社会人になるも数年で退職し今はフリーランスとして生きています。

少しでも誰かの役に立てれば...と思い、当サイトでIT関係のハウツーを発信しています。


ソロ学運営者:ザキの自己紹介

© 2020 sologaku