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

Я могу получить количество опубликованных постов в определенной категории (3), например:

<?php
$theID = 3;
$postsInCat = get_term_by('id','' . $theID . '','category');
$postsInCat = $postsInCat->count;
echo $postsInCat . " posts in this category";
?>

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

Заранее спасибо.

0

Решение

Возможно, ваше решение таково: помните, что идентификатор категории сохранен в таблице wp_terms, откуда вы можете его получить, а тип записи — ‘post’ thx

$args = array(
'posts_per_page' => -1,
'no_found_rows'  => true,
'post_status'    => 'trash',
'post_type'      => 'post',
'category'       => 3 );
$post=get_posts($args);
print_r($post);
echo "<br><br>Total Trashed :";
echo $total = ( $post ) ? count( $post ) : 0;
1

Другие решения

Вы можете сделать все это одним запросом, используя get_posts как альтернатива

Концепт

Получить все сообщения из указанной категории со статусом сообщения trash или же publish

Далее вам нужно разбить возвращаемый массив на два массива, один для trashсообщения и один для publishпод ред. Используйте post_status объект для сортировки сообщений по статусу сообщения

Теперь вы можете просто сосчитать два массива и повторить счет постов

$args = array(
'posts_per_page' => -1,
'post_status'    => array( 'trash', 'publish' ),
'category'       3
);
$posts = get_posts($args);

if( $posts ) {

$trash = [];
$publish = [];
foreach ( $posts as $post ) {
if( $post->post_status == 'trash' ) {
$trash[] = $post;
}else{
$publish[] = $post;
}
}

echo 'There are ' . count($trash) . ' trashed posts </br>';
echo 'There are ' . count($publish) . ' published posts';
}
1

использование get_posts() и посчитать результаты.

// Get trashed post in category 3.
$trashed_posts = get_posts( array(
'posts_per_page' => -1,
'no_found_rows'  => true,
'post_status'    => trash,
'cat'            => 3,
) );

// If posts were found count them else set count to 0.
$trashed_count = ( $trashed_posts ) ? count( $trashed_posts ) : 0;
0