Ich verwende diesen Code, aber sobald ich auf den Link zum nächsten Beitrag / vorherigen Beitrag klicke, werde ich zum nächsten Beitrag / vorherigen Beitrag einer anderen Kategorie weitergeleitet.
previous_post_link( '%link', 'Prev post in category', $in_same_term = true );
next_post_link( '%link', 'Next post in category', $in_same_term = true );
Ich versuche, mein Problem mithilfe dieses Artikels zu beheben .
Hier ist der Code, den ich für Beiträge und Kategorien verwende, und ich verwende keine benutzerdefinierten Beitragstypen und -kategorien:
$post_id = $post->ID;
$cat = get_the_category();
$current_cat_id = $cat[0]->cat_ID;
$args = array(
'category' => $current_cat_id,
'orderby' => 'post_date',
'order' => 'DESC'
);
$posts = get_posts( $args );
foreach( $posts as $post ) {
echo $post->post_content;
}
previous_post_link( '%link', 'Prev post in category', $in_same_term = true );
next_post_link( '%link', 'Next post in category', $in_same_term = true );
Im Grunde werden alle Beiträge basierend auf der Kategorie abgerufen, und jetzt möchte ich, dass der Link zum nächsten Beitrag / vorherigen Beitrag nur für diese bestimmte Kategorie funktioniert.
categories
pagination
user54318
quelle
quelle
$posts
Array aus dem von Ihnen angegebenen Code oder aus dem Hauptbeitrag auf der aktuellen Seite?Antworten:
Hier ist der Code, um kategoriebasierte vorherige und nächste Links zu Posts zu erhalten:
quelle
$args = array('category'=>$current_cat_id,'orderby'=>'menu_order','order'=> 'ASC');
und das hat mein Problem gelöst. Vielen Dank für das Teilen der Lösung!Die Funktionen
previous_post_link
undnext_post_link
haben beide fünf Parameter$format
:: Formatzeichenfolge für den Link, mit der gesteuert wird, was vor und nach dem Link kommt$link
: Linktext , der angezeigt werden soll$in_same_term
: Gibt an, ob der nächste / vorherige Beitrag denselben Taxonomiebegriff wie der aktuelle Beitrag haben muss$excluded_terms
: Begriffe von denen Beiträge ausgeschlossen werden sollen$taxonomy
: Die Taxonomie, die verwendet werden soll, wenn sie$in_same_term
wahr ist Wie Sie sehen, macht der$in_same_term
Parameter genau das, was Sie benötigen. Sie verwenden es jedoch nicht richtig in Ihrem Beispielcode. Sie übergeben tatsächlich das Ergebnis der Zuweisungtrue
zu einer Variablen$in_same_term
. Dies funktioniert nicht: Das Übergeben eines Arguments ist so einfach wie das Übergeben eines Werts:Edit: (bearbeitet nach OP seine Frage aktualisiert) Das Problem ist , dass
previous_post_link
undnext_post_link
die globale Post - Objekt verwenden, die du bist überschrieben. Um dies zu verhindern, verwenden Sie einen anderen Variablennamen in Ihrem$posts
-loop, wie$singlepost
:Auf diese Weise
$post
bleibt das globale Objekt erhalten. Alternativ können Sie das globale Post-Objekt in einer temporären Variablen speichern und$post
später erneut zurücksetzen. Dies ist jedoch nur dann wirklich erforderlich, wenn Sie aufrufensetup_postdata
(was Sie nicht sind).quelle
Ihr Code macht für mich keinen Sinn, abgesehen von einem Syntaxfehler. Wenn Sie auf einen Beitrag auf einer Post- / Blog-Seite klicken, gelangen Sie in der aktuellen Ansicht Ihres Posts zur Einzelansicht des Posts. Nur dieser Beitrag wird auf single.php angezeigt.
Das Problem beginnt, wenn Sie auf die Post-Links klicken, unabhängig davon, ob es sich um den vorherigen oder den nächsten Post-Link handelt. Was zurückgegeben wird, sind alle Beiträge in dieser bestimmten Kategorie, wenn die nächste / vorherige Seite geladen wird. Auf diese Weise haben Sie Ihre single.php codiert und warum Ihre Post-Links nicht so funktionieren, wie Sie es erwarten.
Ich würde nicht verwenden,
get_posts()
um meine Schleife auf der single.php-Seite einzurichten. Ich würde nur die normale richtige Schleife verwenden. Bitte lesen Sie diese Seite im Codex über Theme DevelopmentHier ist ein Beispiel für eine single.php, die wie erwartet funktioniert
Wie in der anderen Antwort erwähnt, lesen Sie, wie Sie das
next_post_link
und das verwendenprevious_post_link
quelle
echo $post->post_content
vergessen;
Ich hatte das gleiche Problem und ich brauchte all das für den benutzerdefinierten Beitragstyp und die benutzerdefinierte Taxonomie. user54318 hat mich in die richtige Richtung gelenkt, in der keine cpt-Dateien ausgeführt werden können. Daher werde ich meine Ergebnisse auch hier veröffentlichen:
quelle