ワードプレスで作る格安・高機能なホームページ制作

虎舞竜(トラブル)発生!・・・管理人私的備忘録・第1章

何でもないようなことが、幸せだったと思う♪

この記事は、専ら、管理人同様、マルチサイトWordpressの管理者向け情報です。

事の発端は、今年(2012年)になって、マルチサイト用プラグインBuddypressの新バージョンがリリースされたので、それをインストールしたことに始まります。(と、管理人は思っています)

その時は、別段、何事もなかったのです、暫く過ぎてから、Admin用管理画面(一般アカウントとは違いますよん)の「設定」→「一般」設定画面を開いてみたら、言語設定が、”英語”に変わっていました。

その直前に導入した、Google Map Anywhereが日本語化されないので、ちょっとWordpressの動作が変だなぁと感じていたから、何かの操作ミスで、英語モードになっていたのね、とその時は、軽い気持ちで、言語設定を英語から日本語に変更しました。

そしたら、そしたら、設定は、日本語モードなのに、表示は、英語という状態になりました。

 厳密に言うと、管理画面は、日本語が表示される部分と英語が表示される部分があり、サイト(テーマ)やプラグインは、英語モードで動作しているという、なんとも不可解な現象が現れたのです。

 それからというもの、七転八倒の結果、何とか元通りの状態に戻りました。(約3日費やしましたわ・・・^^;)

 そこで、今後のために、また、他のWordpress利用者のために、如何にして状態復帰させたか、その過程を公開して、情報共有したいと思います。

まず、日本語化ファイル(moファイル)が壊れていた、とか、消してしまったとか、そういうオチはありません。また、wp_config.phpのWPLANGパラメータ(ja)を書き換えたとか、そういうことは一切ありません。確認しましたが、どちらも正常状態でした。

手掛かりとなる事実は、管理画面は、一部は、日本語、一部は英語ということ。

全部、英語表示ならWordpressの設定が英語化モードとして認識されているということになるが、一部が日本語ということは、その一部に関しては、日本語モードで動作しているということになる。

そして、英語表示になっているのは、Buddypress関連の項目とプラグインで、Wordpressの基本的機能部分に関しては、日本語表示になっていることに気付きました。

つまり、Wordpress本体は、問題なく、プラグイン(Buddypressもプラグインのひとつ)の問題だということ。

プラグインは、どうやって言語設定を判別するのか?上記のwp_config.phpのWPLANGを見ているとしか思えない。しかし、設定そのものは、間違っていないし、ファイルのアクセス権限(644)も正しいし、えーーん、なんでだろ!???と悶々した時間を費やし、いろいろネット検索で情報を探しまくった結果、ヒントとなる情報を見つけました。それがこれ!

WordPress私的マニュアル

WordPressのソースコードを調べて、どの処理で、言語設定を取得しているかというと、それは、get_locale()という関数でした。

それと、上記、サイトを読んでビックリ! それよると、マルチサイトでは、管理画面の「一般設定」の言語設定が優先される

get_locale()を確認すると、確かにそういう処理になっていた。

function get_locale() {
 global $locale;

 if ( isset( $locale ) )
  return apply_filters( ‘locale’, $locale );

 // WPLANG is defined in wp-config.
 if ( defined( ‘WPLANG’ ) )
  $locale = WPLANG;

 // If multisite, check options.ここでマルチサイト用の処理を行っている
 if ( is_multisite() ) {
  // Don’t check blog option when installing.
  if ( defined( ‘WP_INSTALLING’ ) || ( false === $ms_locale = get_option( ‘WPLANG’ ) ) )
   $ms_locale = get_site_option(‘WPLANG’);

  if ( $ms_locale !== false )
   $locale = $ms_locale;
 }

 if ( empty( $locale ) )
  $locale = ‘en_US’;

 return apply_filters( ‘locale’, $locale );
}

つまり、マルチサイトでは、wp_config.phpのWPLANGは見ていないということ。なるほど、そういうことなら上記、現象は理解できる。Wordpress本体は、絶対に、wp_config.phpのWPLANGを見るので、日本語モードで動作する。マルチサイトで動作する機能(Buddypressとかね)に関しては、 管理画面の「一般設定」の言語設定を見ているということになる。

しかし、理解はできるが、納得でけへん!(なぜか関西弁)

だってぇ、管理画面を何度確認しても、日本語設定になっているだもん。

そこで、管理人は、深く深く考察し、2つの仮説を立てました。

1つは、最近バージョンアップしたBuddypress(1.5.3.1)に何らかの不具合がある。もう一つは、画面表示上は、日本語モードになっているが、データベースに格納されている値は、英語モードの値になっているのではないか?

 …続く

宣伝