get_site_optionとget_blog_optionの違いは何ですか?


9

get_site_option()get_blog_option()の違いを理解しようとしています。

あるブログサイト別物?この質問が基本的なように見える場合はお詫びしますが、WordPressのWebサイトを参照するときは、両方の用語を非常に大まかに(同じ意味で)使用してきました。私は今違いがあるかどうか疑問に思っていますか?

回答:


15

get_option()現在のブログのオプションを返します。

単一サイトのインストールでは、現在のブログが唯一のブログです。したがって、get get_option()はそのオプションを返します。


get_site_option()ネットワーク全体のオプションを取得するために使用されます。つまり、ネットワークのどのサイトからでも同じオプションを取得できます。

この関数を単一のインストールで使用すると、通常はと同じものが返されますget_option()get_site_option()によってトリガーされないトリガーフィルターフックのため、値が変更される場合がありますget_option()

一度ことを注意$wpdb->options表はブログ特有であり、ネットワーク全体のオプションが中に保存されている$wpdb->sitemetaテーブル、マルチサイトインストールの固有のものです。


get_blog_option()3つの関数の中で、オプション名を第1引数として受け取らないのは唯一ですが、その第1引数は$blog_idです。

実際、IDがわかっている特定のブログからオプションを取得するために、マルチサイトインストールで使用されます。

この関数の機能は次のとおりです。

switch_to_blog( $blog_id );
$value = get_option( $option, $default );
restore_current_blog();

return $value;

$blog_idが現在のブログIDと同じ場合、WordPressはそのswitch_to_blog部分をスキップしてを呼び出しますget_option()

この関数はwp-includes/ms-blogs.php、マルチサイトインストールの場合のみロードされるファイルで定義されているためget_blog_option()、単一サイトインストールでは定義されていません。


6

get_site_option()-ネットワーク全体のオプションを取得します。このオプションは通常、マルチサイト設定の[ネットワーク管理設定]セクションに追加されます。50のサイトがある場合、50の異なるサイトに移動して同じオプション値を設定するのは面倒です。代わりに、オプションの値を一度設定して、ネットワーク全体のすべてのサイトに適用することができます。http://codex.wordpress.org/Function_Reference/get_site_optionを参照してください

get_blog_option()-特定のサイトのオプションの値を取得できます。1つの例は、各サイトのユーザー固有のオプションの値を取得することです。したがって、ユーザーが所属するすべてのサイトを取得し、サイトIDのリストをループしget_blog_option()blog_id、オプション名を渡して結果を取得することもできます。これは、ほとんど次のことを行う便利な関数です。

switch_to_blog( $id ); $value = get_option( $option_name ); restore_current_blog();

http://codex.wordpress.org/Function_Reference/get_blog_optionを参照してください

tl; dr: get_site_option()ネットワーク全体の値をget_blog_option()取得し、特定のサイトの特定の値を取得します。最初に自分でそのサイトに切り替える必要はありません。

弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.