Підрахунок повідомлень циклу (WP_Query)?


10

Я спробував таким чином відобразити НІ допису:

<?php 
 $news_2 = new WP_Query( array ('post_type'=> 'jobs','posts_per_page'=> '10' , 'meta_key' => 'status_for_jobs','meta_value' => '1') );
  if ( $news_2->have_posts() ) { while ( $news_2->have_posts() ) { $news_2->the_post();

  $count = $news_2->post_count;

  ?>

    <li><h3><a href="<?php the_permalink(); ?>"><?php the_title(); ?></a></h3></li>



    <?php } } ?> <?php wp_reset_query(); ?> 

якщо НІ повідомлення = 0, мені потрібно відобразити це: -

<?php 
 $news_2 = new WP_Query( array ('post_type'=> 'jobs','posts_per_page'=> '10' , 'meta_key' => 'status_for_jobs','meta_value' => '1') );
  if ( $news_2->have_posts() ) { while ( $news_2->have_posts() ) { $news_2->the_post();

  $count = $news_2->post_count;

  if ($count  == '0') {

  ?>
  <li><h3><a href="javascript:void(0)">No Post</a></h3></li>

  <?php
  } else {
  ?> 
    <li><h3><a href="<?php the_permalink(); ?>"><?php the_title(); ?></a></h3></li>

<?php  }  ?>

    <?php } } ?> <?php wp_reset_query(); ?> 

Але замість загальної кількості публікацій я нічого не отримую.

Будь-які пропозиції виправити це?


2
Гей, хочете повернутися і зважитись на будь-яку з 2 відповідей, які були надані вам?
helgatheviking

Якщо будь-яка з відповідей була для вас корисною, тоді подумайте про її прийняття. Дивіться » Що робити, коли хтось відповість на моє запитання? «Та / або» Чому важливе значення має голосування? «, Більше інформації про модель розвитку WordPress можна отримати в довідковому центрі .
Миколай

Відповіді:


23

Деякі додаткові відомості, не потрібно рахувати повідомлення знову, тому що WP_Queryвже це зробили для вас. Щоб уточнити це, деяка інформація із довідника про класи, наведена у WP_Queryрозділі «Властивості»:

$ post_count
Кількість публікацій, що відображаються.

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

Що це означає, що це

  1. $post_countне дасть вам загальної кількості поштових повідомлень Це, швидше за все, дасть вам кількість публікацій, які ви визначили за допомогою post_per_pageпараметра, якщо у вас менше публікацій, ніж це, або ви знаходитесь на останній сторінці і залишилося лише менше публікацій.
  2. $found_postsможе використовуватися для отримання загальної кількості публікацій, пов’язаних із конкретним запитом. Тож немає потреби їх рахувати ще раз.

У вашому випадку ви можете отримати загальний підрахунок до такої $countзмінної:

$count = $news_2->found_posts;

Крім того, що @helgatheviking має рацію, що з того, що ви показали у своєму запитанні, вам не потрібні додаткові умови, а ви можете просто скористатися have_posts()методом у тому, що у вас є, для цього, як вона запропонувала.


4
+1 для властивості found_posts. Ви щодня дізнаєтесь щось нове! :)
helgatheviking

4

Вам не потрібно рахувати повідомлення, щоб показати щось інше, якщо жодної публікації не знайдено. Ви можете просто скористатися elseчастиною if($news_2->have_posts())чека.

$news_2 = new WP_Query( array ('post_type'=> 'jobs','posts_per_page'=> '10' , 'meta_key' => 'status_for_jobs','meta_value' => '1') );

if ( $news_2->have_posts() ) { 

    while ( $news_2->have_posts() ) { 

        $news_2->the_post();

    ?> 

    <li><h3><a href="<?php the_permalink(); ?>"><?php the_title(); ?></a></h3></li>

<?php  } 

    } else { ?>

    <li><h3>No Post</h3></li>

    <?php } ?> 

<?php wp_reset_query(); ?> 

Але якщо вам справді потрібно порахувати кількість повернених публікацій, ви можете використовувати

$count = count( $news_2->posts );
Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.