На странице вывожу произвольные посты циклом WP_Query.
Необходимо получить все посты с определенными параметрами, а уже потом выполнить подсчет через $query->found_posts;
Но тут особенность, надо посчитать:
сколько постов с 'comment_status' => 'open'
сколько с 'comment_status' => 'closed'
.
А для вывода сами постов еще раз результат первого запроса отфильтровать и вывести только, например, с 'comment_status' => 'open'
.
Это можно сделать в рамках одного цикла? Конечно, можно по простому наплодить циклов, но так себе решение.
<div class="cases_counts">
<?php
$current_user = wp_get_current_user();
$current_user_id = $current_user->ID;
// Запрос к БД
$args = array(
'posts_per_page' => '-1',
'post_type' => 'cases',
'author' => $current_user_id,
);
$query = new WP_Query( $args );
?>
<div class="cases_count">Открытые: <?php echo $query->found_posts; ?></div>
<div class="cases_count">Закрытые: </div>
</div>
<div class="sidebar">
<!-- тут боковая панель -->
</div>
<div class="content">
<div class="case_list">
<?php if ( $query->have_posts() ) {
while ( $query->have_posts() ) {
$query->the_post();
if ( 'open' == $post->comment_status ) { // если комментарии открыты
echo $query->found_posts;
echo '<div class="case_item">
<a href="' . get_the_permalink() . '">
<span class="case_item_title">' . get_the_title() . '</span>
<span class="case_item_id">Идентификатор: ' . get_the_ID() . '</span>
</a>
</div>';
}
}
} else {
$item = '<div class="nocases">Обращений нет.</div>';
} ?>
</div>
</div>
<?php wp_reset_postdata(); ?>
Используйте rewind_posts(). Постройте первый цикл как обычно, потом rewind и снова цикл. Всё будет в памяти, никаких лишних обращений к базе.
Выглядеть код должен примерно так:
<div class="cases_counts">
<?php
global $post;
$current_user = wp_get_current_user();
$current_user_id = $current_user->ID;
// Запрос к БД
$args = array(
'posts_per_page' => '-1',
'post_type' => 'cases',
'author' => $current_user_id,
);
$query = new WP_Query( $args );
$open = 0;
$closed = 0;
if ( $query->have_posts() ) {
while ( $query->have_posts() ) {
$query->the_post();
$check = ( 'open' === $post->comment_status );
if ( $check ) {
$open ++;
} else {
$closed ++;
}
}
}
rewind_posts();
?>
<div class="cases_count">Открытые: <?php echo $open; ?></div>
<div class="cases_count">Закрытые: <?php echo $closed; ?></div>
</div>
<div class="sidebar">
<!-- тут боковая панель -->
</div>
<div class="content">
<div class="case_list">
<?php
if ( $query->have_posts() ) {
while ( $query->have_posts() ) {
$query->the_post();
if ( 'open' === $post->comment_status ) { // если комментарии открыты
echo '<div class="case_item">
<a href="' . get_the_permalink() . '">
<span class="case_item_title">' . get_the_title() . '</span>
<span class="case_item_id">Идентификатор: ' . get_the_ID() . '</span>
</a>
</div>';
}
}
} else {
$item = '<div class="nocases">Обращений нет.</div>';
}
?>
</div>
</div>
<?php
wp_reset_postdata();
Оборудование для ресторана: новинки профессиональной кухонной техники
Частный дом престарелых в Киеве: комфорт, забота и профессиональный уход
пытаюсь получить исходник страницы, но страница скачивается без той таблицы которая мне нужна, как я понял она потом подгружаетсякак мне...
Речь о произвольном типе постовЕсть переменная, содержащая некое число, например