WP_Query che mostra TUTTI i post

2 ott 2014, 10:56:48
Visualizzazioni: 30.7K
Voti: 4

Non riesco a capire perché il mio WP_Query mostra sempre tutti i post pubblicati indipendentemente da ciò che inserisco negli argomenti.

<?php 

    $args = array('numberposts' => 1,
                    'meta_key' => 'display',
                    'meta_value' => 'about'
    );

    $about_preview_query = new WP_Query($args);

    if ($about_preview_query->have_posts()) {
        print "<h1>POST TROVATI</h1>";
    }

    while ($about_preview_query->have_posts()) {
        $about_preview_query->the_post();
        print "<h1>";
        the_title();

        print "</h1>";

    }
?>

Sto facendo qualcosa di sbagliato? Dopo aver letto la documentazione su WP_Query() non riesco a capire dove sbaglio, apprezzo qualsiasi aiuto possibile.

Aggiornamento

Ho provato questo codice e sto ancora ottenendo la stessa risposta. Tutti i post vengono restituiti nel loop.

    $args = array(
        'posts_per_page' => 1,
        'meta_query' => array(
            array(
                'key' => 'display',
                'value' => 'about',
                'compare' => '=',
             )
        ),
    );

Aggiornamento 2

Sembra che se stampo $about_preview_query->found_posts l'output sia 1. Quindi sospetto ci sia qualcosa che non va in come sto facendo il loop dei post:

<?php if ($about_preview_query->have_posts()): ?>

    <h1>Ha <?php print $about_preview_query->found_posts ?> Post</h1>

    <?php while ($about_preview_query->have_posts()): $about_preview_query->the_post(); ?>
        <h2><?php the_title(); ?></h2>
    <?php endwhile; ?>

<?php endif; ?>
6
Commenti

Hai provato a resettare i tuoi postdata?

Pieter Goosen Pieter Goosen
3 ott 2014 10:43:05

Ehi, grazie per la risposta. Ho letteralmente appena provato a mettere wp_reset_postdata(); sopra la mia query un secondo prima del tuo commento. Tuttavia ottengo lo stesso problema dove vengono visualizzati tutti i post.

Mark Winterbottom Mark Winterbottom
3 ott 2014 10:46:51

Sotto la tua query, fai un var_dump all'interno di un tag pre e vedi cosa viene restituito dalla tua query. Esempio ?><pre><?php var_dump($about_preview_query); ?></pre><?php

Pieter Goosen Pieter Goosen
3 ott 2014 10:51:12

Strano, anche se il conteggio found_posts è 1, il var dump suggerisce che la query sta restituendo tutti i post :S.

Mark Winterbottom Mark Winterbottom
3 ott 2014 10:57:36

Allora ci sono post iniettati da qualche altra parte. Da qualche parte stai eseguendo query personalizzate che non sono state reimpostate. Potrebbe persino provenire da un'istanza di pre_get_posts

Pieter Goosen Pieter Goosen
3 ott 2014 11:06:18

Ho pensato, giusto per verificare, rimuovi il tuo meta_query e lascia solo il parametro posts_per_page e testa per vedere se restituisce lo stesso comportamento. Verifica anche la presenza di filtri o funzioni personalizzate che potrebbero iniettare post nell'array restituito con il tuo post

Pieter Goosen Pieter Goosen
3 ott 2014 11:48:17
Mostra i restanti 1 commenti
Tutte le risposte alla domanda 3
0

È perché stai fornendo argomenti errati. Fornisci gli argomenti corretti per WP_Query().

Dai anche un'occhiata ai parametri dei campi personalizzati

Un'altra cosa, dovrai usare un codice come questo:

$args = array(
    'posts_per_page' => 5,
    'meta_query' => array(
        array(
            'key'     => 'display',
            'value'   => 'about',
            'compare' => '=', // (Leggi tutti gli operatori di confronto al link fornito)
        ),
    ),
);
2 ott 2014 11:25:18
0

Non esiste il parametro numberposts. Usa invece posts_per_page. Quindi il tuo codice diventerà...

<?php 

    $args = array(
        'posts_per_page' => 1,
        'meta_key' => 'display',
        'meta_value' => 'about'
    );

    $about_preview_query = new WP_Query($args);

    if ( $about_preview_query->have_posts() ) {
        print "<h1>POST TROVATI</h1>";
    }

    while ( $about_preview_query->have_posts() ) {
        $about_preview_query->the_post();
        print "<h1>";
        the_title();
        print "</h1>";
    }
?>
2 ott 2014 11:11:33
1

Tutto quello che devi fare è cambiare

'posts_per_page' => 1,

in

'posts_per_page' => -1,
26 giu 2017 15:53:27
Commenti

-1 restituirebbe tutti i post.

Picard Picard
26 giu 2017 17:09:01