ブログのリストを取得したいときにとても便利なwp_blogs
テーブルがあります(これが私がする必要があることです)。
問題は、そのテーブルのlang_id
フィールドからブログの言語を取得できないように思われることです。各ブログのオプションテーブルに設定されているWPLANG
オプションとは一致しません。
はい、各ブログに切り替えてget_bloginfo('language')
を実行することもできますが、ブログが多数ある場合はかなりの費用がかかります。
それで、そのlang_id
フィールドはどうなっていますか?それは何のため?
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のマルチサイト設定でサイトのロケール/言語を取得するには、次のようになります。
ロケールが設定されているか確認し、 'locale'フィルタを適用した後にこれを返します。
ロケール変数が設定されていない場合は、WordPressのデフォルトの(サイトごとの)オプションのWPLANGオプションがチェックされます。
サイト自身のWPLANGオプションが空であるか存在しない場合は、WPLANGオプションについてネットワークのオプションを確認します。
すべて失敗した場合、ロケールはen_USであると想定します。