Je crée une pagination pour mon site. J'espère que tout le monde peut m'expliquer à quoi sert le code ci-dessous? Merci d'avance.
<?php
if ( get_query_var('paged') ) {
$paged = get_query_var('paged');
} elseif ( get_query_var('page') ) {
$paged = get_query_var('page');
} else {
$paged = 1;
}
query_posts('paged='.$paged.'&posts_per_page=');
?>
J'espère que vous comprenez ce que sont les variables de requête. Sinon, le voici en bref. La requête principale utilise WP_Query
pour se configurer. Dans la requête principale, WP_Query
utilise des variables de requête publiques pour construire la requête principale en fonction de la page demandée, et paged
et page
en sont deux. Pour voir toutes les variables de requête publiques, collez-les dans votre en-tête et vérifiez sur tous les modèles comment ceux-ci sont définis en fonction de la page demandée.
var_dump($wp_query->query_vars);
La fonction get_query_var()
est utilisée pour extraire les valeurs de ces variables de requête publiques. Dans ce cas, il s'agit de page
et paged
.
Pour répondre à votre question, ces deux paramètres et leurs valeurs sont utilisés par WP_Query
pour calculer la pagination et, plus important encore, le décalage des publications en fonction du numéro de page. C’est ce paramètre qui garantit que votre page de messages correctement lorsque vous parcourez des pages
paged
-> Utilisé sur la page d'accueil, le blog, les pages d'archive et les pages pour calculer la pagination. La 1ère page est 0
et à partir de là le numéro correspond au numéro de la page
page
-> À utiliser sur une page de garde statique et sur des pages simples pour la pagination. La pagination sur ces pages fonctionne de la même manière, une page de garde statique est traitée comme une seule page lors de la pagination. Par pagination sur des pages simples, je veux dire que des articles uniques peuvent être divisés en plusieurs pages.
En gros, votre code vérifie si le paramètre paged
est défini. Si cela échoue, il vérifie si le paramètre page
est défini et, dans le cas contraire, définit la page sur 1
. Cette vérification échouera toujours à la page 1, donc $paged
sera toujours redescendu à 1
. Sur toute autre page que la première, soit paged
ou page
renverra true et affectera $paged
au numéro de page correct.
Note finale: N'utilisez jamais query_posts
à moins que vous n'ayez besoin de casser quelque chose sur votre page et croyez-moi, vous ne voulez pas de cela. Utilisez toujours WP_Query
pour les requêtes personnalisées paginées. Pour une explication complète à ce sujet, veuillez consulter cet article je l’ai fait il ya quelque temps