Для того, чтобы всё было легко и понятно, ниже скриншот новой таблицы wp_blogmeta
(которая кстати появилась в версии WordPress 5.1)
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
мы всегда будем получать массив, пусть даже и из одного элемента.
Пример
Тут всё очень просто – если вы знакомы с функцией get_post_meta(), get_user_meta() или get_term_meta(), то вы могли бы даже не читать документацию, вам бы и так сразу всё стало понятно 😁
// предположим, что подсайты сети у нас служат для мультиязычности сайта $site_id = get_current_blog_id(); // предположим хотим узнать язык текущего сайта $language = get_site_meta( $site_id, 'language', true ); echo $language;
А ещё я обещал пример с получением всех возможных мета полей:
$everything = get_site_meta( 2 ); // для сайта с ID 2 print_r( $everything ); /* и получаем примерно это: Array ( [language] => Array ( [0] => french ) ) */
Источник: misha.blog