Je voudrais avoir un seul article sur ma première page (toujours le dernier), mais laisser la pagination normale fonctionner. Donc, la première page a le post 1, la page suivante devrait avoir le post 2-11 (1-10 est très bien aussi), puis 12-21 ou 11-20, et ainsi de suite. Je sais que je peux changer le nombre de messages en fonction du contexte , mais le définir sur "1" sur la page d'accueil signifie que les pages suivantes ne montrent également qu'un seul message.
Mon principal problème est que /page/2/
, etc. œuvres, mais /page/1/
redirige toujours à la vraie page d'accueil, /
. Cela signifie que les messages 2-10 sont toujours ignorés, car la page 2 affiche 11-20. Je résous actuellement ce problème en créant un lien vers mes archives, mais ce n'est pas idéal lorsque vous arrivez aux premiers messages de l'année et il y a moins de messages et aucun moyen évident de continuer.
la source
is_front_page()
paris_archive()
ouis_category()
, je pense que vous pouvez arriver là où vous devez être.Ok, c'est peut-être une façon étrange ou compliquée de le faire, mais j'ai eu un problème similaire (je voulais afficher un texte de bienvenue et les trois derniers messages d'une catégorie spécifique sur la première page. J'ai donc fait:
ressemble à ceci: http://hinek.de (la page est en allemand, désolé)
Si cela peut être le moyen pour vous et que vous avez besoin de plus d'informations ou d'un exemple de code pour le modèle de page, commentez et je modifierai ce message.
la source
Je suppose que vous utilisez Wordpress 3.0.x?
Pour afficher un seul article (dans n'importe quelle catégorie) sur la première page est facile. Utilisez
query_posts('post_per_page=1')
dans votrehome.php
fichier au lieu d'invoquerget_template_part('loop')
.Suivre les méthodes de pagination normales après cela est un peu délicat. Dans votre
loop.php
fichier, je suggère de mettre<?php global $paged; ?>
avant l'<?php if (have_posts()) : ?>
instruction et d'utiliser la$paged
variable et laquery_posts()
fonction pour modifier votre requête afin qu'elle affiche les bons messages.Votre
loop.php
fichier ressemblerait à ceci (remarque: non testé):J'ai utilisé
$paged - 1
simplement parce que la page 2 affichera les messages 1 - 10, et la page 3 affichera les messages 11 - 20, et ainsi de suite.la source
paged
paramètre ne cassera rien d'autre, comme lenext_posts_link
?. Il est peut-être préférable de modifier la requête dans lepre_get_posts
crochet, donc je ne crée pas de nouvelle requête? Et oui, c'est WP 3.next_posts_link
. La seule façon de le savoir est bien sûr de l'essayer.paged
paramètre dans lepre_get_posts
crochet, entreredirect_canonical
en action et veut remplacer l'url par le nouveaupaged
paramètre. Je peux désactiver les redirections dans ce cas, maisnext_posts_link
utilise une$paged
variable globale qui est définie sur la nouvelle valeur, mais je ne sais pas par quel code, donc c'est incorrect.pre_get_posts
crochet, donc je ne peux pas être très utile là-bas. Essayez également de modifier la$paged
variable directement (ex:)$paged = $paged - 1)
si cela vous inquiètenext_posts_link()
.Cette question est un peu ancienne, mais pour ceux qui trouvent cela à l'ère moderne, vous ne devriez jamais appeler query_posts . Du codex Wordpress:
Au lieu de cela, vous devez utiliser le
pre_get_posts
hook dans functions.php comme suit:Cependant, sachez que dans certains cas (comme l'ajustement des décalages de poteau), l'utilisation d'un
pre_get_posts
crochet peut altérer votre pagination. Corriger cela n'est pas super difficile, mais c'est quelque chose dont il faut être conscient. Il y a un exemple de comment résoudre ce problème ici .la source