Ich möchte einen einzelnen Beitrag auf meiner Startseite haben (immer den neuesten), aber normales Paging funktionieren lassen. Die Titelseite hat also Beitrag 1, die nächste Seite sollte Beitrag 2-11 haben (1-10 ist auch in Ordnung), dann 12-21 oder 11-20 und so weiter. Ich weiß, dass ich die Anzahl der Beiträge je nach Kontext ändern kann. Wenn Sie dies jedoch auf der Startseite auf "1" setzen, wird auf den weiteren Seiten auch nur ein Beitrag angezeigt.
Mein Hauptproblem ist, dass /page/2/
so weiter funktioniert, aber /page/1/
immer zur realen Homepage weiterleitet /
. Dies bedeutet, dass die Beiträge 2-10 immer übersprungen werden, da Seite 2 11-20 zeigt. Ich löse dieses Problem derzeit , indem ich auf mein Archiv verlinke. Dies ist jedoch nicht ideal, wenn Sie zu den ersten Posts des Jahres kommen und es weniger Posts gibt und keine offensichtliche Möglichkeit, fortzufahren.
quelle
is_front_page()
mitis_archive()
oderis_category()
, ich glaube , Sie bekommen können , wo Sie sein müssen.Ok, vielleicht ist dies eine seltsame oder komplizierte Methode, aber ich hatte ein ähnliches Problem (ich wollte einen Begrüßungstext und die drei neuesten Beiträge einer bestimmten Kategorie auf der Startseite anzeigen. Also habe ich:
sieht so aus: http://hinek.de (Seite ist auf Deutsch, sorry)
Wenn dies der richtige Weg für Sie sein könnte und Sie weitere Informationen oder ein Codebeispiel für die Seitenvorlage benötigen, kommentieren Sie und ich werde diesen Beitrag bearbeiten.
quelle
Ich gehe davon aus, dass Sie Wordpress 3.0.x ausführen.
Es ist einfach, nur einen Beitrag (in welcher Kategorie auch immer) auf der Startseite anzuzeigen. Verwenden Sie
query_posts('post_per_page=1')
in Ihrerhome.php
Datei, anstatt aufzurufenget_template_part('loop')
.Danach den normalen Paging-Methoden zu folgen, ist etwas schwierig. In Ihrer
loop.php
Datei schlage ich vor,<?php global $paged; ?>
vor die<?php if (have_posts()) : ?>
Anweisung zu setzen und die$paged
Variable undquery_posts()
Funktion zu verwenden, um Ihre Abfrage so zu ändern, dass die richtigen Beiträge angezeigt werden.Ihre
loop.php
Datei würde ungefähr so aussehen (Hinweis: nicht getestet):Ich habe es
$paged - 1
einfach verwendet, weil auf Seite 2 die Beiträge 1 bis 10 und auf Seite 3 die Beiträge 11 bis 20 usw. angezeigt werden.quelle
paged
Parameters wird nichts anderes beschädigt, wie dasnext_posts_link
?. Vielleicht ist es besser, die Abfrage impre_get_posts
Hook zu ändern , damit ich keine neue Abfrage erstelle? Und ja, das ist WP 3.next_posts_link
. Der einzige Weg, dies herauszufinden, besteht natürlich darin, es tatsächlich zu versuchen.paged
Parameter impre_get_posts
Hook zu bearbeiten ,redirect_canonical
tritt er ein und möchte die URL durch den neuenpaged
Parameter ersetzen . In diesem Fall kann ich Umleitungen deaktivieren,next_posts_link
verwende jedoch eine globale$paged
Variable, die auf den neuen Wert gesetzt wird, aber ich weiß nicht, mit welchem Code, daher ist sie falsch.pre_get_posts
Haken nicht allzu vertraut , daher kann ich dort nicht viel helfen. Versuchen Sie auch, die$paged
Variable direkt zu ändern (z.$paged = $paged - 1)
B. :), wenn Sie sich Sorgen machennext_posts_link()
.Diese Frage ist etwas alt, aber für diejenigen, die dies in der Neuzeit finden, sollten Sie niemals query_posts aufrufen . Aus dem Wordpress-Codex:
Stattdessen sollten Sie den
pre_get_posts
Hook in functions.php wie folgt verwenden:Beachten Sie jedoch, dass in einigen Fällen (z. B. beim Anpassen von Post-Offsets) die Verwendung eines
pre_get_posts
Hakens Ihre Paginierung beeinträchtigen kann. Dies zu beheben ist nicht besonders schwierig, aber es ist etwas, das man beachten muss. Es gibt ein Beispiel dafür , wie dies zu beheben hier .quelle