web-dev-qa-db-fra.com

Liste d'archives pour les catégories de type d'article personnalisées

J'utilise un plugin de recette qui utilise un type de recette personnalisé. J'ai actuellement plusieurs listes de recettes de chaque catégorie sur une page. J'essaie de faire en sorte que le titre de chaque liste de catégories soit lié à une liste d'archives de ces publications dans chaque catégorie. Cela ne fonctionne pas et je ne suis pas sûr d'avoir besoin de créer un nouveau modèle d'archive ni de pouvoir le faire avec ce code.

<ul class="subcats-list">
            <h2 class="subcats-title"><a href="<?php echo get_category_link(39); ?>" title="No Cook"><?php echo get_cat_name(39); ?></a></h2>
                <?php
                $recipes = new WP_Query();
                $recipes->query('showposts=5&orderby=Rand&cat=39&post_type=recipe');

                while ($recipes->have_posts()) : $recipes->the_post(); ?>
                  <li><a href="<?php the_permalink() ?>" rel="bookmark"><?php the_title(); ?></a></li>
                <?php endwhile; ?>

        </ul><!-- subcat -->

REMARQUE: le titre de chaque liste de catégories renvoie actuellement à la page d'archivage des catégories, mais aucun article n'est répertorié. Juste une page d'archive noire.

1
chris_s

Comment avez-vous créé le lien avec votre catégorie '39'? Est-ce une taxonomie personnalisée?

Voici le test que je viens de faire et cela fonctionne bien:

Dans functions.php, j'ai créé le type de message personnalisé ' recette ':

add_action( 'init', 'create_recipe' );
function create_recipe() {
    register_post_type( 'recipe',
        array(
            'labels' => array(
                'name' => __( 'Recipes' ),
                'singular_name' => __( 'Recipe' )
                ),
            'public' => true,
            'show_ui' => true,
            'publicly_queryable' => true,
            'exclude_from_search' => false,
            'menu_position' => 4,
            'query_var' => true,
            'supports' => array( 'title', 'editor')

        )
    );
}

Ensuite, j'ai créé un élément taxonomy personnalisé pour obtenir certaines catégories liées à ce type de publication personnalisée:

add_action( 'init', 'register_cate_livro', 0 );
function register_cate_livro() {
    register_taxonomy(
        'cate-recipe',
        array( 'recipe' ),
        array(
            'public' => true,
            'labels' => array(
                'name' => __( 'Categorias' ),
                'singular_name' => __( 'Categoria' )
            ),
        'hierarchical' => true,
        'query_var' => 'cate-livro'
        )
    );
}

Je l'ai nommé ' cate-recipe '.

J'ai écrit 3 articles sous " recette " dans l'administrateur et créé 2 catégories personnalisées " cate-1 'et' cate-2 '.

Puis, en utilisant votre code, j'ai chargé les articles du type d'article personnalisé. Cela fonctionne bien mais ne prend pas en compte le paramètre de taxonomie personnalisé. Alors voici comment je l'ai fait à la fin:

<ul class="subcats-list">
    <h2 class="subcats-title"><a href="<?php echo get_category_link(12); ?>" title="No Cook"><?php echo get_cat_name(39); ?></a></h2>
        <?php
        $recipes = new WP_Query();
        $args = array(
            'showposts'     =>  5,  
            'orderby'       =>  'Rand',
            'post_type'     =>  'recipe',
            'tax_query'     => array(
                array(
                    'taxonomy' => 'cate-recipe',
                    'field' => 'slug',
                    'terms' => 'cate-1'
                )
            )
        );
        $recipes->query($args);

        while ($recipes->have_posts()) : $recipes->the_post(); ?>
          <li><a href="<?php the_permalink() ?>" rel="bookmark"><?php the_title(); ?></a></li>
        <?php endwhile; ?>

</ul><!-- subcat -->

J'utilise le paramètre 'tax_query' pour interroger les publications de ma taxonomie personnalisée ' cate-recipe ' avec le terme ' cate-1 ', que j'ai créé dans l'admin.

Et il ne charge que les posts qui ont cette "catégorie spéciale".

J'espère que cela vous aide, faites-moi savoir si cela répond à vos besoins.

3
kevin