В чем разница между get_site_option и get_blog_option?

9

Я пытаюсь понять разницу между get_site_option () и get_blog_option () .

Есть блог и сайт две разные вещи? Извиняюсь, если этот вопрос кажется базовым, но при обращении к веб-сайту WordPress я всегда использовал оба термина очень свободно (чтобы обозначать одно и то же). Мне вот интересно, есть ли разница?

henrywright
источник

Ответы:

15

get_option()возвращает опцию для текущего блога.

При установке на одном сайте текущий блог является единственным блогом. Так что get get_option()возвращает опцию для этого.


get_site_option()используется для получения опции всей сети. Это означает, что вы можете получить такую ​​же опцию с любого сайта сети.

Когда эта функция используется в одной установке, она обычно возвращает то же самое get_option(). Значение может измениться, потому что get_site_option()триггеры фильтра триггеров не запускаются get_option().

Обратите внимание, что, как только $wpdb->optionsтаблица относится к конкретному блогу, в ней хранятся параметры всей сети $wpdb->sitemeta, что характерно для многосайтовых установок.


get_blog_option()является единственной среди трех функций, которая не получает имя опции в качестве 1-го аргумента, но ее 1-й аргумент - $blog_id.

Фактически, он используется в многосайтовых установках для извлечения опции из определенного блога, чей идентификатор известен.

Что делает эта функция:

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

return $value;

Если $blog_idтот же идентификатор текущего блога, WordPress просто пропускает switch_to_blogчасть и просто вызывает get_option().

Эта функция определена в файле, wp-includes/ms-blogs.phpкоторый загружается только для многосайтовой установки, поэтому get_blog_option()не определяется при установке на одном сайте.

Gmazzap
источник
6

get_site_option()- Получает опцию всей сети. Этот параметр обычно добавляется в разделе «Настройки сетевого администратора» для многосайтовой настройки. Если бы у меня было 50 сайтов, было бы больно переходить на 50 разных сайтов и устанавливать одно и то же значение параметра. Вместо этого я мог бы один раз установить значение параметра и применить его ко всей сети для всех сайтов. Смотрите http://codex.wordpress.org/Function_Reference/get_site_option

get_blog_option()- Позволяет получить значение параметра для определенного сайта. Одним из примеров может быть получение значения пользовательской опции для каждого сайта. Таким образом, я мог бы получить все сайты, к которым принадлежит пользователь, перебрать список идентификаторов сайтов, использовать get_blog_option()передачу имени blog_idпараметра и и получить результат. Это удобная функция, которая в значительной степени выполняет следующие действия:

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

Смотрите http://codex.wordpress.org/Function_Reference/get_blog_option

tl; dr: get_site_option() получает значение для всей сети, get_blog_option()получает конкретное значение для данного сайта без необходимости сначала переключаться на этот сайт самостоятельно.

kingkool68
источник