Holen Sie sich die aktuelle Seitenzahl
4 Antworten
- Stimmen
-
- 2011-03-18
Wenn WordPresseine solche Paginierung verwendet,gibt eseine Abfragevariable
$paged
,auf dieeseingibt. Seite 1ist also$paged=1
und Seite 15ist$paged=15
.Sie können den Wert dieser Variablenmit demfolgenden Code abrufen:
$paged=(get_query_var ('paged'))?get_query_var ('paged'): 1;
Esistetwas schwieriger,die Gesamtzahl der Seiten zuermitteln. Zuerstmüssen Sie alle Beiträgein 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ägeteilen,die aufjeder Seiteerscheinen sollen:
$total_post_count=wp_count_posts (); $ shared_post_count=$total_post_count- > veröffentlichen; $total_pages=Ceil ($publications_post_count/$posts_per_page);
Ich habe diesnochnichtgetestet,aber Siemüssenmöglicherweise
$posts_per_page
auf dieselbe Weise abrufen,wie Sie$paged
abgerufen haben (mitget_query_var ()
).When WordPress is using pagination like this, there's a query variable
$paged
that it keys on. So page 1 is$paged=1
and page 15 is$paged=15
.You can get the value of this variable with the following code:
$paged = (get_query_var('paged')) ? get_query_var('paged') : 1;
Getting the total number of pages is a bit trickier. First you have to count all the posts in the database. Then filter by which posts are published (versus which are drafts, scheduled, trash, etc.). Then you have to divide this count by the number of posts you expect to appear on each page:
$total_post_count = wp_count_posts(); $published_post_count = $total_post_count->publish; $total_pages = ceil( $published_post_count / $posts_per_page );
I haven't tested this yet, but you might need to fetch
$posts_per_page
the same way you fetched$paged
(usingget_query_var()
).-
Warumnicht `$ wp_query->max_num_pages` verwenden?Why not use `$wp_query->max_num_pages`?
- 8
- 2011-03-18
- t31os
-
Dasisteine gute Alternative.Ein Teil von `$ wp_query`,denich völlig vergessen habe,war da: -/That's a sound alternative. Part of `$wp_query` I completely forgot was there :-/
- 1
- 2011-03-18
- EAMann
-
@EAMann Übrigens: Esgibt auch die Eigenschaft "found_posts" "Die Gesamtzahl dergefundenen Beiträge,die den aktuellen Abfrageparameternentsprechen". Wp_count_posts ()isteine Art Overhead.@EAMann BTW: there is also `found_posts` property "The total number of posts found matching the current query parameters", wp_count_posts() is kind of an overhead.
- 0
- 2017-03-13
- jave.web
-
- 2011-03-18
Sie können diesmit einereinzelnen Codezeiletun,aber andererseitsmöchten Sie den Codemöglicherweise an anderen Stellen hinzufügen,sodasseine Funktionnormalerweisenützlicherist.
function current_paged( $var = '' ) { if( empty( $var ) ) { global $wp_query; if( !isset( $wp_query->max_num_pages ) ) return; $pages = $wp_query->max_num_pages; } else { global $$var; if( !is_a( $$var, 'WP_Query' ) ) return; if( !isset( $$var->max_num_pages ) || !isset( $$var ) ) return; $pages = absint( $$var->max_num_pages ); } if( $pages < 1 ) return; $page = get_query_var( 'paged' ) ? get_query_var( 'paged' ) : 1; echo 'Page ' . $page . ' of ' . $pages; }
HINWEIS: Code kannin Ihre Funktionsdatei aufgenommen werden.
Rufen Sieeinfach die Funktion auf,in der die Meldung "Seite x von y" angezeigt werden soll,z. B.
<?php current_paged(); ?>
Wenn Sie den Codebenötigen,ummit einerbenutzerdefinierten Abfrage zu arbeiten,z.eine,die Siemit
WP_Query
erstellt haben,undgeben Sie danneinfach den Namen der Variablen weiter,die die Abfrageenthält,an die Funktion.Beispielfüreine nicht vorhandene Abfrage:
$fred = new WP_Query; $fred->query(); if( $fred->have_posts() ) ... etc..
Abrufen der aktuellen Seitefür diebenutzerdefinierte Abfragemithilfe der zuvor veröffentlichten Funktion.
<?php current_paged( 'fred' ); ?>
Wenn Sie die Unterstützungfürbenutzerdefinierte Abfrageneinfachganz vergessenmöchten undnacheinem Einzeiler suchen,sollte dies der Fall sein.
<?php echo 'Page '. ( get_query_var('paged') ? get_query_var('paged') : 1 ) . ' of ' . $wp_query->max_num_pages; ?>
Hoffe das hilft .. :)
You could do it with a single line of code, but then again, you might want to add the code in other places, so a function is usually more useful.
function current_paged( $var = '' ) { if( empty( $var ) ) { global $wp_query; if( !isset( $wp_query->max_num_pages ) ) return; $pages = $wp_query->max_num_pages; } else { global $$var; if( !is_a( $$var, 'WP_Query' ) ) return; if( !isset( $$var->max_num_pages ) || !isset( $$var ) ) return; $pages = absint( $$var->max_num_pages ); } if( $pages < 1 ) return; $page = get_query_var( 'paged' ) ? get_query_var( 'paged' ) : 1; echo 'Page ' . $page . ' of ' . $pages; }
NOTE: Code can go into your functions file.
Simply call the function where you want to show the "Page x of y" message, eg.
<?php current_paged(); ?>
If you need the code to work with a custom query, ie. one you've created using
WP_Query
, then simply pass along the name of the variable that holds the query to the function.Example non-existant query:
$fred = new WP_Query; $fred->query(); if( $fred->have_posts() ) ... etc..
Getting the current page for the custom query using the function posted earlier..
<?php current_paged( 'fred' ); ?>
If you want to just totally forget the custom query support and you're looking for a one-liner, then this should do it..
<?php echo 'Page '. ( get_query_var('paged') ? get_query_var('paged') : 1 ) . ' of ' . $wp_query->max_num_pages; ?>
Hope that helps.. :)
-
Wennich Sie wäre,würdeichprüfen,ob `$ var`eine Abfrageist:`if (is_a ($ var,'WP_Query')) `gibttrue zurück,wennes sich umein Abfrageobjekt handelt.If I were you I'd check if `$var` is a query: `if( is_a( $var, 'WP_Query' ) )` will return true if it's a query object.
- 1
- 2011-03-18
- John P Bloch
-
Ja,dasisteigentlicheine sehr vernünftige Idee!Yes, that's actually a very sensible idea, done!.
- 0
- 2011-04-16
- t31os
-
- 2019-02-19
Wie obenerwähnt -eine einfachere Möglichkeit,diemaximale Anzahl von Seiten zuermitteln,ist:
global $wp_query $wp_query->max_num_pages
As mentioned above - a simpler way to get the max number of pages is with:
global $wp_query $wp_query->max_num_pages
-
- 2019-11-24
Eine Option,die auf allenmeinen Archivseitenfunktioniert,istfolgende:
$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='pagenr'. $paged_current_page. ' von ' . $paged_maxnum; Echo '& lt; Titel >' .get_the_archive_title ('',false). '-'. $title_page_nrs. '| Ihr Website-Name & lt;/title > '; }else { Echo '& lt; Titel >' .get_the_archive_title ('',false). '| Ihr Website-Name & lt;/title > '; }}
Zuerst abfragen,ob diese
wp_query
mehr alseine Seiteenthält,dann den Titelmit der aktuellen Seite über$paged_current_page
und die Gesamtseitenmit$title_page_nrs . Zuletzt
echo
. Wenn zuerstmehr als 1 Seite angezeigt wird,dannelse
,wennnicht ausgelagert. Diesgehtin meine archive.php oder Vorlagenfür diesen Typ. Eserzeugt:& lt; Titel > Taxonomietitel - Seite Nr. 1 von 4| Ihr Website-Name & lt;/title >
oder
& lt;title > Taxonomietitel| Ihr Website-Name & lt;/title >
One option that works on all my archive pages is this:
$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>'; }
First query if there is more than one page in this
wp_query
, then concatenate title with current page via$paged_current_page
and total pages with$title_page_nrs
. Lastlyecho
it. If above 1 page first, thenelse
if is not paged. This goes into my archive.php or templates for this type. It produces:<title>Taxonomy title - page nr 1 of 4 | Your Website Name</title>
or
<title>Taxonomy title | Your Website Name</title>
Ineiner Situation,in derman 20 Beiträgepro Seite hat.Ichmöchte die aktuelle Seitenzahlerhalten,um unteneinige nette Seitenlinks zuerstellen.Wie kommtman zur aktuellen Seite?Ich habees versucht
und aufjeder Seite stehtnur Seite 1 von 1.
Irgendwelche Ideen,
Wunderbar