Đếm các bài đăng của một vòng lặp (WP_Query)?


10

Tôi đã thử cách này để hiển thị NO của bài viết:

<?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(); ?> 

nếu NO của bài = 0 tôi cần hiển thị cái này: -

<?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(); ?> 

Nhưng thay vì tổng số bài viết, tôi không nhận được bất cứ điều gì.

Bất kỳ đề nghị để khắc phục điều này?


2
Này, muốn quay lại và cân nhắc một trong hai câu trả lời đã được cung cấp cho bạn không?
xe đạp

Nếu bất kỳ câu trả lời nào hữu ích cho bạn, thì hãy cân nhắc việc chấp nhận nó. Xem » Tôi nên làm gì khi ai đó trả lời câu hỏi của tôi? «Và / hoặc» Tại sao bỏ phiếu quan trọng? «, Thông tin thêm về mô hình Phát triển WordPress có sẵn tại trung tâm trợ giúp .
Nicolai

Câu trả lời:


23

Một số thông tin bổ sung, không cần phải đếm lại bài viết, vì WP_Queryđã làm điều đó cho bạn. Để làm rõ điều này, một số thông tin từ Tham chiếu lớp WP_Queryđược tìm thấy trong phần »Thuộc tính«:

$ post_count
Số lượng bài viết đang được hiển thị.

$ Found_posts
Tổng số bài đăng được tìm thấy khớp với các tham số truy vấn hiện tại

Điều này có nghĩa là gì

  1. $post_countsẽ không cung cấp cho bạn tổng số bài. Nó rất có thể sẽ cung cấp cho bạn số lượng bài đăng bạn đã xác định với post_per_pagetham số, trừ khi bạn có ít bài đăng hơn số đó hoặc bạn ở trang cuối cùng và chỉ còn ít bài đăng hơn.
  2. $found_postscó thể được sử dụng để có được tổng số bài đăng liên quan đến một truy vấn cụ thể. Vì vậy, không cần phải đếm chúng một lần nữa.

Trong trường hợp của bạn, bạn có thể lấy tổng số vào $countbiến của mình như sau:

$count = $news_2->found_posts;

Bên cạnh đó, @rcgatheviking cũng đúng, từ những gì bạn đã thể hiện trong câu hỏi của mình, bạn không cần thêm một điều kiện, mà chỉ có thể sử dụng have_posts()phương pháp, trong điều kiện bạn đã có, vì điều đó, như cô ấy đề xuất.


4
+1 cho thuộc tính Found_posts. Bạn học được điều gì mới mỗi ngày! :)
xe đạp vào

4

Bạn không cần phải đếm các bài đăng để hiển thị một cái gì đó khác nhau nếu không tìm thấy bài viết. Bạn chỉ có thể sử dụng elsemột phần của if($news_2->have_posts())séc của bạn .

$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(); ?> 

Nhưng nếu bạn thực sự cần đếm số lượng bài viết được trả về, bạn có thể sử dụng

$count = count( $news_2->posts );
Khi sử dụng trang web của chúng tôi, bạn xác nhận rằng bạn đã đọc và hiểu Chính sách cookieChính sách bảo mật của chúng tôi.
Licensed under cc by-sa 3.0 with attribution required.