Akismet のプライバシー通知のフィルターフック
Akismet に追加された、「コメントフォームにプライバシーに関する通知を表示する」機能のフィルターフック。
« akismet_comment_form_privacy_notice_markup »
このフィルターフックは、class.akismet.php の最後部あたりにある。このフィルターを使えば表示される文字列を独自のものにできます。
自分のサイトの場合は、ブラウザの言語設定によりコンテンツを英語表示にしていて、ヨーロッパからのアクセスもあるので表示しないといけないのだと思います。
が、当然のことながらAkismet の通知はブラウザの言語設定では英語表示にならないので、そのあたりは自分で細工しないといけないのです。
で、ちょっと探して見たところ上記のフィルターフックがありました。
と、いうところで以下の様にしています。実際の言語設定を判定する場合においては、urlのパラメータとかもう少し手のこんだことをしているのですが、まぁ、それは省略しています。
<?php
function show_privacy_akismet( $notice ) {
$accept_l = isset( $_SERVER['HTTP_ACCEPT_LANGUAGE'] ) ? $_SERVER['HTTP_ACCEPT_LANGUAGE'] : '';
$access_lang = 'en';
if ( $accept_l ) {
$tmp_lang = explode( ',', $accept_l );
if ( count( $tmp_lang ) ) {
if ( false !== strpos( $tmp_lang[0] , 'ja' ) ) {
$access_lang = 'ja';
}
}
}
if ( 'en' === $access_lang ) {
// もともとの文字列に独自に表示させたい文字列を付加して表示
return '<p class="akismet_comment_form_privacy_notice">When visitors leave comments on the site we collect the data shown in the comments form, and also the visitor’s IP address and browser user agent string to help spam detection.</p>' . $notice;
} else {
//翻訳されて日本語になっていたらそのまま表示させてみる、という試験的なだけの処理
if ( false === strpos( $notice, 'This site' ) ) {
return $notice;
} else {
return '<p class="akismet_comment_form_privacy_notice">♠訪問者がコメントを残す場合に、コメントフォームに表示されているデータ、そしてスパム検出に役立てるための IP アドレスとブラウザーユーザーエージェント文字列を収集します。<br>♠このサイトはスパムを低減するために Akismet を使っています。<a href="https://akismet.com/privacy/" target="_blank">コメントデータがどう処理されているか知りたい方はこちらをお読みください</a>。</p>';
}
}
}
if ( class_exists('Akismet') ) {
add_filter( 'akismet_comment_form_privacy_notice_markup', 'show_privacy_akismet' );
}
?>
このフックで得られる引数は、そのまんま通知で表示される文字列です。
元の文字列はそれぞれの言語に翻訳されるようになっているので、日本語に翻訳された文字列が渡されてくるばずなのではあるのですが・・・。
で、このプライバシーに関する通知を表示する機能が、Akismet に付加されたのは、4.0.6 からだと思うのですが(私が気が付いたのはそのバージョンです)、そのバージョンではこの通知はちゃんと日本語に翻訳されて表示されていました。がしかし、その後すぐにアップデートされて4.0.7 になったのですが、それにより日本語に翻訳されなくなり、通知は英語表示となってしまいました。
この通知の機能の部分は変更になっているのだろうかと関数を見てみると、表示される通知文字列のリンク部分に、「target="_blank"」が追加されていました。
これは翻訳ファイルの方も当然のことながら対象となる文字列をアップデートしないといけないわけで、ひょっとしたらそれをしていないだけのことではないかと。そう思っていたら、その後またすぐに翻訳ファイルだけのアップデートがあったわけなのです。
これで日本語に表示されるだろうと思っていたら、なんてことか、想定外で英語表示のままでしたね。日本においてはまだこの表示は必要ではないだろうとのことで、日本語圏ではこのオプションが使用されることはないだろうとの意図なのでしょうか。
まぁ、よくわからないですが・・・。
その後、4.0.8 にバージョンアップされ、 「rel="nofollow noopener"」が新たに付加されました。
とりあえず、この部分、バージョン4.0.8 においてhtmlに挿入される英語の文字列と、4.0.6において日本語に翻訳されていた文字列は以下のようです。
英語 ver. 4.0.8
<p class="akismet_comment_form_privacy_notice">This site uses Akismet to reduce spam. <a href="https://akismet.com/privacy/" target="_blank" rel="nofollow noopener">Learn how your comment data is processed</a>.</p>
日本語 ver. 4.0.6
<p class="akismet_comment_form_privacy_notice">このサイトはスパムを低減するために Akismet を使っています。<a href="https://akismet.com/privacy/">コメントデータがどう処理されているか知りたい方はこちらをお読みください</a>。</p>
ご参考まで。
と・・・、後日、だいぶ経ってからふと気が付いたのですが、いつのまにかちゃんと日本語に翻訳されて表示されてました。
はて、いつアップデートされたのかと。アップデートがあったのはjetpack (でも実は使っていなかったりして)ぐらいだったと思うのですが。というと、キャッシュとかでアップデートされた翻訳が反映されていなかったということなのでしょうかね。ver. 4.0.8 でちゃんと日本語表示されるようです。
自分の場合は上記の通知内容に独自の通知を追加して表示しています。下記コメント欄 ↓ にて。
Post : 2018/06/07 11:01
Comments feed
Trackback URL : https://strix.main.jp/wp-trackback.php?p=119406