Поддержка метаданных для сайтов сети мультисайт в WordPress 5.1

В версии 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() и т.д.

Миша

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

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

Чтобы оставить комментарий, пожалуйста, зарегистрируйтесь или войдите.

Миша Рудрастых и WordPress

Полезности из мира WordPress и жизни студии.

Мой телеграм-канал