先日、Wordpressを4.4にアップデートしたところ、匿名コメントの投稿者名を変更する部分で不具合が出ました。
その不具合というのは、以前まで広く行われていた「匿名投稿者名の変更方法」を行うと、「コメントウィジェット」の投稿者名全てが、同じ名前になってしまうというものでした。
で、修正方法を調べてみたのですが、見つからなかったので、いろいろと試行錯誤して修正した方法を紹介したいと思います。
photo by Frédéric BISSON
目次
以前の匿名投稿者名変更方法
以前は、以下のような方法が一般的で、匿名のコメント者の名前を変更していました。
//無記名のコメント投稿者名を変更する function rename_anonymous_name($author) { global $comment; if( empty( $comment->comment_author ) ) { if( !empty( $comment->user_id ) ) { $user = get_userdata( $comment->user_id ); $author = $user->user_login; } else { $author = '変更匿名者名'; } } else { $author = $comment->comment_author; } return $author; } add_filter( 'get_comment_author', 'rename_anonymous_name' );
これでWordpress4.3以前までは、コメント部分の投稿者名も、ウィジェットの投稿者名も適切に表示されていました。
しかし、Wordpress4.4になってから、以下のようにコメント部分の投稿者名は、適切に「匿名投稿者名を変更」が反映されているのに対して、
「最近のコメントウィジェット」の投稿者名が全て同じになってしまう不具合が出てしまいました。
正確には、最後にコメントをした人の名前が全ての投稿に対して表示されてしまう。
WordPress4.4以降の匿名投稿者名変更方法
上で書いた、不具合について調べてみたのですが、何分人があまりやらないカスタマイズであるせいか、ネットで情報が見つかりませんでした。
なので、var_dump()で変数内を調べながら、小一時間ばかり試行錯誤した結果、以下のコードで「通常のコメント部分」も「最近の投稿(コメント)ウィジェット部分」も両立できました。
//無記名のコメント投稿者名を変更する function rename_anonymous_name($author) { if ( !$author || $author == __('Anonymous') ) { $author = '変更匿名者名'; } return $author; } add_filter( 'get_comment_author', 'rename_anonymous_name' );
ちょっと、エレガントな方法ではないのかもしれませんが、これでとりあえずは「コメント部分」も「ウィジェット部分」両方で意図通りの表示ができました。
以下のように、コメントの匿名の投稿者名部分は変更されていますし、
コメントウィジェット部分も、「匿名投稿者」部分のみ変更した投稿者名が反映されるようになりました。
まとめ
WordPress4.4では、いろいろな仕様変更があったみたいです。
そのせいで、カスタマイズ部分の修正を余儀なくされることもいくつかありました。
今回の、「匿名投稿者名の変更を行うカスタマイズ」は、あまりやっている人はいないとは思います。
けれど、取り敢えず忘れっぽい半年後の自分用にだけでも残しておこうと思います。
※もっと詳しい人が対策を行えば、もっと良い方法が今後出てくるかもしれません。
wp-includesディレクトリにあるcomment-template.phpを見てみると、4.4.0でget_comment_author()に変更があったみたいですね。
そのあたりの変更点が把握できたら根本的な対応がとれるかもしれません。