0
1

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

More than 1 year has passed since last update.

WordpressプラグインのBogoを利用中、設定→一般画面の言語設定のセレクトボックスが強制的に英語になる問題

Last updated at Posted at 2021-12-17

翻訳サイトを作成するのに有名なbogoというプラグインがありますが、それを利用しているサイトで油断をすると強制的にサイトのトップが英語サイトになる不具合が発生。

経緯

ことの発端は
「トップページが急に英語になった!重大な事態です!」
っていうクライアントからの連絡から始まった。
担当窓口のディレクターややり取りをみていたコーダー他もトップページにアクセスしたら英語になったと大騒ぎ。

ただこの手の話は実は検討が付いていて、Wordpressではサイトの言語設定という枠があり、bogoを利用している場合これの設定によってトップページが強制的にその言語がデフォルトスケールとなりテンプレートなどで言語切り替えをしている箇所が全てその言語に切り替わってしまう仕様があった。
以前も誤操作によって言語が切り替わってしまっていてこちらでbogoの言語管理設定画面からサイトの言語設定を日本語に戻して対処したことがあったので同様の操作を行って動作確認して解決の連絡をいれた。

再発

少しするとまた変わった!なんぞ?!と大騒ぎしているので再度「左メニュー→言語→言語パック」にて日本語がサイトの言語に設定されているのを確認。
ワンチャンキャッシュプラグインによる静的キャッシュが残ってるのかと思いキャッシュを消したがどうにも合点がいかない。
そこでふと「左メニュー→設定→一般」にも「サイトの言語」という枠があったのでそこを確認してみる事に、

するとなんということでしょう、Englishが選択されてる状態じゃありませんか

??と思いつつ日本語を選択して保存ボタンを押下、再度一般画面が表示されるとサイト言語のセレクトボックスはEngishが選択されているまま。。

軽く調べたらフォーラムでおなじ現象で困ってる人を発見。

検証

bogoプラグインを無効化すると問題なく上記の挙動はおこらなかったこと、
一般画面を表示させたとき一瞬で日本語からEnglishにセレクトボックスが切り替わったことからJavascriptがやらかしてると断定。
するとセレクトボックスのIDを参照しているわかりやすいコードを発見

/plugins/bogo/admin/js/admin.js
$( function() {
		$( 'body.options-general-php select#WPLANG' ).each( function() {
			$( this ).find( 'option[selected="selected"]' ).removeAttr( 'selected' );
			var val = bogo.defaultLocale || 'en_US';
			val = ( 'en_US' == val ? '' : val );
			$( this ).find( 'option[value="' + val + '"]' ).first().attr( 'selected', 'selected' );
		} );
	} );

・・これいる?w

結論

上記をコメントアウトしてアップしたところセレクトボックスが変わっちゃう問題は解決しました。
なお、bogo最新版の5.3.3でも発生しているので、bogoプラグインのバージョンアップしても同じ挙動が起こると思われます。
Wordpressのダウングレードとかプラグインダウングレードとかしなくて結構です。
でもこれbogoプラグインアップデートしたらまた同じ挙動が再発するんだろうな。。頼むぜbogoさんや。

0
1
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
0
1

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?