it-swarm.com.de

"Doppelte" Posts, die seit dem 3.1.2-Update angezeigt werden

Ich habe seit dem Upgrade auf WP 3.1.2 auf einer Clientsite einige Probleme festgestellt und habe diesen Abend auf Version 3.1.3 aktualisiert, nur um festzustellen, dass die Probleme weiterhin bestehen.

http://www.harmonyreins.com.au

Die Website ist für ein lokales Tierheim und jeder Beitrag repräsentiert ein anderes Tier, das im Tierheim lebt. Es gibt eine Reihe von Kategorien, die sich speziell auf die Tierart beziehen, wie Hunde, Katzen, Pferde sowie eine Kategorie "kürzlich adoptiert" und eine Kategorie "alte Freunde". Diese beiden letzten Kategorien wurden aus der vollständigen Beitragsliste (unter "Meet The Gang" in der Navigation) mit folgendem Code ausgeschlossen:

<?php query_posts($query_string . '&cat=-10,-12'); ?>

Das Upgrade auf WordPress 3.1.2 (oder das zugehörige Datenbank-Update, ich bin nicht sicher, welches) hat diesen Code überflüssig gemacht, und die ausgeschlossenen Beiträge wurden im Abschnitt "Meet The Gang" angezeigt. Ich habe mich nach dem Problem auf WordPress.org erkundigt und das folgende Update wurde vorgeschlagen:

Chris,

Ersetzen Sie das Folgende in der index.php Ihres Themas

<?php query_posts($query_string . '&cat=-10,-12'); ?>
<?php if (have_posts()) : ?>
<?php while (have_posts()) : the_post(); ?>

mit

<?php query_posts('cat=-10,-12'); ?>
<?php if ( have_posts() ) : while  ( have_posts() ) : the_post(); ?>

und du solltest gut sein.

Leider führte dies zu einem anderen Problem, bei dem die Beiträge von Seite eins der Liste auf Seite zwei ebenfalls angezeigt wurden (Sie können sehen, was ich meine, wenn Sie auf die Website gehen). Ich habe mehrere Paginierungs-Plugins ohne Erfolg ausprobiert. Unabhängig davon, auf welcher Seite Sie sich befinden, werden nur die ersten zehn Tiere angezeigt.

Mein Kunde war in Bezug auf dieses Problem wirklich gut, aber es dauert schon Wochen, und ich muss es unbedingt lösen. Ich hoffe, jemand kann mir helfen. :-)

1
Chris H

verwenden Sie global $query_string; vor der Abfrage? so dass die ganze Zeile wie folgt aussieht:

<?php global $query_string; query_posts($query_string . '&cat=-10,-12'); ?> 

alternativ können Sie versuchen:

<?php query_posts('cat=-10,-12&paged='.get_query_var('paged')); ?>
1
Michael

Ihre query_posts() sollte auch Informationen zu der Seite enthalten, auf der Sie sich befinden, z. B. durch Übergabe des Parameters paged.

Aber es ist ein Rezept für Probleme, wenn Sie mit Paging Ihre eigenen query_posts() machen. WordPress führt bereits eine Abfrage für Sie durch. Es ist besser, diese Abfrage zu ändern. Ansonsten ist es möglich, dass WordPress mehr oder weniger Beiträge findet als Ihre Anfrage, was das Paging durcheinander bringt.

Können Sie erklären, wie Ihre Meet the gang Seite funktioniert? Gibt es eine Seite mit einer speziellen Vorlage, die die Beiträge lädt? Oder arbeitest du mit einer statischen Startseite und ist dies die Beitragsseite? Ich würde mich in pre_get_posts einhängen und dort den richtigen Kategorieteil der Abfrage hinzufügen.

0
Jan Fabry