posts_per_page nu funcționează

25 oct. 2012, 09:36:39
Vizualizări: 33.4K
Voturi: 1

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(); ?>
0
Toate răspunsurile la întrebare 1
12

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 );
25 oct. 2012 09:48:27
Comentarii

'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 Fatih Toprak
25 oct. 2012 09:50:31

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 Daniel Sachs
25 oct. 2012 09:55:26

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 Fatih Toprak
25 oct. 2012 09:58:17

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 Daniel Sachs
25 oct. 2012 10:02:00

Încearcă te rog, nu funcționează. Toate articolele apar (: Interogarea nu ia în considerare numerele.

Fatih Toprak Fatih Toprak
25 oct. 2012 10:06:47

Nu este vorba despre 'no_found_rows' => true, ci despre transmiterea argumentelor către new WP_Query

Daniel Sachs Daniel Sachs
25 oct. 2012 10:10:59

Ar trebui să schimbăm metoda de interogare? De exemplu, să folosim get_posts(); sau ceva similar în loc de new Query?

Fatih Toprak Fatih Toprak
25 oct. 2012 10:13:46

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 Daniel Sachs
25 oct. 2012 10:19:08

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 Fatih Toprak
25 oct. 2012 10:26:57

hai să continuăm această discuție în chat

Fatih Toprak Fatih Toprak
25 oct. 2012 10:29:46

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 Marco Panichi
19 ian. 2016 18:59:41

REZOLVAT! Problema era că aveam câteva postări fixate (sticky). Deci interogarea care funcționează pentru mine are 'posts_per_page'=>3 și 'ignore_sticky_posts'=>true.

Marco Panichi Marco Panichi
19 ian. 2016 19:14:38
Arată celelalte 7 comentarii