web-dev-qa-db-fra.com

Pagination sur les sauts de pages d'archives de taxonomie

J'ai créé des pages d'archives pour toutes mes taxonomies (taxonomie-{taxonomy-name}.php) et cela fonctionne bien. La limace de mes taxonomies est la même que celle de post-type. Cela permet de créer une hiérarchie soignée dans l'URL, par exemple:

Lorsque post-type products a 'type' comme taxonomie avec le livre de valeurs, cd et dvd. post-type1 a le slug product et taxonomy1 a le même slug: product.

De cette façon, je peux lister les archives de taxonomie de la manière suivante:

produits/livre

produits/cd

produits/dvd

et cela fonctionne très bien. Cependant: la pagination fonctionne sur les archives des produits mais sur l'archive products/{type} elle donne un 404.

Un indice?

Le code du modèle de taxonomie est le suivant:

  <?php get_header(); ?>
  <section id="inhoud" class="hfeed">
    <nav class="navigatiebalk">
      <ul class="pagina-navigatie">
        <li class="volgende-pagina"><?php previous_posts_link(''); ?></li>
        <li class="vorige-pagina"><?php next_posts_link(''); ?></li>
      </ul>
    </nav>

    <?php while ( have_posts() ) : the_post(); ?>
    <?php
    $post_type = get_post_type( get_the_ID() );
    ?>
        <article class="hentry publicaties artikel <?php echo $post_type ?>">
            <header class="artikel-hoofd">
            <?php the_title( '<h1 class="titel"><span class="datum date">' . the_date('d.m.y', '', '', false) . '</span><a href="' . get_permalink() . '" title="' . the_title_attribute( 'echo=0' ) . '" rel="bookmark">', '</a></h1>' ); ?>
            <figure class="icoontje"></figure>
            </header>

            <section class="inleiding">
                <figure class="bericht-icoon"><?php $large_image_url = wp_get_attachment_image_src( get_post_thumbnail_id(), 'large'); echo '<a href="' . $large_image_url[0] . '" class="thumbnail-link colorbox" rel="lightbox" title="' . the_title_attribute('echo=0') . '" >'; the_post_thumbnail('thumbnail', array('class' => 'artikel-thumbnail')); ?></a>
                </figure>
                <span><?php $this_excerpt = get_the_excerpt(); echo $this_excerpt; ?>...&nbsp;<a href="<?php the_permalink(); ?>" class="lees-verder">Lees en luister</a>
                </span>
            </section>
        </article>
    <?php endwhile; ?>
    <nav class="navigatiebalk">
      <ul class="pagina-navigatie">
        <li class="volgende-pagina"><?php previous_posts_link(''); ?></li>
        <li class="vorige-pagina"><?php next_posts_link(''); ?></li>
      </ul>
    </nav>
  </section>
  <?php get_footer(); ?>
1
grrrbytes

Je l'ai compris moi-même. Apparemment, la pause de la pagination est due au fait que mes "produits" et mes "types" (ce ne sont pas les termes que je connais, uniquement à des fins de démonstration) ont le même slug. Les produits ont un slug de 'produits' et les types ont un slug de 'produits /% typename%'. Grâce à cela, je peux rendre mes permaliens hiérarchiques: products/dvd ou products/cd. Cela a fonctionné, bien que cela ait brisé ma pagination sur les pages d'archives de taxonomie en cassant mes liens permanents avec des types de publication individuels. Ce que j'ai fait était le suivant pour le réparer:

function add_rewrite_rules($rules) {
    $newrules['([^/]+)/([^\.]+).html$'] = 'index.php?$matches[1]=$matches[2]';
    $newrules['([^/]+)/([^/]+)/page/?([0-9]{1,})/?$'] = 'index.php?post_type=$matches[1]&locations=$matches[2]&paged=$matches[3]';

    $rules = $newrules + $rules;
    return $rules;
}

add_filter('rewrite_rules_array', 'add_rewrite_rules');

J'ai ajouté des règles de réécriture de mod afin qu'Apache trouve l'archive de taxonomie paginée et l'archive individuelle.

1
grrrbytes

Si je vous comprends bien, alors vous avez une taxonomie nommée "type" définie sur votre site. Cela va casser toutes sortes de choses. "Type" est l'un des termes réservés et ne doit pas être utilisé pour les taxonomies.

0
mfields