WordPress - Как получить 1 последнее сообщение из 5 категорий, так что общее количество сообщений будет 5 - PullRequest
0 голосов
/ 26 марта 2020

У меня есть эта переменная с 5 категориями:

 $category_needed = implode( ', ', $category_needed );

Вывод:

arts-entertainment, learning, news, real-estate, uncategorized

Теперь я хочу получить только 1 последний пост из вышеуказанных категорий.

Таким образом, общее количество сообщений будет 5 ОТ 5 последних сообщений из 5 категорий.

Для этого ниже указан мой код:

   $category_needed = implode( ', ', $category_needed );
    $post_args = [
        'post_type' => 'post',
        'numberposts' => 5,
        'category' => [ $category_needed ]
    ];

Но я вижу, что у меня есть 2 поста такой же категории, которые я не делаю хотеть.

Есть ли работа по поиску?

Обновление:

<code>echo '<pre>';
    print_r( $category_needed );
echo '
';

Возврат:

<code>Array
(
    [0] => 4
    [1] => 6
    [2] => 2
    [3] => 5
    [4] => 1
)

$latest_posts = array();

foreach ( $category_needed as $cat_id ){  // $category_ids is array of category ids
    $post_args = array(
        'post_type' => 'post',
        'numberposts' => 1,
        'category' => $cat_id,
    );
    $latest_post_of_category = get_posts( $post_args );
    $latest_posts[] = $latest_post_of_category[0];
}

foreach ( $latest_posts as $latest_post ) {
    $cat = get_the_category( $latest_post->ID);
    echo '<pre>';
        print_r( $cat[0]->name );
    echo '
'; }

Теперь возвращается:

Искусство и развлечения
Обучение
Обучение
Недвижимость
Недвижимость

Это должна быть уникальная категория, верно?

1 Ответ

1 голос
/ 26 марта 2020

Нет возможности получить только 1 сообщение из каждой категории.

Вам необходимо получить последнее сообщение в каждой категории в блоке foreach категории.

<code>$latest_posts = array();
$exclude_post_ids = array(); // Added
foreach ( $category_ids as $cat_id ){  // $category_ids is array of category ids
    $post_args = array(
        'post_type' => 'post',
        'numberposts' => 1,
        'category' => $cat_id,
        'exclude' => $exclude_post_ids, // Added
    );
    $latest_post_of_category = get_posts( $post_args );
    $latest_posts[] = $latest_post_of_category[0];
    $exclude_post_ids[] = $latest_post_of_category[0]->ID; // Added

    echo '<pre>';
        print_r( get_cat_name( $cat_id ) . $latest_post_of_category[0]->post_title );
    echo '
'; }

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

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