Hinzufügen eines Offsets zu einer Kategorieschleife in WordPress

Lesezeit: 3 Minuten

In der category.php eines WordPress-Themes haben Sie die folgende Schleife:

if ( have_posts() ) : while ( have_posts() ) : the_post(); 
// output posts
endwhile; endif;

Wie gehen Sie vor, um genau dieselbe Schleife auszugeben, jedoch mit einem Versatz? Ich habe festgestellt, dass Sie die Schleife ändern können, indem Sie a ausführen

query_posts('offset=4');

Aber dies setzt die gesamte Schleife zurück und der Offset funktioniert, zeigt aber alle Posts aus jeder Kategorie an, sodass ich den Eindruck bekomme, dass query_posts die Schleife vollständig zurücksetzt und dies nur mit dem von Ihnen hinzugefügten Filter tut. Gibt es eine Möglichkeit, die Schleife zu sagen:

“Mach genau das, was du tust, außer dass der Versatz es zu 4 macht”

Ist das möglich?

Vielen Dank!

  • Geben Sie den Originalcode für Ihre an query_posts Parameter

    – Rahil Wazir

    17. Januar 2014 um 21:04 Uhr

  • Es gibt keine, WordPress lädt category.php und das ist die Schleife (es gibt keine query_posts() Zeilen)

    – Benutzer28240

    17. Januar 2014 um 21:04 Uhr


  • Sie müssen die Kategorie-ID angeben query_posts wie cat=3

    – Rahil Wazir

    17. Januar 2014 um 21:06 Uhr


  • Ich dachte darüber nach, alle Filter manuell hinzuzufügen, aber ich fragte mich, ob es möglich wäre, einfach einen einzelnen Filter (und den bereits gesetzten, falls vorhanden, zu überschreiben) an die vorhandene Schleife anzuhängen.

    – Benutzer28240

    17. Januar 2014 um 21:08 Uhr

Benutzer-Avatar
Rahil Wazir

Erstmal nicht verwenden query_posts() siehe hier stattdessen verwenden WP_Abfrage

Versuche dies:

//To retrieve current category id dynamically
$current_cat = get_the_category();
$cat_ID = $current_cat[0]->cat_ID;

$loop = new WP_Query(array(
    'offset' => 4,         //Set your offset
    'cat' => $cat_ID,      //The category id
));

if ( $loop->have_posts() ) : while ( $loop->have_posts() ) : $loop->the_post(); 
// output posts
endwhile; endif;

Ja, wie WordPress sagte:

Das Festlegen des offset-Parameters überschreibt/ignoriert den paged-Parameter und unterbricht die Paginierung (Klicken Sie hier für eine Problemumgehung)

Befolgen Sie einfach die Anweisungen zur Umgehung der Paginierung und Sie können loslegen.

  • Dies funktioniert, unterbricht aber die Paginierung der Kategorie, und ich denke, das liegt daran, dass die Paginierung nur mit der Art der Abfrage “query_posts” funktioniert. Gibt es eine Möglichkeit, WP_query zu verwenden, aber trotzdem eine funktionierende Paginierung zu haben?

    – Benutzer28240

    17. Januar 2014 um 22:14 Uhr

  • @ user28240 Es ist kein Problem mit WP_Query. Einstellung offset Parameter unterbricht die Paginierung mit beiden Methoden. Siehe meine Bearbeitung!

    – Rahil Wazir

    17. Januar 2014 um 22:23 Uhr

  • Ich bin jedoch gerade auf ein letztes Problem mit dieser Lösung gestoßen, und das ist, dass die Lösung funktioniert, aber sie wendet den Offset auch auf jedes einzelne Widget in der Seitenleiste an, sodass das Widget „Neueste Beiträge“, das auch die neue wp_query verwendet, einen Offset hat jetzt 🙁 Wissen Sie, ob Sie diese Funktion auf pre_get_posts() auf eine bestimmte Abfrage anwenden können und nicht auf alle?

    – Benutzer28240

    17. Januar 2014 um 22:55 Uhr

  • Ich glaube, ich habe es herausgefunden, die add_Action direkt vor die wp_query verschoben und dann direkt danach eine remove_action ausgeführt (die neue wp_query in die Aktion add/remove gepackt) und es scheint zu arbeiten, lassen Sie mich bitte wissen, ob dies aus irgendeinem Grund schlecht ist! Danke für die Hilfe

    – Benutzer28240

    17. Januar 2014 um 23:09 Uhr

  • Können Sie bitte eine vollständige / vollständigere Lösung posten? Ich stehe vor der gleichen Situation, bin sehr neu in WordPress und habe Schwierigkeiten zu sehen, wie man dynamische Offset-Werte mithilfe der Anweisungen von diesem Link anwendet 🙁

    – Chris Edwards

    9. August 2014 um 13:25 Uhr

1298520cookie-checkHinzufügen eines Offsets zu einer Kategorieschleife in WordPress

This website is using cookies to improve the user-friendliness. You agree by using the website further.

Privacy policy