多数のサイトをマルチサイトに変換していますが、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バージョンを使用してください。
これについての私の理解は正しいですか?
はい、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つのネットワークを選択する必要があります。