Jaka jest różnica między get_site_option a get_blog_option?

9

Próbuję zrozumieć różnicę między get_site_option () a get_blog_option () .

Czy blog i witryna to dwie różne rzeczy? Przepraszam, jeśli to pytanie wydaje się podstawowe, ale odnosząc się do witryny WordPress, zawsze używałem obu terminów bardzo luźno (to znaczy to samo). Zastanawiam się teraz, czy jest jakaś różnica?

henrywright
źródło

Odpowiedzi:

15

get_option()zwraca opcję dla bieżącego bloga.

W instalacji z jedną witryną bieżący blog jest jedynym blogiem. Więc get get_option()zwraca opcję dla tego.


get_site_option()służy do pobierania opcji w całej sieci. Oznacza to, że możesz uzyskać tę samą opcję z dowolnej strony sieci.

Gdy ta funkcja jest używana w pojedynczej instalacji, zwykle zwraca to samo get_option(). Wartość może się zmienić, ponieważ get_site_option()nie są uruchamiane zaczepy filtra wyzwalacza get_option().

Należy zauważyć, że gdy $wpdb->optionstabela jest specyficzna dla bloga, opcje dla całej sieci są zapisywane w $wpdb->sitemetatabeli, co jest specyficzne dla instalacji na wielu stronach.


get_blog_option()jest jedyną z trzech funkcji, które nie otrzymują nazwy opcji jako pierwszego argumentu, ale pierwszym argumentem jest $blog_id.

W rzeczywistości jest używany w instalacjach obejmujących wiele witryn, aby pobrać opcję z określonego bloga, którego identyfikator jest znany.

Funkcja ta polega na:

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

return $value;

Jeśli $blog_idjest taki sam jak bieżący identyfikator bloga, WordPress po prostu pomija switch_to_blogczęść i po prostu dzwoni get_option().

Ta funkcja jest zdefiniowana w pliku, wp-includes/ms-blogs.phpktóry jest ładowany tylko do instalacji na wielu serwerach, więc get_blog_option()nie jest zdefiniowany w instalacjach z jedną lokalizacją.

gmazzap
źródło
6

get_site_option()- Pobiera opcję dla całej sieci. Ta opcja jest zwykle dodawana w sekcji Ustawienia administratora sieci w konfiguracji dla wielu witryn. Gdybym miał 50 witryn, trudno byłoby przejść do 50 różnych witryn i ustawić tę samą wartość opcji. Zamiast tego mogłem raz ustawić wartość opcji i zastosować ją w całej sieci dla wszystkich witryn. Zobacz http://codex.wordpress.org/Function_Reference/get_site_option

get_blog_option()- Pozwala uzyskać wartość opcji dla określonej witryny. Jednym z przykładów może być uzyskanie wartości opcji specyficznej dla użytkownika dla każdej witryny. Mogę więc pobrać wszystkie witryny, do których należy również użytkownik, przejrzeć listę identyfikatorów witryn i użyć get_blog_option()przekazania nazwy blog_idi opcji i uzyskać wynik. Jest to funkcja wygody, która w zasadzie wykonuje następujące czynności:

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

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

tl; dr: get_site_option() pobiera wartość dla całej sieci, get_blog_option()pobiera określoną wartość dla danej witryny bez konieczności wcześniejszego przełączania się na tę stronę.

kingkool68
źródło