web-dev-qa-db-fra.com

Définir le nombre d'articles par nombre de pages

Je crée un scénario en utilisant ce thème génial gratuit .

Comme vous pouvez le constater dans ce thème, il s’agit d’une timeline séparée par "Page". Nous avons "Page 1" avec 5 articles, "Page 2" avec 5 articles, etc ...

J'ai changé cela en:

  • "Page 1" devient -> septembre
  • "Page 2" devenir -> Octobre
  • "Page 3" devenir -> novembre

d’adapter ce thème en temps réel. Ça marche très bien.

Mon problème ultime est que je ne sais pas comment définir le nombre d'articles par numéro de page. C'est comme 4 articles par toutes les pages, c'est tout. (Bien sûr, je sais comment définir cette valeur).

Comme ceci: , j'ai écrit 3 articles en septembre et 4 en octobre. Avec ce cas d'utilisation, mes 3 articles écrits en septembre seront dans "Septembre page", et le premier de l'article. écrit en octobre sera également dans "page de septembre".

Donc, ma question est simple, puis-je définir le nombre d'articles par page de numéro ?

  • Page 1 (Septembre): 4 articles max.
  • Page 2 (octobre): 8 articles max.
  • Page 3 (Novembre): 1 articles max.

Après quelques recherches, j'ai vu cet exemple de code:

add_action( 'pre_get_posts',  'set_posts_per_page'  );
function set_posts_per_page( $query ) {

  global $wp_the_query;

  if ( ( ! is_admin() ) && ( $query === $wp_the_query ) && ( $query->is_search() ) ) {
    $query->set( 'posts_per_page', 3 );
  }
  elseif ( ( ! is_admin() ) && ( $query === $wp_the_query ) && ( $query->is_archive() ) ) {
    $query->set( 'posts_per_page', 5 );
  }
  // Etc..

  return $query;
}

source: Modifier les publications par nombre de pages

C'est exactement ce que je veux, mais pas sur "catégorie d'article" mais sur le numéro de page

comme (mon pseudo code)

if ( ( ! is_admin() ) && ( $query === $wp_the_query ) && ( $query->is_page(1) ) {
        $query->set( 'posts_per_page', 4 );  // **SEPTEMBER**
      }
if ( ( ! is_admin() ) && ( $query === $wp_the_query ) && ( $query->is_page(2) ) {
            $query->set( 'posts_per_page', 3 ); // **OCTOBER**
          }
2
GreGGus

La pagination résulte de la combinaison de deux facteurs: la taille de la page et le décalage. Dans les cas courants, la taille de la page est constante et offset est la taille de la page fois la page actuelle.

Est-il possible de construire une pagination très élaborée que vous décrivez? Techniquement oui. Il serait judicieux d’ajuster la taille et le décalage de la page de manière plus élaborée.

Cependant, la spécificité de cette implémentation serait fortement peu pratique. Imaginez que vous êtes sur une page 15. Comment déterminez-vous quel mois c'est? Vous devez revenir en arrière jusqu'au début et reconstruire page par page 14 pour obtenir un indice sur votre situation actuelle. Notez que très probablement pas tous mois auront des messages, même si c'est le cas en ce moment.

Que pourriez-vous faire à la place? Utilisez les archives de date . WP est parfaitement capable de produire des pages contenant des archives temporelles pour le mois spécifique (par exemple, example.com/2016/06/) prêtes à l'emploi.

Chaque mois, vous savez exactement à quel moment vous vous trouvez, le reste consiste simplement à fournir une interface utilisateur/des liens vers d’autres mois, au lieu d’une pagination classique (par exemple avec wp_get_archives()).

1
Rarst