posts_per_page non funziona

25 ott 2012, 09:36:39
Visualizzazioni: 33.4K
Voti: 1

Ecco la mia query personalizzata:

            <?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,
                ));
            // La Query
            $the_query = new WP_Query( $Poz );

            // Il Loop
            while ( $the_query->have_posts() ) : $the_query->the_post(); ?>
            <li><a href="<?php the_permalink(); ?>" title="Leggi l'articolo <?php the_title(); ?>"><?php the_title(); ?></a></li>
            <?php endwhile; wp_reset_postdata(); ?>

Ho iniziato cercando di minimizzare le mie query. Ho trovato alcuni articoli a riguardo. Questo metodo significa eseguire solo due query.

Puoi controllarlo anche qui.

La domanda riguarda l'argomento posts_per_page. Perché non funziona? Penso sia a causa di

'no_found_rows' => true,

questo argomento. Significa che non c'è paginazione per la query. Ma come possiamo limitare il numero di post? O cosa possiamo usare invece di posts_per_page in questa query? Parliamone.

-- Aggiornamento --

Ho cambiato il metodo della query usando query_posts invece di new WP_Query:

<?php

# Query WordPress in 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="Leggi l'articolo <?php the_title(); ?>"><?php the_title(); ?></a></li>
<?php  endwhile;  wp_reset_query(); ?>
0
Tutte le risposte alla domanda 1
12

Sì, usa '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 ott 2012 09:48:27
Commenti

'nopaging' => true è la stessa cosa? Questo aumenta il numero di query o no? Inoltre ho aggiunto quella riga ma i risultati mostrano lo stesso numero di post come la query principale

Fatih Toprak Fatih Toprak
25 ott 2012 09:50:31

nopaging dice a WordPress: senti amico, so che fai il paging di default, ma smettila e dammi semplicemente i miei X post. Quindi, meno query, suppongo.

Daniel Sachs Daniel Sachs
25 ott 2012 09:55:26

Sono confuso ma non funziona comunque. :/

`<?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 ott 2012 09:58:17

Aspetta un attimo. Questo non è il motivo. Mi sono completamente perso. Dovrebbe essere: $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 ); Il $Poz dovrebbe essere args per il new WP_Query

Daniel Sachs Daniel Sachs
25 ott 2012 10:02:00

Provalo per favore non funziona. Tutti i post arrivano (: La query non rispetta i numeri.

Fatih Toprak Fatih Toprak
25 ott 2012 10:06:47

Non è questione di 'no_found_rows' => true, ma di passare gli argomenti a new WP_Query

Daniel Sachs Daniel Sachs
25 ott 2012 10:10:59

Dovremmo cambiare il metodo di query? Ad esempio usando get_posts(); o qualcos'altro invece di new Query?

Fatih Toprak Fatih Toprak
25 ott 2012 10:13:46

Dipende da te. Io userei WP_Query. Il punto è che $Poz dovrebbe essere gli argomenti per la query, non una nuova query.

Daniel Sachs Daniel Sachs
25 ott 2012 10:19:08

Ora credo di aver capito. Ecco il nuovo codice: https://gist.github.com/3951155 Ma dovresti sapere che quando aggiungi il parametro no-pagging non funziona di nuovo.

Fatih Toprak Fatih Toprak
25 ott 2012 10:26:57

continuiamo questa discussione in chat

Fatih Toprak Fatih Toprak
25 ott 2012 10:29:46

Non funziona per me. Utilizzo WP Query all'interno di uno shortcode [posts] creato da me. Gli attributi "posts_per_page" e "nopaging" vengono passati come attributi dello shortcode (tutto funziona qui) ma mi restituisce TUTTI i post.

Marco Panichi Marco Panichi
19 gen 2016 18:59:41

RISOLTO! Il problema era che avevo alcuni post sticky. Quindi la query funzionante per me ha 'posts_per_page'=>3 e 'ignore_sticky_posts'=>true.

Marco Panichi Marco Panichi
19 gen 2016 19:14:38
Mostra i restanti 7 commenti