Multisite Language Switcherで「翻訳はみつかりませんでした」と出るのを解決



wordpressのマルチサイト機能を使用した多言語化を手軽にできるMultisite Language Switcherは便利なプラグインなのですが、対応させた翻訳ページが無い場合に「翻訳はみつかりませんでした」という文言が入ってしまうという問題が発生しましたので解決策をメモしておきます。

問題

Multisite Language Switcherには「翻訳があるリンクのみ表示(Show only links with a translation)」というチェックボックスの選択肢があります。

これで制御できるはずなのですが、意図せず以下のように動作していました。

チェックあり
→「翻訳はみつかりませんでした」という文言が入る

チェックなし
→wpのマルチサイト機能で作ったサイトへのリンクがそれぞれ入る

「翻訳があるリンクのみ表示」という文字を見たら普通「チェックがあったら何も出力しない」という動作をすると思うんですが、「翻訳はみつかりませんでした」という文言が出力されてしまいます。

翻訳記事無しの時はシンプルに”何も出力しない”ようにする

今回この記事で到達したい着地点は、

  • 「翻訳があるリンクのみ表示」にチェックが入った状態で、
  • 「翻訳はみつかりませんでした」という文字が出ないようにすることです。
サイト内で回遊するようなサイトならまだしも、SEOで検索エンジンからの流入メインで集客しているブログで「翻訳はみつかりませんでした」なんて表示が出力されるのは微妙でしょう。というかデフォルトで表示させないようにすべきだとおもうんだけどなぁ。

解決策

解決策は3つほど考えられます。

  • functions.phpで制御する
  • 翻訳ファイル上で空欄にする(Loco Translateなどを使用するか、.poを直接編集)
  • CSSでdisplay:noneにする

前後にHTMLで囲えるので、cssでdisplay:noneにしてしまう手も簡単そうでしたが、今回は1番上のfunctions.phpで対応しました。

functions.phpをいじる

では具体的に解決していきます。
というか以下のコードをfunctions.phpに追加するだけでOKです。

functions.php
/**
Multisite Language Switcherで「翻訳はみつかりませんでした」の文字を上書き
 */
function my_msls_widget_alternative_content( $text ) {       
    return '';
}
add_filter( 'msls_widget_alternative_content', 'my_msls_widget_alternative_content' );

以下の部分のreturnが出力される部分です。

return '';

この例だとカラをreturnしていますので、もし文言を変えたい場合はこの文の中に入れてください。