Dans une situation où l'on a 20 publications par page. Je voudrais obtenir le numéro de page actuel afin de faire de jolis liens vers la page en bas. Comment obtenez-vous la page actuelle. J'ai essayé
<?php echo '(Page '.$page.' of '.$numpages.')';?>
et il dit simplement la page 1 de 1 sur chaque page.
Lorsque WordPress utilise une pagination comme celle-ci, il y a une variable de requête sur $pagedlaquelle il se base. Donc, la page 1 est $paged=1et la page 15 est $paged=15.
Vous pouvez obtenir la valeur de cette variable avec le code suivant:
Obtenir le nombre total de pages est un peu plus compliqué. Vous devez d'abord compter toutes les publications de la base de données. Ensuite, filtrez les articles publiés (par rapport à ceux qui sont des brouillons, planifiés, poubelles, etc.) Ensuite, vous devez diviser ce nombre par le nombre de publications que vous prévoyez d'afficher sur chaque page:
Je n'ai pas encore testé cela, mais vous devrez peut-être récupérer $posts_per_pagela même manière que vous avez récupéré $paged(en utilisant get_query_var()).
Pourquoi ne pas utiliser $wp_query->max_num_pages?
t31os
1
C'est une bonne alternative. Une partie de $wp_queryj'ai complètement oublié était là: - /
EAMann
@EAMann BTW: il y a aussi la found_postspropriété "Le nombre total de messages trouvés correspondant aux paramètres de requête actuels", wp_count_posts () est une sorte de surcharge.
jave.web
8
Vous pouvez le faire avec une seule ligne de code, mais là encore, vous voudrez peut-être ajouter le code à d'autres endroits, donc une fonction est généralement plus utile.
REMARQUE: le code peut aller dans votre fichier de fonctions.
Appelez simplement la fonction où vous souhaitez afficher le message "Page x de y", par exemple.
<?php current_paged();?>
Si vous avez besoin du code pour travailler avec une requête personnalisée, par exemple. celui que vous avez créé à l'aide WP_Query, puis passez simplement le nom de la variable qui contient la requête à la fonction.
Une option qui fonctionne sur toutes mes pages d'archives est la suivante:
$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>';}
Recherchez d'abord s'il y a plus d'une page wp_query, puis concaténez le titre avec la page actuelle via $paged_current_pageet le nombre total de pages avec $title_page_nrs. Enfin echoça. Si au-dessus de 1 page en premier, alors elsesi n'est pas paginé. Cela va dans mon archive.php ou des modèles pour ce type. Cela produit:
<title>Taxonomy title - page nr 1 of 4 | Your Website Name</title>
$wp_query->max_num_pages
?$wp_query
j'ai complètement oublié était là: - /found_posts
propriété "Le nombre total de messages trouvés correspondant aux paramètres de requête actuels", wp_count_posts () est une sorte de surcharge.Vous pouvez le faire avec une seule ligne de code, mais là encore, vous voudrez peut-être ajouter le code à d'autres endroits, donc une fonction est généralement plus utile.
REMARQUE: le code peut aller dans votre fichier de fonctions.
Appelez simplement la fonction où vous souhaitez afficher le message "Page x de y", par exemple.
Si vous avez besoin du code pour travailler avec une requête personnalisée, par exemple. celui que vous avez créé à l'aide
WP_Query
, puis passez simplement le nom de la variable qui contient la requête à la fonction.Exemple de requête inexistante:
Obtention de la page actuelle de la requête personnalisée à l'aide de la fonction publiée précédemment.
Si vous voulez juste oublier totalement le support de requête personnalisé et que vous recherchez un one-liner, alors cela devrait le faire.
J'espère que cela pourra aider.. :)
la source
$var
s'agit d'une requête:if( is_a( $var, 'WP_Query' ) )
retournera true si c'est un objet de requête.Comme mentionné ci-dessus - un moyen plus simple d'obtenir le nombre maximum de pages est de:
la source
Une option qui fonctionne sur toutes mes pages d'archives est la suivante:
Recherchez d'abord s'il y a plus d'une page
wp_query
, puis concaténez le titre avec la page actuelle via$paged_current_page
et le nombre total de pages avec$title_page_nrs
. Enfinecho
ça. Si au-dessus de 1 page en premier, alorselse
si n'est pas paginé. Cela va dans mon archive.php ou des modèles pour ce type. Cela produit:<title>Taxonomy title - page nr 1 of 4 | Your Website Name</title>
ou
<title>Taxonomy title | Your Website Name</title>
la source