Intereting Posts
Очистите веб-страницу для изображения и добавьте ее в сообщение Wp перенаправляет URL-адрес с помощью строки амперсанда как добавить версию style.css в wordpress Импорт мультимедиа в онлайн-WordPress из локальной разработки Почему у меня есть паразитная пуля из <? Php wp_list_categories>? WooCommerce – как отображать категорию продукта выше продукта? Как я могу автоматически отправлять электронное письмо с файлом excel, содержащим представления для формы, а не по электронной почте для отправки? WordPress 3.8 получает текущую цветовую схему администратора Как создать идентификатор вложения с помощью Ajax submit? Нет обновления страницы Удаление терминов из таблицы терминов Wordpp wp Каков правильный способ настройки WP-CLI на Ubuntu, так что мне не нужно использовать флаг -allow-root? URL-адрес категории случайных сообщений Плагин Flickr, который будет отображать фотографии из нескольких пулов групп? WordPress отправляет информацию на другой сайт сделать выдержку из данных из мета-поля?

WP MS: как выполнить запрос по сети

У меня есть многоуровневая установка WP 3.8.1 с тремя блогами, все они находятся в одном db, wp_ , wp_2_ и wp_3_ .

В шаблоне в wp_ я пытаюсь отобразить все сообщения из wp_ , wp_2_ и wp_3_ которые связаны с категорией xxx . Я хочу отображать записи в хронологическом порядке. Я попробовал этот запрос:

 SELECT * FROM $wpdb->posts INNER JOIN $wpdb->term_relationships ON $wpdb->posts.ID= $wpdb->term_relationships.object_id INNER JOIN $wpdb->term_taxonomy ON $wpdb->term_relationships.term_taxonomy_id = $wpdb->term_taxonomy.term_taxonomy_id INNER JOIN $wpdb->terms ON $wpdb->term_taxonomy.term_id=$wpdb->terms.term_id WHERE $wpdb->terms.name = 'xxx' ORDER BY $wpdb->posts.post_date DESC 

Это работает только для текущего блога, то есть не включает wp_2_ и wp_3_ .

Как получить все сообщения с категорией xxx из wp_ , wp_2_ , wp_3_ (а не только wp_ )?

Каждый сайт в сети Multisite считается именно этим – отдельным сайтом . Все значения $wpdb (например, $wpdb->posts ) различны для каждого сайта.

Вы можете использовать switch_to_blog() и restore_current_blog() для получения контента (сообщений и т. Д.) С разных сайтов [*] в своей сети:

 $sites = array( 1, 2, 3, ); $all_posts = array(); $args = array( 'category_name' => 'xxx', ); foreach( $sites as $site ) { switch_to_blog( $site ); $posts = get_posts( $args ); foreach( $posts as $post ) { // Better get the post's permalink, since it's site-dependent $post->permalink = get_permalink( $post->ID ); $all_posts[] = $post; } restore_current_blog(); } 

Это даст вам массив всех сообщений с каждого вашего сайта – каждый из них появится в массиве как объект WP_Post . Чтобы отсортировать их по дате, вы можете использовать usort() PHP и сравнить значения $post->post_date или $post->post_date_gmt .

Рекомендации

  • switch_to_blog()
  • restore_current_blog()
  • get_posts()
  • get_permalink()
  • WP_Post
  • usort()

[*]: Первоначально WordPress использовал терминологию « сайт блогов ». Позже он был усовершенствован « сетью сайтов », но некоторые имена функций по-прежнему отражают старые способы.