web-dev-qa-db-ja.com

ブログの言語を取得する(サイトの「lang_id」フィールドとWPLANG設定)

ブログのリストを取得したいときにとても便利なwp_blogsテーブルがあります(これが私がする必要があることです)。

問題は、そのテーブルのlang_idフィールドからブログの言語を取得できないように思われることです。各ブログのオプションテーブルに設定されているWPLANGオプションとは一致しません。

はい、各ブログに切り替えてget_bloginfo('language')を実行することもできますが、ブログが多数ある場合はかなりの費用がかかります。

それで、そのlang_idフィールドはどうなっていますか?それは何のため?

3
onetrickpony

Lang_idオプションの意味がわかりません。私の知る限りでは、WordPressのコアオプションの一部ではありません。

すべてのブログの言語を確認したい場合は、WPLANG用のブログ独自のオプションテーブルを確認するか、WordPress独自のget_locale()関数と同じ方法でネットワークのWPLANGオプションを使用するか、必要なロケールで失敗します。

WordPressのソースコードをチェックすることをお勧めします。 get_bloginfo()関数は基本的に、オプションを取得したり、要求されたデータを取得するために他の関数を呼び出したりするためのラッパーです。 'language'パラメータの場合は、wp-includes/l10n.phpにあるget_locale()関数を呼び出します。

参照してください: http://phpxref.ftwr.co.uk/wordpress/nav.html?_functions/index.html

Get_locale()関数を見ると、WordPressのマルチサイト設定でサイトのロケール/言語を取得するには、次のようになります。

  1. ロケールが設定されているか確認し、 'locale'フィルタを適用した後にこれを返します。

  2. ロケール変数が設定されていない場合は、WordPressのデフォルトの(サイトごとの)オプションのWPLANGオプションがチェックされます。

  3. サイト自身のWPLANGオプションが空であるか存在しない場合は、WPLANGオプションについてネットワークのオプションを確認します。

  4. すべて失敗した場合、ロケールはen_USであると想定します。

2
BjornW