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がうまく動作する場合の例です。
デフォルトテーマTwenty Twentyを使いました。
title_replyでコメント欄タイトル変更_001こちらの「コメントを残す」のタイトル部分を変更してみましょう。
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ファイルを保存後、ページをリロードするとタイトルが変更されます。
他にも色々できます。その他については別の記事にまとめました。

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

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

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

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

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

と変更してみます。
title_replyでタイトル変更できない_005翻訳されずにLeave a commentとそのまま表示されました。

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

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

title_replyでタイトル変更できない_006comments.phpのtitle_reply部分を消してみました。

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

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

title_replyでタイトル変更できない_009これでもOKのようです。(当たり前か...)

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

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

title_replyでタイトル変更できない_010comments.phpを見てみます。

title_replyでタイトル変更できない_011comment 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

© 2021 ソロ学