2016-11-15 2 views
0

Ich sehe ein seltsames Verhalten, das ich in einer kategoriebasierten Vorlagenschleife nicht erklären kann.

ich habe ein benutzerdefinierten Abfragefilter für die Kategorie Vorlage, ein paar benutzerdefinierten Post-Typen Vorwählen zur Abfrage für:

add_filter('pre_get_posts', 'cust_posts_collection'); 
function cust_posts_collection($query) { 
    if ((is_category() && $query->is_main_query())) 
    $query->set('post_type', array('cust_post_type_1', 'cust_post_type1')); 
    return $query; 
} 

dies in einem richtigen $ wp_query Objekt führt unter anderem eine Reihe von Stellen enthielt. Sagen wir für eine gegebene Kategorie x gibt es 4 Beiträge. wenn ich $ wp_query var_dump kann ich

["posts"]=>&array(4) 

überprüfen, und ich kann alle Beiträge und deren Daten in der Deponie sehen.

Wenn jedoch i Schleife dann über das Objekt:

<?php if ($wp_query->have_posts()) while ($wp_query->have_posts()) : $wp_query->the_post(); 
    var_dump($post); 
endwhile; ?> 

sehe ich zwei Pfosten ist.

Wie ist das möglich?

Gibt es Konfigurationseinstellungen für die Schleifenfunktionen, die ich vermisse?

+0

Können Sie die gesamte Datei mit Kontext posten? Womit weisen Sie die Abfrage zu? wp_query? – Wold

Antwort

0

konnte ich den Fehler beheben:

es stellt sich heraus, dass es eine weitere Schleife im Header war teilweise, vor der Schleife den Fehler auszusetzen.

die erste Schleife hatte eine break Anweisung direkt nach einer if Bedingung - die Idee: Finden Sie das erste Vorkommen eines bestimmten benutzerdefinierten Beitragstyp und dann aus der Schleife ausbrechen.

das Problem: Diese Pause hat eine globale Post-Index-Variable oder etwas in diesen Zeilen nicht richtig zurückgesetzt. Die nächste Schleife hat dann einen falschen Status des Indexes, was dazu führte, dass sie so viele Anfangsposts wie in der vorherigen Schleife durchlaufen hat.

hinzufügen rewind_posts() kurz vor der Pause das für mich behoben.

Verwandte Themen