Numărarea posturilor returnate de get_posts în script PHP extern
Folosesc WordPress dintr-un script PHP extern prin includerea fișierului wp-load.php
.
Toate funcțiile și totul funcționează după cum era de așteptat până acum, cu excepția unui lucru: nu pot să folosesc $wp_query->found_posts
după ce preiau posturile cu funcția get_posts()
.
Aveți vreun indiciu ce ar trebui să folosesc în schimb?
Mulțumesc!
Funcția WordPress get_posts()
creează propria sa instanță a WP_Query
care nu este accesibilă global:
function get_posts($args = null) {
// ... tăiat ...
$get_posts = new WP_Query;
return $get_posts->query($r);
}
așadar, ai putea încerca
$results = get_posts($args);
echo count($results);
pentru a obține numărul de obiecte post returnate de get_posts()
.
Exemplu de utilizare a clasei WP_Query():
Ai putea lua în considerare utilizarea directă a clasei WP_Query()
.
Iată un exemplu de utilizare:
<?php
// parametrii tăi de intrare:
$args = array(
'posts_per_page' => 10,
);
$my_query = new WP_Query( $args );?>
Postări găsite: <?php echo $my_query->found_posts;?>
<?php if ( $my_query->have_posts() ):?>
<ul>
<?php while ( $my_query->have_posts() ) : $my_query->the_post(); ?>
<li> <a href="<?php the_permalink(); ?>"><?php the_title(); ?></a></li>
<?php endwhile; ?>
</ul>
<?php endif; ?>
<?php wp_reset_postdata();?>
Folosim wp_reset_postdata()
la final pentru a restabili obiectul global $post
, deoarece îl modificăm prin metoda the_post()
.
Referințe:
http://codex.wordpress.org/Function_Reference/wp_reset_postdata

Mulțumesc pentru răspuns. Totuși, asta nu va funcționa cu adevărat - get_posts()
va returna numărul de elemente pe pagină pe care îl stabilesc eu. Dacă sunt 100 de articole în total și preiau 10, numărarea rezultatelor în acest fel tot 10 mi le va oferi. Sper că e clar.

O soluție improvizată ar fi să rulez interogarea de două ori, cu parametrul numberposts
setat la -1
și să număr aceste rezultate. Dar e groaznic din punct de vedere al performanței și mă îndoiesc că aceasta este soluția corectă.

O să încerc. Ar trebui să folosesc din nou $wp_query->found_posts
pentru a obține numărul total de rezultate?

ar fi mai bine să folosești altceva decât $wp_query
, de exemplu $my_query = new WP_Query($args);
și apoi $my_query->found_posts
și nu uita să folosești wp_reset_postdata()
la final dacă modifici obiectul global $post
.
