Qual é a diferença entre get_site_option e get_blog_option?

9

Estou tentando entender a diferença entre get_site_option () e get_blog_option () .

O blog e o site são duas coisas diferentes? Desculpas se essa pergunta parece básica, mas ao me referir a um site WordPress, sempre usei os dois termos de maneira muito vaga (para significar a mesma coisa). Agora estou me perguntando se há uma diferença?

Henry Wright
fonte

Respostas:

15

get_option()retorna uma opção para o blog atual .

Na instalação de site único, o blog atual é o único blog. Portanto, get get_option()retorna a opção para isso.


get_site_option()é usado para recuperar uma opção em toda a rede. Isso significa que você pode obter a mesma opção em qualquer site da rede.

Quando essa função é usada na instalação única, normalmente retorna a mesma coisa que get_option(). O valor pode mudar porque os get_site_option()ganchos do filtro de acionador que não são acionados por get_option().

Observe que, uma vez que a $wpdb->optionstabela é específica do blog, as opções de toda a rede são armazenadas na $wpdb->sitemetatabela, específicas das instalações multisite.


get_blog_option()é a única entre as três funções que não recebe o nome da opção como 1º argumento, mas seu 1º argumento é $blog_id.

De fato, é usado em instalações multisite para recuperar uma opção de um blog específico cujo ID é conhecido.

O que essa função faz é:

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

return $value;

Se $blog_idfor o mesmo da identificação atual do blog, o WordPress simplesmente ignora a switch_to_blogparte e apenas chama get_option().

Essa função é definida no arquivo wp-includes/ms-blogs.phpcarregado apenas para instalação multissite, portanto, get_blog_option()não é definida em instalações de site único.

gmazzap
fonte
6

get_site_option()- Obtém uma opção para toda a rede. Essa opção geralmente é adicionada na seção Configurações de administrador de rede de uma configuração multisite. Se eu tivesse 50 sites, seria difícil acessar 50 sites diferentes e definir o mesmo valor de opção. Em vez disso, eu poderia definir o valor da opção uma vez e aplicá-lo na rede a todos os sites. Consulte http://codex.wordpress.org/Function_Reference/get_site_option

get_blog_option()- Permite obter o valor de uma opção para um site específico. Um exemplo pode ser obter o valor de uma opção específica do usuário para cada site. Para que eu também pudesse obter todos os sites aos quais o usuário pertence, percorrer a lista de IDs do site e get_blog_option()passar o blog_idnome da opção e para recuperar o resultado. É uma função de conveniência que praticamente faz o seguinte:

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

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

tl; dr: get_site_option() obtém um valor de toda a rede, get_blog_option()obtém um valor específico para um determinado site sem precisar mudar para esse site primeiro por conta própria.

kingkool68
fonte