Quelle est la différence entre get_site_option et get_blog_option?

9

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

Le blog et le site sont-ils deux choses différentes? Toutes mes excuses si cette question semble basique, mais lorsque je me réfère à un site Web WordPress, j'ai toujours utilisé les deux termes de manière très lâche (pour signifier la même chose). Je me demande maintenant s'il y a une différence?

Henrywright
la source

Réponses:

15

get_option()renvoie une option pour le blog actuel .

Dans une installation à site unique, le blog actuel est le seul blog. Donc, get_option()retourne l'option pour cela.


get_site_option()est utilisé pour récupérer une option à l'échelle du réseau. Cela signifie que vous pouvez obtenir la même option à partir de n'importe quel site du réseau.

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

Notez qu'une fois que le $wpdb->optionstableau est spécifique au blog, les options à l'échelle du réseau sont stockées dans le $wpdb->sitemetatableau, c'est-à-dire spécifiques aux installations multisites.


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

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

Ce que fait cette fonction, c'est:

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

return $value;

Si $blog_idc'est la même chose que l'identifiant de blog actuel, WordPress saute simplement la switch_to_blogpartie et appelle simplement get_option().

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

gmazzap
la source
6

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, ce serait pénible 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 la faire appliquer sur le 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. Ainsi, je pourrais obtenir tous les sites auxquels appartient l'utilisateur, parcourir la liste des ID de site, utiliser get_blog_option()le blog_idnom de l'option et passer 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 à l'échelle du réseau, get_blog_option()obtient une valeur spécifique pour un site donné sans avoir à basculer d'abord sur ce site par vous-même.

kingkool68
la source