Bir döngünün gönderilerini sayıyor musunuz (WP_Query)?


10

Ben yazı NO görüntülemek için bu şekilde denedim:

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

sonrası NO = 0 ise bunu görüntülemek gerekir: -

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

Ama mesajların toplamı yerine, hiçbir şey almıyorum.

Bunu düzeltmek için herhangi bir öneriniz var mı?


2
Hey, geri gelip size verilen 2 cevaptan birini tartmak mı istiyorsunuz?
helgatheviking

Eğer herhangi bir cevap size yardımcı oldu sonra kabul düşünün. Bakınız » Birisi sorumu yanıtladığında ne yapmalıyım? «Ve / veya» Oylama neden önemlidir? «, WordPress Geliştirme modeli hakkında daha fazla bilgiyi yardım merkezinde bulabilirsiniz .
Nicolai

Yanıtlar:


23

Bazı ek bilgiler, yayınları tekrar saymaya gerek yok, çünkü WP_Queryzaten sizin için bunu yaptı. Bunu açıklığa kavuşturmak için WP_Query, »Özellikler« bölümünde bulunan Sınıf Referansındaki bazı bilgiler :

$ post_count
Görüntülenen yayın sayısı.

$ found_posts
Geçerli sorgu parametreleriyle eşleşen toplam yayın sayısı

Bunun anlamı

  1. $post_countsize toplam yayın sayısını vermeyecektir. Bundan post_per_pagedaha az gönderi yoksa veya son sayfada değilseniz ve yalnızca daha az gönderi kalmadıkça , büyük olasılıkla parametre ile tanımladığınız gönderi sayısını verecektir .
  2. $found_postsbelirli bir sorguyla ilgili toplam yayın sayısını elde etmek için kullanılabilir. Yani onları tekrar saymaya gerek yok.

Sizin durumunuzda $countdeğişkeninizdeki toplam sayıyı şu şekilde alabilirsiniz :

$count = $news_2->found_posts;

Bunun yanı sıra, @helgatheviking, sorunuzda gösterdiğiniz şeyden fazladan bir şartlı olmak zorunda değilsiniz, ancak have_posts()yöntemi, zaten sahip olduğunuz koşulda, önerdiği gibi kullanabilir.


4
Found_posts özelliği için +1. Her gün yeni bir şeyler öğreniyorsun! :)
helgatheviking

4

Hiçbir yayın bulunmazsa farklı bir şey göstermek için yayınları saymanıza gerek yoktur. Çekinizin sadece bir elsekısmını kullanabilirsiniz 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(); ?> 

Ancak, döndürülen yayın sayısını gerçekten saymanız gerekiyorsa,

$count = count( $news_2->posts );
Sitemizi kullandığınızda şunları okuyup anladığınızı kabul etmiş olursunuz: Çerez Politikası ve Gizlilik Politikası.
Licensed under cc by-sa 3.0 with attribution required.