Отримайте кількість повідомлень поточного циклу при використанні декількох запитів на одній сторінці


10

Я намагаюся отримати кількість поточних публікацій всередині циклу. Я використовую кілька циклів на одній сторінці в своїй темі. Поки що я маю:

$my_post_count = $wp_query->post_count;

Але коли я друкую $ my_post_count, він повертає номер усіх публікацій на моєму WP-сайті. Чи може це мати щось спільне з використанням декількох запитів на одній сторінці? Я намагався використовувати wp_reset_query після кожного циклу, щоб переконатися, що я не відкидав речі таким чином. Що я роблю неправильно?

Відповіді:


29

$wp_query утримуйте основну петлю сторінки і її не слід використовувати для створення кількох циклів.

Якщо ви використовуєте новий WP_Queryоб'єкт, то ваша змінна, яка містить його, матиме відповідно до кількості:

$my_query = new WP_Query();
// stuff
$count = $my_query->post_count;

Якщо ви використовуєте, get_posts()то WP_Queryоб'єкт недоступний, і вам слід просто порахувати повернутий набір:

$posts = get_posts();
$count = count($posts);

Примітка: Якщо ви знаходитесь у головному циклі, ви можете отримати доступ WP_Queryчерезglobal $wp_query
mrmadhat

5

Я вважаю, що post_count зберігається в глобальному масштабі, тому перед користувацьким циклом слід встановити його 0, оскільки ви можете використовувати його поза циклом, але це залежить від того, як ви структуруєте кілька запитів, можливо ви можете додати їх до своєї публікації ?

Є ще один спосіб, який я використовую в циклі, який рахує повідомлення current_post + 1, наприклад,.

<?php $my_query = new WP_Query();?>
     <?php if ($my_query->have_posts()) :while ($my_query->have_posts()) : $my_query->the_post();

           $count_posts = $my_query->current_post + 1; //counts posts in loop

     endwhile;?>

2

Альтернативним рішенням із використанням WP_Query було б:

           <?php 
               $args = array(
               'post_type' => 'post'
               );
            $the_query = new WP_Query( $args );
            $totalpost = $the_query->found_posts; 
            ?> 

0

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

<?php  global $wp_query
   echo $wp_query->found_posts; ?>
Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.