8710 sujets

Développement web côté serveur, CMS

Modérateur
Bonjour,

Je tente désespérément d'ajouter une pagination en bas de mes pages catégories.
La requête :
<?php
// recherche de l'id de la catégorie
$cat_id = $wp_query->get_queried_object_id();

// Requête
$args = array (
    'cat'          		=> $cat_id,
    'posts_per_page'    => '6'
);

// The Query
$wp_query = new WP_Query( $args ); ?>

J'utilise le bout de code proposé par Geoffrey (avec de petites adaptations).

J'ai bien les différents numéros de page avec les liens qui vont bien mais en cliquant sur ces liens j'obtiens la page 404 personnalisée de WordPress.
Exemple de lien : http://localhost/site-test/categorie-03/page/2/

Je pensais que cela venait de la redéfinitions des permaliens, j'ai donc modifié ça en :
http://localhost/site-test/category/categorie-03/page/2/
Mais pas de meilleur effet.

Je n'arrive pas à trouver d'exemple de pagination pour les catégories sans plugins sur le Web, d'où ma demande d'info ici.

Merci d'avance. Smiley smile
Modifié par jojaba (20 Mar 2014 - 12:29)
Modérateur
J'ai modifié ma requête :
<?php
// Recherche de l'id de la catégorie
$cat_id = $wp_query->get_queried_object_id();

// Ligne ajoutée
$paged = (get_query_var('paged')) ? get_query_var('paged') : 1;

// Arguments de la requête
$args = array (
    'cat'          		=> $cat_id,
    'posts_per_page'    => '1',
    'paged'			=> $paged // ajouté
);

// The Query
$wp_query = new WP_Query( $args ); ?>

Ne fonctionne pas mieux Smiley decu
Modifié par jojaba (20 Mar 2014 - 12:46)
Modérateur
J'ai enfin trouvé ! Voici comment j'ai procédé :
1) Installation du plugin Category pagination fix (il date, mais est encore d'actualité !!!)
2) La requête se fait dans le fichier functions.php du thème (trouvé ici : 4.2.4 Removing query_posts from the main loop) :
function my_cat_post_queries( $query ) {
  // do not alter the query on wp-admin pages and only alter it if it's the main query
  if (!is_admin() && $query->is_main_query()){

    // alter the query for the category pages 

    if(is_category()){
		$cat_id = $query->get_queried_object_id();
		$paged = ( get_query_var( 'paged' ) ) ? get_query_var( 'paged' ) : 1;
		$query->set('cat', $cat_id);
		$query->set('posts_per_page', 6);
		$query->set('paged', $paged);
    }

  }
}
add_action( 'pre_get_posts', 'my_cat_post_queries' );

3) L'appel à la fonction de Geoffrey se fait ainsi :
cat_pagination($wp_query);


Ouf !