Menghitung posting loop (WP_Query)?

10

Saya mencoba cara ini untuk menampilkan TIDAK dari pos:

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

jika TIDAK posting = 0 saya harus menampilkan ini: -

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

Tapi bukannya total posting, saya tidak mendapatkan apa-apa.

Ada saran untuk memperbaikinya?

pengguna49575
sumber
2
Hei, mau kembali dan menimbang salah satu dari 2 jawaban yang telah diberikan kepada Anda?
Helgatheviking
Jika ada jawaban yang membantu Anda, pertimbangkan untuk menerimanya. Lihat » Apa yang harus saya lakukan ketika seseorang menjawab pertanyaan saya? «Dan / atau» Mengapa memilih itu penting? «, Informasi lebih lanjut tentang model Pengembangan WordPress tersedia di pusat bantuan .
Nicolai

Jawaban:

23

Beberapa informasi tambahan, tidak perlu menghitung posting lagi, karena WP_Querysudah melakukannya untuk Anda. Untuk memperjelas hal ini, beberapa informasi dari Referensi Kelas WP_Queryseperti yang ditemukan di bagian »Properti«:

$ post_count
Jumlah posting yang ditampilkan.

$ found_posts
Jumlah total pos yang ditemukan cocok dengan parameter kueri saat ini

Ini artinya

  1. $post_counttidak akan memberi Anda jumlah total pos. Kemungkinan besar akan memberi Anda jumlah posting yang Anda tentukan dengan post_per_pageparameter, kecuali Anda memiliki lebih sedikit posting dari itu atau Anda berada di halaman terakhir dan hanya ada lebih sedikit posting yang tersisa.
  2. $found_postsdapat digunakan untuk mendapatkan jumlah total pos yang terkait dengan permintaan tertentu. Jadi tidak perlu menghitungnya lagi.

Dalam kasus Anda, Anda bisa memasukkan jumlah total ke $countvariabel Anda seperti ini:

$count = $news_2->found_posts;

Selain itu @helgatheviking benar bahwa, dari apa yang Anda tunjukkan dalam pertanyaan Anda, Anda tidak memerlukan persyaratan tambahan, tetapi cukup menggunakan have_posts()metode ini, dalam persyaratan yang sudah Anda miliki, untuk itu, seperti yang disarankannya.

Nicolai
sumber
4
+1 untuk properti found_posts. Anda belajar sesuatu yang baru setiap hari! :)
helgatheviking
4

Anda tidak perlu menghitung posting untuk menampilkan sesuatu yang berbeda jika tidak ada posting yang ditemukan. Anda bisa menggunakan elsebagian dari if($news_2->have_posts())cek Anda .

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

Tetapi jika Anda benar-benar perlu menghitung jumlah posting yang dikembalikan, Anda dapat menggunakannya

$count = count( $news_2->posts );
helgatheviking
sumber