In einer Situation, in der man 20 Beiträge pro Seite hat. Ich möchte die aktuelle Seitenzahl erhalten, um unten einige nette Seitenlinks zu erstellen. Wie kommt man zur aktuellen Seite? Ich habe es versucht
Wenn WordPress eine solche Paginierung verwendet, gibt es eine Abfragevariable, auf $pageddie es eingibt. Seite 1 ist also $paged=1und Seite 15 ist $paged=15.
Sie können den Wert dieser Variablen mit dem folgenden Code abrufen:
Es ist etwas schwieriger, die Gesamtzahl der Seiten zu ermitteln. Zuerst müssen Sie alle Beiträge in der Datenbank zählen. Filtern Sie dann, nach welchen Posts veröffentlicht wird (im Vergleich zu Entwürfen, geplanten Posts, Papierkorb usw.). Dann müssen Sie diese Anzahl durch die Anzahl der Beiträge teilen, die auf jeder Seite erscheinen sollen:
Ich habe dies noch nicht getestet, aber Sie müssen möglicherweise auf $posts_per_pagedie gleiche Weise abrufen, wie Sie es abgerufen haben $paged(mit get_query_var()).
Das ist eine gute Alternative. Ein Teil von $wp_querymir völlig vergessen war da: - /
EAMann
@EAMann Übrigens: Es gibt auch die found_postsEigenschaft "Die Gesamtzahl der gefundenen Beiträge, die den aktuellen Abfrageparametern entsprechen". Wp_count_posts () ist eine Art Overhead.
jave.web
7
Sie können dies mit einer einzelnen Codezeile tun, aber andererseits möchten Sie den Code möglicherweise an anderen Stellen hinzufügen, sodass eine Funktion normalerweise nützlicher ist.
HINWEIS: Code kann in Ihre Funktionsdatei aufgenommen werden.
Rufen Sie einfach die Funktion auf, in der Sie die Meldung "Seite x von y" anzeigen möchten, z.
<?php current_paged();?>
Wenn Sie den Code benötigen, um mit einer benutzerdefinierten Abfrage zu arbeiten, z. eine, die Sie mit erstellt haben, WP_Queryund geben Sie dann einfach den Namen der Variablen, die die Abfrage enthält, an die Funktion weiter.
Wenn ich Sie wäre, würde ich prüfen, ob $vares sich um eine Abfrage handelt: Gibt if( is_a( $var, 'WP_Query' ) )true zurück, wenn es sich um ein Abfrageobjekt handelt.
John P Bloch
Ja, das ist eigentlich eine sehr vernünftige Idee!
t31os
0
Wie oben erwähnt - ein einfacherer Weg, um die maximale Anzahl von Seiten zu erhalten, ist mit:
Eine Option, die auf allen meinen Archivseiten funktioniert, ist folgende:
$paged_maxnum = $GLOBALS['wp_query']->max_num_pages;if( $paged_maxnum >1){
$paged_current_page = get_query_var('paged')? intval( get_query_var('paged')):1;
$title_page_nrs ='page nr '. $paged_current_page .' of '. $paged_maxnum;
echo '<title>'. get_the_archive_title('',false).' - '. $title_page_nrs .' | Your Website Name</title>';}else{
echo '<title>'. get_the_archive_title('',false).' | Your Website Name</title>';}
Fragen Sie zuerst ab, ob diese Seite mehr als eine Seite enthält wp_query, und verknüpfen Sie dann den Titel mit der aktuellen Seite über $paged_current_pageund die Gesamtseiten mit $title_page_nrs. Zum echoSchluss noch. Wenn über 1 Seite zuerst, dann elsewenn nicht ausgelagert wird. Dies geht in meine archive.php oder Vorlagen für diesen Typ. Es produziert:
<title>Taxonomy title - page nr 1 of 4 | Your Website Name</title>
$wp_query->max_num_pages
?$wp_query
mir völlig vergessen war da: - /found_posts
Eigenschaft "Die Gesamtzahl der gefundenen Beiträge, die den aktuellen Abfrageparametern entsprechen". Wp_count_posts () ist eine Art Overhead.Sie können dies mit einer einzelnen Codezeile tun, aber andererseits möchten Sie den Code möglicherweise an anderen Stellen hinzufügen, sodass eine Funktion normalerweise nützlicher ist.
HINWEIS: Code kann in Ihre Funktionsdatei aufgenommen werden.
Rufen Sie einfach die Funktion auf, in der Sie die Meldung "Seite x von y" anzeigen möchten, z.
Wenn Sie den Code benötigen, um mit einer benutzerdefinierten Abfrage zu arbeiten, z. eine, die Sie mit erstellt haben,
WP_Query
und geben Sie dann einfach den Namen der Variablen, die die Abfrage enthält, an die Funktion weiter.Beispiel für eine nicht vorhandene Abfrage:
Abrufen der aktuellen Seite für die benutzerdefinierte Abfrage mithilfe der zuvor angegebenen Funktion.
Wenn Sie die Unterstützung für benutzerdefinierte Abfragen einfach ganz vergessen möchten und nach einem Einzeiler suchen, sollte dies der Fall sein.
Ich hoffe, das hilft.. :)
quelle
$var
es sich um eine Abfrage handelt: Gibtif( is_a( $var, 'WP_Query' ) )
true zurück, wenn es sich um ein Abfrageobjekt handelt.Wie oben erwähnt - ein einfacherer Weg, um die maximale Anzahl von Seiten zu erhalten, ist mit:
quelle
Eine Option, die auf allen meinen Archivseiten funktioniert, ist folgende:
Fragen Sie zuerst ab, ob diese Seite mehr als eine Seite enthält
wp_query
, und verknüpfen Sie dann den Titel mit der aktuellen Seite über$paged_current_page
und die Gesamtseiten mit$title_page_nrs
. Zumecho
Schluss noch. Wenn über 1 Seite zuerst, dannelse
wenn nicht ausgelagert wird. Dies geht in meine archive.php oder Vorlagen für diesen Typ. Es produziert:<title>Taxonomy title - page nr 1 of 4 | Your Website Name</title>
oder
<title>Taxonomy title | Your Website Name</title>
quelle