get_site_meta() – получает значение метаполя сайта сети

Начиная с версии WordPress 5.1 метаданные появились и у сайтов сети мультисайт. В базе данных вы можете найти их в таблице wp_blogmeta.

таблица wp_blogmeta в базе данных WordPress

Функция же get_site_meta() позполяет получить значения этих метаданных. Работает точно также, как и другие функции для получения метаданных, например get_post_meta() или get_user_meta() – прочекайте описания этих функций, если вас интересуют супер-подробные объяснения.

Логично предположить, что если у вас не включен WordPress Мультисайт, то функция будет недоступна. Более того, её использование приведёт к ошибке 500 – Call to undefined function get_site_meta().

get_site_meta( $blog_id, $meta_key = '', $single = false )

Параметры

$blog_id
(целое) ID сайта внутри сети мультисайт, метаданные которого хотим получить. Например вы можете использовать функцию get_current_blog_id() для получения ID текущего сайта. Если этот параметр указан неверно (например несуществующий сайт), то функция вернёт false.
$meta_key
(строка) ключ мета поля, значение колонки meta_key в базе данных в таблице wp_blogmeta. Если скипнуть этот параметр, то будут возвращены вообще все возможные метаполя сайта сети в виде массива (в каком виде – показано ниже в примере).
$single
(логическое) Дело в том, что с одним и тем же ключом может быть несколько значений в таблице wp_blogmeta. Если вы хотите получить все эти варианты значений в виде массива, то оставляете этот параметр как есть по умолчанию, если же вам нужно только одно значение поля (самое первое добавленное), либо же у вас и вовсе не хранится несколько значений, то конечно меняем на true, тогда функция вернёт нам строку/массив, в зависимости от того, что находится в значении метаполя, при значении false мы всегда будем получать массив, пусть даже и из одного элемента.

Примеры

Если мы вернёмся к скриншоту, который был в самом начале:

таблица wp_blogmeta в базе данных WordPress

То можем получить значения этого мета-поле строчкой кода:

echo get_site_meta( 1, 'language', true );

Или же для текущего сайта:

$site_id = get_current_blog_id(); // предположим хотим узнать язык текущего сайта
echo get_site_meta( $site_id, 'language', true );

А ещё я обещал пример с получением всех возможных мета полей:

$everything = get_site_meta( 2 ); // для сайта с ID 2
print_r( $everything ); 
 
/*
и получаем примерно это:
Array
(
    [language] => Array
        (
            [0] => french
        )
 
)
*/

Миша

Впервые познакомился с WordPress в 2009 году. Организатор и спикер на конференциях WordCamp. Преподаватель в школе Нетология.

Пишите, если нужна помощь с сайтом или разработка с нуля.

Оставить комментарий

Если вы хотите добавить код, не забудьте обернуть его в <pre lang="php"></pre>, если же код меньше одной строчки, то можно и в <code></code>.

Нажав на кнопку, вы соглашаетесь с тем, как обрабатываются персональные данные.