web-dev-qa-db-fra.com

Pagination pour la taxonomie personnalisée

Je ne parviens pas à faire correctement paginer ma page de taxonomie personnalisée. J'ai parcouru d'autres exemples publiés sur ce forum, mais je ne pouvais pas obtenir ma deuxième page pour ne pas renvoyer une page d'erreur 404. Voici mes coordonnées

  • Taxe personnalisée: Study_Tags
  • Exemples de termes: Communauté, économie, criminalité ...
  • Page de taxonomie personnalisée: taxonomy-study_tags.php
  • Messages par page: 5(défini dans les paramètres de lecture, global pour toutes les pages/publications sur le site)

J'utilise un type de message personnalisé "Study" avec la taxonomie personnalisée "Etiquettes d'étude", c'est pourquoi je pense avoir besoin d'utiliser la fonction "query_posts ()".

Je veux seulement montrer les pages parent dans les résultats, car chaque CPT "Study" peut avoir une page enfant avec les détails de l'étude, les présentations, etc.

Mes informations pour configurer la requête

<?php
    $paged = (get_query_var('paged')) ? get_query_var('paged') : 1;
    $args = array_merge( $wp_query->query_vars, 
    array(
            'post_type'=> 'study',
            'post_parent' => '0',
            'paged' => $paged,
            'order' => 'ASC',
            ));
            query_posts($args);

?>

$ wp_query-> query_vars passe par exemple "[study_tags] => community" lorsque var_dump () est utilisé, je sais donc qu'il transmet le terme correct à la page de taxe personnalisée.

Des idées comment obtenir une deuxième page de résultats?

1
unwrittendevin

Tout d’abord: never use query_posts: lorsque vous devez modifier la requête principale, il est préférable d’utiliser le crochet pre_get_posts: les utilisateurs de votre site vous en remercieront, une fois les performances augmentées.

Si la taxonomie personnalisée study_tags est utilisée uniquement pour study CPT, la seule raison de modifier la requête par défaut consiste à définir post parent sur 0.

add_action('pre_get_posts','set_study_parent');

function set_study_parent( $query ) {
  if ( ! is_admin() && is_main_query() && is_tax('study_tags') ) {
    $query->set( 'post_parent', 0 );
  }
}

Ensuite, dans votre modèle taxonomy-study_tags.php, vous pouvez simplement utiliser la boucle. La pagination fonctionnera sans rien faire d'autre.

1
gmazzap