Отображение сообщений из разных категорий и из пользовательского типа сообщений

На моей главной странице я хочу показывать сообщения из 3 категорий и 1 пользовательский тип сообщения.

Есть ли способ объединить их в одну функцию pre_get_posts ? Или мне нужно запросить отдельно – один раз для CPT и один раз для сообщений из определенных категорий?

Если вы отправили сообщение из категории a, один из категории b, другую категорию категории c, а затем, наконец, пользовательский тип сообщения – каждый из них должен был быть отдельным запросом.

Подумайте об этом как о «вторичных запросах» – (первичный запрос – это то, что приземляется на домашней странице). Поэтому вам WP_Query отдельные экземпляры WP_Query (см. Этот связанный пост ).

Например

 $post_from_cat_a = new WP_Query(array( 'category__name' => array('a'), 'posts_per_page'=> 1 )); if( $post_from_cat_a->have_posts() ){ while( $post_from_cat_a->have_posts() ): $post_from_cat_a->the_post(); //Display output here endwhile; } $post_from_cat_b = new WP_Query(array( 'category__name' => array('b'), 'posts_per_page'=> 1 )); if( $post_from_cat_b->have_posts() ){ ... ... 

и т. д. Не забудьте вызвать wp_reset_postdata(); в конце.