J'ai CPT 'movie', avec les taxonomies suivantes: genre, réalisateur et acteur.
Le code utilisé pour les enregistrer est le suivant: http://Pastebin.com/yJ9XHCDk
J'ai une page de film d'archive qui utilise le code suivant dans archie-movie.php:
<?php get_header(); ?>
<div id="middle" class="clearfix">
<div id="inner">
<div id="content" class="<?php echo $bw; ?>">
<?php get_template_part( 'part-genrenav'); ?>
<div id="pageHead">
<?php global $post; if(is_archive() && have_posts()) :
if ( is_post_type_archive() ) { ?>
<h1><?php post_type_archive_title(); ?></h1>
<?php } ?>
<?php endif; ?>
</div>
<div class="posts clearfix">
<?php get_template_part( 'part-pagination'); ?>
<?php while (have_posts()) : the_post(); ?>
<?php get_template_part( 'part-movie'); ?>
<?php endwhile; ?>
<?php get_template_part( 'part-pagination'); ?>
</div>
</div>
</div>
</div>
<?php get_footer(); ?>
Taxonomy.php
J'ai créé un taxonomy.php (et un taxonomy-genre.php et ainsi de suite). Taxonomy.php est appelé correctement ici , mais la boucle de ce modèle ne renvoie rien. J'ai parcouru des dizaines d'articles, mais je n'arrive pas à comprendre.
Actuellement, mon fichier taxonomy.php est composé de cela, comme vous pouvez le constater, il n’est pas très différent du fichier archive-movie.php ci-dessus. Je n'arrive pas à comprendre pourquoi cela ne fonctionne pas:
<?php get_header(); ?>
<div id="middle" class="clearfix">
<div id="inner">
<div id="content">
<div id="pageHead"><h1>Taxonomy Archive</h1></div>
<div class="posts clearfix">
<?php get_template_part( 'part-pagination'); ?>
<?php while (have_posts()) : the_post(); ?>
<?php get_template_part( 'part-movie'); ?>
<?php endwhile; ?>
<?php get_template_part( 'part-pagination'); ?>
</div>
</div>
</div>
</div>
<?php get_footer(); ?>
Je pense que vous devrez peut-être filtrer la requête pour cette taxonomie afin qu'elle affiche le type de publication personnalisé de votre film.
Essayez d'ajouter ceci au fichier functions.php
de votre thème:
function custom_post_archive($query) {
if (!is_admin() && is_tax('genre') && $query->is_tax)
$query->set( 'post_type', array('movie', 'nav_menu_item', 'post') );
remove_action( 'pre_get_posts', 'custom_post_archive' );
}
add_action('pre_get_posts', 'custom_post_archive');
Vous aurez besoin d’ajouter à cette fonction pour toutes vos différentes taxonomies, mais c’est un bon moyen de tester c’est d’abord le problème/la solution.
Consultez ce message - et lisez tous les commentaires - pour découvrir de nombreuses autres façons de filtrer la requête et d'ajouter des conditions.
Je vais commencer par changer votre boucle pour vérifier si elle contient des publications et si ce n’est pas le cas, je vous renverrai un avis que rien n’a été trouvé. Au moins, cela aidera à réduire le problème ... et à ne pas retourner une page blanche.
<?php get_header(); ?>
<div id="middle" class="clearfix">
<div id="inner">
<div id="content">
<div id="pageHead"><h1>Taxonomy Archive</h1></div>
<div class="posts clearfix">
<?php get_template_part( 'part-pagination'); ?>
<?php if( have_posts() ) : ?>
<?php while (have_posts()) : the_post(); ?>
<?php get_template_part( 'part-movie'); ?>
<?php endwhile; ?>
<?php else: ?>
<?php _e ( "Sorry, no movies were found", "your-theme" ); ?>
<?php endif; ?>
<?php get_template_part( 'part-pagination'); ?>
</div>
</div>
</div>
</div>
<?php get_footer(); ?>