В версии WordPress 5.1 была представлена новая таблица метаданных, предназначенная для сайтов внутри сети WordPress Мультисайт.
Хорошая новость – с производительностью метаданных всё окей, вы можете получать их сразу от нескольких сайтов и при этом даже не используя функцию switch_to_blog()
. В то же время вы можете запускать циклы для сайтов используя WP_Meta_Query внутри WP_Site_Query
. Например:
$args = array( 'meta_query' => array( array( 'key' => 'language', 'value' => 'hawaiian' ) ) ); $site_query = new WP_Site_Query(); $sites = $site_query->query( $args );
Либо то же самое, но при помощи функции get_sites()
:
$args = array( 'meta_query' => array( array( 'key' => 'language', 'value' => 'hawaiian' ) ) ); $sites = get_sites( $args );
Однако не забывайте, что опции сайтов пока ещё никто не отменял:
- Используйте опции, если эти данные (настройки) никак не будут выходить за пределы того сайта, в котором используются.
- Используйте метаданные в том случае, если они затронут сразу несколько сайтов сети (а потом их можно будет вытаскивать через
meta_query
).
Для того, чтобы установить эту таблицу, вы должны обновить базу данных (это делается кнопкой через админку и будет вам автоматически предложено после обновления на 5.1). Тем не менее, чтобы избежать недоразумений, вы можете воспользоваться функцией is_site_meta_supported(), чтобы убедиться, что таблица норм установлена.
Также мы получаем набор из уже знакомых нам функций:
Все эти функции доступны в сети WordPress Мультисайт и работают так же, как и другие функции для работы с метаданными, get_post_meta(), get_user_meta() и т.д.
Источник: misha.blog