web-dev-qa-db-fra.com

différences entre le comportement get_option et get_site_option dans plusieurs sites

Je suis en train de convertir plusieurs sites en sites multisites et je suis confus quant aux différences de comportement entre get_option et get_site_option.

Il semble que get_site_option signifie réellement "get_network_wide_option" et que get_option signifie "get_option_for_this_site", et il en va de même pour les versions de mise à jour.

Compte tenu de cela, si un plugin souhaite avoir des paramètres discrets pour chaque site, il doit utiliser get_option et update_option. D'autre part, s'il souhaite que les valeurs des options soient constantes sur tous les sites, utilisez la version de get_site_option.

Est-ce que ma compréhension de ceci est correcte?

5
Bob Jones

Oui, get_site_option() concerne les données relatives à l'ensemble du réseau.

L'irritation provient d'un vocabulaire mixte: ce qui était un site une fois est un réseau de nos jours, et ce qui était un blog une fois est maintenant un site dans un réseau.

wp_get_sites(), par exemple, est à partir de la version 3.7, il récupère les sites d'un réseau, pas tous les réseaux d'une installation. Ainsi, un site in wp_get_sites() n'est pas la même chose qu'un site in get_site_option().

Pour les plug-ins qui doivent être utilisés dans une installation sur un seul site ou en tant que plugins réseau, vous pouvez toujours utiliser get_site_option(), car sur un seul site, il retombera sur get_option().

Une différence importante est que: les options normales sont chargées automatiquement à chaque demande, vous allez donc frapper le cache avec get_option(). Les options de site ne sont pas chargées automatiquement, seules certaines options de base. Voir /wp-includes/option.php wp_load_core_site_options().

Pour stocker des informations sur tous les sites de tous les réseaux, vous devez utiliser un tableau personnalisé ou choisir un réseau dans l'installation actuelle.

5
fuxia