Выполните 1 запрос, чтобы получить 3 сообщения из каждой категории - PullRequest
1 голос
/ 11 июля 2019

Я хочу получить 3 сообщения (если есть) из каждой категории и выполнить только один запрос, чтобы получить все сообщения.

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

Ниже описано, как использовать цикл для выполнения нескольких запросов:

$query  = new WP_Query;

foreach ( $cats as $cat ) :
    $query->query( array(
        'cat'                 => $cat->term_id,
        'posts_per_page'      => 3,
        'no_found_rows'       => true,
        'ignore_sticky_posts' => true,
    ));

И я попробовал это:

    $args = array(
            'posts_per_page' => 3,
            'order'          => 'desc',
            'post_type'      => 'post',
            'cat'  => array(19,20,2,3),
            'ignore_sticky_posts' => true
        ); 
   $args['orderby'] = 'post_views';
   $posts = get_posts( $args );

Я не могу понять, как получить 3 сообщения, если существует из каждой категории или всех существующих категорий.

В результате я получаю только 3 сообщения из первой категории

Ответы [ 2 ]

1 голос
/ 11 июля 2019

Попробуйте следующее

$args = array(
'cat'      => array(1,2,3),
'order'    => 'ASC',
'showposts' => 3
    );
query_posts($args);
0 голосов
/ 12 июля 2019
<?php

    $cat_args = array (
        'orderby' => 'name',
        'order' => 'ASC',
    );

    $threecategories = get_categories( $cat_args ); 

    foreach ( $threecategories as $threecategory ) {

        echo '<a href="' . esc_url( get_category_link( $threecategory->term_id ) ) . '">' . $threecategory->name . '</a>';

        $post_args = array(
            'posts_per_page' => 3,
            'cat' => $threecategory->cat_ID
        );

        $threeposts = query_posts( $post_args );

        while(have_posts()) : the_post();

            echo '<a href="' . esc_url( get_the_permalink() ) . '">' . get_the_title(). '</a>';

        endwhile; 
    }
    wp_query_reset();

Может быть, это вам поможет

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...