Begrenzen Sie die Anzahl der Beiträge aus einer bestimmten Kategorie in index.php

Ich hatte mehrere Anfragen von verschiedenen Kunden, um herauszufinden, wie man ihre Blog (index.php) oder Custom Post Type Archive Seite ändern kann, um weniger Beiträge aus einer bestimmten Kategorie anzuzeigen.

Ein gutes Beispiel wäre ein Kunde, der über ein automatisches Entsendungssystem von sozialen Medien (Facebook, Twitter, Instagram) verfügt, das auf seinem WordPress-Blog in der Kategorie “Social Media” veröffentlicht wird. Wenn dieser Kunde viel in soziale Medien schreibt und aktuelle Beiträge in seinem Blog sparsam schreibt, dominieren die Social-Media-Beiträge ihren Blog (zumindest auf der ersten Seite). In diesem Fall muss der Client die Beiträge in der Kategorie “Social Media” pro Seite im Blog beschränken.

Ich habe mit pre_get_posts , die Abfrage zu ändern, aber ich finde keine Beispiele dafür, wie man die Anzahl der Beiträge pro Seite einer bestimmten Kategorie auf der Seite index.php begrenzen kann.

Ich habe darüber nachgedacht, zwei separate Abfragen (eine für die Kategorie “Social Media” und eine andere, die diese Kategorie ausschließt) zu machen und sie in einer bestimmten Reihenfolge zu kombinieren. Mit dieser Methode dachte ich, dass ich eine Schleife erstellen könnte, die die IDs der 2 Arrays (in 1) kombiniert, so dass jedes vierte Element aus der Kategorie “Social Media” käme.

Das hört sich für mich nach ein bisschen Hacking an, und ich würde gerne herausfinden, ob es einen eleganteren / weniger chaotischen Weg gibt, dies zu erreichen.

Solutions Collecting From Web of "Begrenzen Sie die Anzahl der Beiträge aus einer bestimmten Kategorie in index.php"

Das Problem dabei ist, wie es oft der Fall ist, nicht nur die Homepage, sondern die kontinuierliche Seitenumbruch.

Nehmen wir an, wir beginnen mit 10 Posts auf der Homepage und 5 von ihnen Social. Kunde sagt, dass sie 2 weniger von Sozialem mögen würden.

Wir können sie leicht genug loswerden, aber jetzt müssen wir zwei weitere Beiträge von der zweiten Seite “ausleihen”. Also machen wir das.

Aber der nächste Benutzer klickt auf die zweite Seite. Anstelle von einfachen “nächsten 10 Posts” ist unsere Logik jetzt “10 Posts, nach den ersten 10, aber Anzeigen von sozialen Posts, die wir dort nicht angezeigt haben und keine normalen Posts anzeigen, welche erste Seite von dieser Post genommen hat”. Entlang dieser Linien.

Der nächste Benutzer klickt auf Seite drei … Es verbindet sich.

Die einzige vernünftige Lösung sind tatsächlich zwei Schleifen. Wir verlassen normale Posts und Paginierung bis zur Hauptschleife und fügen alles dazwischen hinzu (nicht unbedingt Postarray gerade modifizierend, kann nur nach jedem N-ten post in loop zählen und etwas tun) oder sie separat als adiides anzeigen.