web-dev-qa-db-fra.com

La pagination génère une erreur 404 sur les pages d'archive de taxonomie personnalisée

J'ai créé une taxonomie personnalisée pour un type d'article personnalisé appelé "portfolio", comme suit:

function jvs_portfolio_categories_init() {
    register_taxonomy(
        'project-category',
        'portfolio',
        array(
      'label'        => __( 'Project Categories' ),
      'query_var'    => true,
      'hierarchical' => true
        )
    );
}
add_action( 'init', 'jvs_portfolio_categories_init' );

Ensuite, j'ai ajouté une page archives.php afin que je puisse afficher des messages dans ces taxnomies. Le problème est que la pagination se casse sur la deuxième page. Il s'agit en gros de ma boucle dans la page des archives:

<?php $paged = (get_query_var('page')) ? get_query_var('page') : 1; ?>
<?php global $query_string; query_posts($query_string . '&post_type=portfolio&paged=' . $paged); ?>
<?php if (have_posts()) while (have_posts()) : the_post(); ?>
     // Stuff here
<?php endwhile; ?> 

Cela me montre juste une erreur de page 404 lorsque j'essaie d'aller à la 2ème page, j'utilise de jolis permaliens, mais si je remplace manuellement le paramètre /page/2 dans l'url par ?page=2, cela fonctionne bien même si la pagination fonctionne correctement partout ailleurs dans le répertoire. site.

Pouvez-vous m'aider? Merci d'avance!

5
Javier Villanueva

Cette fonction a résolu le problème:

function change_posttype() {
  if( is_archive() && !is_admin() ) {
    set_query_var( 'post_type', array( 'post', 'portfolio' ) );
  }
  return;
}
add_action( 'parse_query', 'change_posttype' );

Ensuite, je viens de supprimer les fonctions paginée et query_string dans mon code et je viens de quitter la boucle normale :)

5
Javier Villanueva