web-dev-qa-db-fra.com

Quelle est la différence entre get_site_option et get_blog_option?

J'essaie de comprendre la différence entre get_site_option () et get_blog_option () .

Est-ce que blog et site sont deux choses différentes? Toutes mes excuses si cette question semble simple, mais lorsque vous vous référez à un site Web WordPress, j’ai toujours utilisé les deux termes très vaguement (pour désigner la même chose). Je me demande maintenant s'il y a une différence?

8
henrywright

get_option() renvoie une option pour le blog actuel.

Dans l’installation sur un seul site, le blog actuel est le seul blog. Donc, obtenir get_option() renvoie l'option correspondante.


get_site_option() est utilisé pour récupérer une option sur l'ensemble du réseau. Cela signifie que vous pouvez obtenir la même option depuis n’importe quel site du réseau.

Lorsque cette fonction est utilisée dans une installation unique, normalement renvoie la même chose que get_option(). La valeur peut changer car get_site_option() déclenche des crochets de filtre qui ne sont pas déclenchés par get_option().

Notez qu'une fois que la table $wpdb->options est spécifique à un blog, des options à l'échelle du réseau sont stockées dans la table $wpdb->sitemeta , qui est spécifique aux installations multisites.


get_blog_option() est la seule parmi les trois fonctions à ne pas recevoir le nom de l'option en tant que 1er argument, mais son premier argument est $blog_id.

En fait, il est utilisé dans les installations multisites pour extraire une option d'un blog spécifique dont l'identifiant est connu.

Ce que cette fonction fait est:

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

return $value;

Si $blog_id est identique à l'id du blog actuel, WordPress ignore simplement la partie switch_to_blog et appelle simplement get_option().

Cette fonction est définie dans le fichier wp-includes/ms-blogs.php chargé uniquement pour une installation multisite. Par conséquent, get_blog_option() n'est pas défini dans les installations à site unique.

15
gmazzap

get_site_option() - Obtient une option à l'échelle du réseau. Cette option est généralement ajoutée dans la section Paramètres d'administration réseau d'une configuration multisite. Si j'avais 50 sites, il serait difficile d'aller sur 50 sites différents et de définir la même valeur d'option. Au lieu de cela, je pouvais définir la valeur de l'option une fois et l'appliquer à l'ensemble du réseau pour tous les sites. Voir http://codex.wordpress.org/Function_Reference/get_site_option

get_blog_option() - Vous permet d'obtenir la valeur d'une option pour un site spécifique. Un exemple pourrait être d'obtenir la valeur d'une option spécifique à l'utilisateur pour chaque site. Je pourrais donc obtenir tous les sites auxquels l'utilisateur appartient également, passer en boucle sur la liste des identifiants de sites et utiliser get_blog_option() en passant le blog_id et le nom de l'option et récupérer le résultat. C'est une fonction pratique qui fait à peu près ce qui suit:

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

Voir http://codex.wordpress.org/Function_Reference/get_blog_option

tl; dr: get_site_option() obtient une valeur pour l'ensemble du réseau, get_blog_option() obtient une valeur spécifique pour un site donné sans avoir à basculer sur ce site au préalable.

6
kingkool68