posts_per_page nu funcționează
Iată interogarea mea personalizată:
<?php
$Poz = new WP_Query(array(
'posts_per_page' => 3,
'orderby' => 'date',
'order' => 'DESC',
'no_found_rows' => true,
'update_post_term_cache' => false,
'update_post_meta_cache' => false,
));
// Interogarea
$the_query = new WP_Query( $Poz );
// Bucla
while ( $the_query->have_posts() ) : $the_query->the_post(); ?>
<li><a href="<?php the_permalink(); ?>" title="Citește articolul <?php the_title(); ?>"><?php the_title(); ?></a></li>
<?php endwhile; wp_reset_postdata(); ?>
Am început să încerc să minimizez interogările mele. Am găsit câteva articole despre acest lucru. Această metodă înseamnă făcând doar două interogări.
Puteți verifica și aici.
Întrebarea este despre argumentul posts_per_page. De ce nu funcționează? Cred că este din cauza
'no_found_rows' => true,
acestui argument. Asta înseamnă că nu există paginare pentru interogare. Dar cum putem limita numărul de postări? sau ce putem folosi în loc de posts_per_page în această interogare. Să discutăm despre asta.
-- Actualizat --
Am schimbat metoda de interogare cu query_posts în loc de new WP_Query:
<?php
# Interogări WordPress în cache
# SE Disq : http://wordpress.stackexchange.com/questions/70424/posts-per-page-doesnt-work/70425
$Poz = array(
'posts_per_page' => 5,
'orderby' => 'date',
'order' => 'DESC',
'no_found_rows' => true,
'update_post_term_cache' => false,
'update_post_meta_cache' => false,
);
query_posts( $Poz ); while ( have_posts() ) : the_post(); ?>
<li><a href="<?php the_permalink(); ?>" title="Citește articolul <?php the_title(); ?>"><?php the_title(); ?></a></li>
<?php endwhile; wp_reset_query(); ?>
Da, folosește 'nopaging' => true
http://codex.wordpress.org/Class_Reference/WP_Query#Pagination_Parameters
$Poz = array(
'posts_per_page' => 3,
'orderby' => 'date',
'order' => 'DESC',
'update_post_term_cache' => false,
'update_post_meta_cache' => false,
'nopaging' => true,
);
$the_query = new WP_Query( $Poz );
'nopaging' => true este același lucru? Asta face mai multe interogări sau nu? De asemenea, am adăugat acea linie, dar rezultatele afișează numărul de postări ca și interogarea principală.
Fatih Toprak
nopaging îi spune WordPress: uite, știi că faci paginare implicit, dar oprește-te și dă-mi doar cele X postări. Deci, mai puține interogări, presupun.
Daniel Sachs
Sunt confuz, dar nici asta nu funcționează. :/
`<?php $Poz = new WP_Query(array( 'posts_per_page' => 5, 'orderby' => 'date', 'order' => 'DESC', 'no_found_rows' => true, 'update_post_term_cache' => false, 'update_post_meta_cache' => false, 'nopaging' => true, )); $the_query = new WP_Query( $Poz );
// The Loop
while ( $the_query->have_posts() ) : $the_query->the_post(); ?>
<li><a href="<?php the_permalink(); ?>" title="<?php the_title(); ?> yazısını oku."><?php the_title(); ?></a></li>
<?php endwhile; wp_reset_postdata(); ?>`
Fatih Toprak
Stai puțin. ăsta nu este motivul. Am ratat complet. ar trebui să fie: $Poz = array(
'posts_per_page' => 3,
'orderby' => 'date',
'order' => 'DESC',
'no_found_rows' => true,
'update_post_term_cache' => false,
'update_post_meta_cache' => false, 'nopaging' => true,
);
$the_query = new WP_Query( $Poz ); Parametrul $Poz ar trebui să fie argumentele pentru noua interogare WP_Query
Daniel Sachs
Încearcă te rog, nu funcționează. Toate articolele apar (: Interogarea nu ia în considerare numerele.
Fatih Toprak
Nu este vorba despre 'no_found_rows' => true, ci despre transmiterea argumentelor către new WP_Query
Daniel Sachs
Ar trebui să schimbăm metoda de interogare? De exemplu, să folosim get_posts(); sau ceva similar în loc de new Query?
Fatih Toprak
Depinde de tine. Eu aș folosi WP_Query. Ideea este că $Poz ar trebui să fie argumente pentru interogare, nu o nouă interogare.
Daniel Sachs
Cred că acum am înțeles. Iată noul cod: https://gist.github.com/3951155 Dar ar trebui să știi că atunci când adaugi parametrul no-pagging, nu funcționează din nou.
Fatih Toprak
hai să continuăm această discuție în chat
Fatih Toprak
Nu funcționează pentru mine. Folosesc WP Query în interiorul unui shortcode [posts] creat de mine. Atributele "posts_per_page" și "nopaging" sunt transmise ca atribute ale shortcode-ului (totul funcționează aici), dar îmi returnează TOATE postările.
Marco Panichi