กำลังนับโพสต์ของการวนซ้ำ (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
เฮ้อยากกลับมาและชั่งน้ำหนักทั้งสองคำตอบที่ให้ไว้กับคุณ?
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 );
โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.