web-dev-qa-db-ja.com

マルチサイトでのget_optionとget_site_optionの動作の違い

多数のサイトをマルチサイトに変換していますが、get_optionとget_site_optionの動作の違いについて混乱しています。

Get_site_optionは実際には "get_network_wide_option"を意味し、get_optionは "get_option_for_this_site"を意味し、更新バージョンについても同様です。

これを考えると、プラグインが各サイトに個別の設定をしたい場合は、get_optionとupdate_optionを使用する必要があります。一方、オプション値をすべてのサイトで一定にしたい場合は、get_site_optionバージョンを使用してください。

これについての私の理解は正しいですか?

5
Bob Jones

はい、get_site_option()はネットワーク全体に関するデータです。

いらだちは混血語彙から来ています: site onceは network ですが、 blog onceはネットワークのサイトです。

例えばwp_get_sites()はバージョン3.7以降で、インストール内のすべてのネットワークではなく、ネットワーク内のサイトを取得します。そのためwp_get_sites() site get_site_option() site と同じではありません。

単一サイトのインストールで使用する必要があるプラグインの場合は、 または をネットワークプラグインとしてのみ使用できます。単一サイトではget_site_option()にフォールバックするため、常にget_option()を使用できます。

重要な違いの1つは、通常のオプションはリクエストごとに自動的にロードされるため、get_option()でキャッシュをヒットすることです。サイトオプションは自動的には読み込まれず、一部のコアオプションのみが読み込まれます。 /wp-includes/option.php wp_load_core_site_options()を参照してください。

すべてのネットワークのすべてのサイトの情報を保存するには、カスタムテーブルを使用するか、現在のインストールで1つのネットワークを選択する必要があります。

5
fuxia