Яка різниця між get_site_option та get_blog_option?


9

Я намагаюся зрозуміти різницю між get_site_option () та get_blog_option () .

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

Відповіді:


15

get_option()повертає опцію для поточного блогу.

При встановленні одного сайту поточний блог є єдиним блогом. Тож отримайте 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()на багато сайтів , тому не визначається в установках на одному сайті.


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()отримує конкретне значення для певного сайту, не потрібно спочатку самостійно переходити на цей сайт.

Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.