web-dev-qa-db-fra.com

Comment créer un modèle personnalisé pour une taxonomie personnalisée?

J'ai ci-dessous ce que j'ai utilisé pour créer un type d'article personnalisé et une taxonomie personnalisée.

Dans la section des produits, j'ai créé les catégories "moniteurs" et "consommables".

J'ai ensuite créé le modèle taxonomy-moniteurs.php, ce nom est-il correctement nommé pour la catégorie des moniteurs? Aussi, quelle est l'URL que je dois visiter pour ne voir que la catégorie des moniteurs utilisant ce modèle?

add_action( 'init', 'create_post_type' );
function create_post_type() {
    register_post_type( 'products',
        array(
            'labels' => array(
                'name' => __( 'Products' ),
                'singular_name' => __( 'Product' )
            ),
        'capability_type' => 'post',
        'supports' => array('title','editor','comments'),   
        'public' => true,
        'has_archive' => true,
        'rewrite' => array( 'slug' => 'products' ),
        )
    );
}

function news_init() {
    // create a new taxonomy
    register_taxonomy(
        'products',
        'products',
        array(
            'label' => __( 'Product Categories' ),
            'sort' => true,
            'hierarchical' => true,
            'args' => array( 'orderby' => 'term_order' ),
            'rewrite' => array( 'slug' => 'products-category' )
        )
    );      
}
add_action( 'init', 'news_init' );

METTRE À JOUR enter image description here

5
Rob

Modèles

Voir le Template Hiearchy pour une analyse plus détaillée de la manière dont WordPress choisit le modèle.

Pour un terme de taxonomieslug (votre moniteur suit votre exemple) dans la taxonomie taxonomy (par exemple, 'produits'), WordPress utilisera les {try} _ suivants (dans cet ordre)

taxonomy-{taxonomy}-{slug}.php
taxonomy-{taxonomy}.php
taxonomy.php
archive.php
index.php

Pour la page du terme de taxonomie de vos "moniteurs", WordPress utilisera

taxonomy-products-monitors.php

si il existe. Si ce n'est pas le cas, alors pour cette taxonomie, il sera replacé à

taxonomy-products.php

etc.

Permaliens

L’URL suivante doit pointer vers la page des produits 'moniteurs':

 www.example.com?products=monitors

Vous avez également spécifié une réécriture d'URL. Par conséquent, si les règles de réécriture ont été supprimées et qu'il n'y a pas de conflit, les éléments suivants devraient également fonctionner.

 www.example.com/products-category/monitors
12
Stephen Harris

Référence: https://stackoverflow.com/questions/33888951/wordpress-custom-post-type-taxonomy-template

 <?php 
get_header();


do_action('genesis_before_content_sidebar_wrap'); ?>

<div id="content-sidebar-wrap">
<?php do_action('genesis_before_content'); ?>

    <div class="wrap">
        <main class="content"> 
            <?php
                $case_study_cat_slug = get_queried_object()->slug;
                $case_study_cat_name = get_queried_object()->name;
            ?>
                <h2><?php echo $case_study_cat_name; ?></h2>
            <?php
                $al_tax_post_args = array(
                    'post_type' => 'success_stories', // Your Post type Name that You Registered
                    'posts_per_page' => 999,
                    'order' => 'ASC',
                    'tax_query' => array(
                        array(
                            'taxonomy' => 'success_stories_category',
                            'field' => 'slug',
                            'terms' => $case_study_cat_slug
                        )
                    )
                );
                $al_tax_post_qry = new WP_Query($al_tax_post_args);

                if($al_tax_post_qry->have_posts()) :
                   while($al_tax_post_qry->have_posts()) :
                        $al_tax_post_qry->the_post();
                        echo '<div class="post-excerpt">'; 
            ?>
                        <h2 class="entry-title" itemprop="headline"><a href="<?php the_permalink(); ?>" class="entry-title-link"><?php  the_title(); ?></a></h2>
                        <div class="entry-content"> <?php echo excerpt(35);  ?> </div>

                        </div>
            <?php
                    endwhile;
                    endif;

            ?>
        </main>         

    </div>  
</div>          

<?php

do_action('genesis_after_content_sidebar_wrap');
get_footer();
2
Rathna

Pour cela, ajoutez le code suivant dans le fichier functions.php (situé dans le dossier du thème):

add_action( 'init', 'create_cw_hierarchical_taxonomy', 0 );
//create a custom taxonomy name
function create_cw_hierarchical_taxonomy() {
$labels = array(
'name' => _x( 'Topics', 'taxonomy general name' ),
'singular_name' => _x( 'Topic', 'taxonomy singular name' ),
'search_items' => __( 'Search Topics' ),
'all_items' => __( 'All Topics' ),
'parent_item' => __( 'Parent Topic' ),
'parent_item_colon' => __( 'Parent Topic:' ),
'edit_item' => __( 'Edit Topic' ),
'update_item' => __( 'Update Topic' ),
'add_new_item' => __( 'Add New Topic' ),
'new_item_name' => __( 'New Topic Name' ),
'menu_name' => __( 'Topics' ),
);
// taxonomy register
register_taxonomy('topics',array('post'), array(
'hierarchical' => true,
'labels' => $labels,
'show_ui' => true,
'show_admin_column' => true,
'query_var' => true,
'rewrite' => array( 'slug' => 'topic' ),
));
}

Je l'ai trouvé ici et ici j'ai trouvé comment créer une taxonomie non hiérarchique https://www.wpblog.com/create-custom-taxonomies-in-wordpress/

0
Owais Alam