Cum să creezi un șablon personalizat pentru o taxonomie personalizată?

15 aug. 2012, 13:00:24
Vizualizări: 94K
Voturi: 10

Am următorul cod pe care l-am folosit pentru a crea un tip de postare personalizată și o taxonomie personalizată.

În secțiunea de produse am creat categoriile "monitoare" și "consumabile".

Am creat apoi șablonul taxonomy-monitors.php, este denumit corect pentru categoria de monitoare? De asemenea, care este URL-ul pe care trebuie să-l accesez pentru a vedea doar categoria de monitoare folosind acel șablon?

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

function news_init() {
    // creează o nouă taxonomie
    register_taxonomy(
        'products',
        'products',
        array(
            'label' => __( 'Categorii de Produse' ),
            'sort' => true,
            'hierarchical' => true,
            'args' => array( 'orderby' => 'term_order' ),
            'rewrite' => array( 'slug' => 'categorie-produse' )
        )
    );      
}
add_action( 'init', 'news_init' );

ACTUALIZARE Exemplu de taxonomie personalizată în WordPress

0
Toate răspunsurile la întrebare 3
4
15

Șabloane

Consultați Ierarhia Șabloanelor pentru o explicație mai detaliată despre cum WordPress alege șablonul.

Pentru un termen de taxonomie slug ('monitoare' în exemplul dumneavoastră) din taxonomia taxonomy (de ex. 'produse'), WordPress va încerca să utilizeze următoarele șabloane (în această ordine)

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

Pentru pagina de termen de taxonomie 'monitoare', WordPress va utiliza

taxonomy-produse-monitoare.php

dacă acest fișier există. Dacă nu există, atunci pentru acea taxonomie va reveni la

taxonomy-produse.php

și așa mai departe.

Legături permanente

Următorul URL ar trebui să indice pagina de produse 'monitoare':

 www.example.com?produse=monitoare

Ați specificat și o rescriere de URL, deci presupunând că regulile de rescriere au fost actualizate și nu există o conflict, următorul ar trebui să funcționeze de asemenea

 www.example.com/categorie-produse/monitoare
15 aug. 2012 13:32:25
Comentarii

Ok, mulțumesc. Acum am un șablon taxonomy-products-monitors.php, am mers la secțiunea permalinkuri și am dat click pe salvare (asta reîmprospătează cache-ul, nu?) apoi am accesat pagina http://www.neurosignsurgical.com/v2/products-category/monitors dar încă arată eroare 404. Chiar nu înțeleg de ce!

Rob Rob
15 aug. 2012 14:20:25

Da, asta reîmprospătează cache-ul. Ține minte că termenii fără postări vor afișa probabil 'nimic găsit'. Dacă primul link funcționează, atunci e o problemă de permalink. Ar trebui să folosești acest plugin pentru a diagnostica problema. Un șablon nu ar trebui să cauzeze o eroare 404.

Stephen Harris Stephen Harris
15 aug. 2012 17:00:53

Am încercat să adaug produse noi și să le categorizez ca monitoare, primul link a dat eroare 404 și la fel și al doilea. Am încercat plugin-ul (voi actualiza întrebarea cu un screenshot).

Rob Rob
15 aug. 2012 17:17:22

Se pare că nu ai resetat structura legăturilor permanente. Mergi la Setări > Legături permanente și apasă din nou pe 'Salvează' pentru a forța actualizarea regulilor de rescriere.

Tom Auger Tom Auger
15 aug. 2012 18:34:33
1

Referință: 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', // Numele tipului de postare pe care l-ai înregistrat
                    '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();
28 dec. 2018 07:32:45
Comentarii

Te rog să [editezi] răspunsul tău și să adaugi o explicație: de ce ar putea rezolva această soluție problema?

fuxia fuxia
28 dec. 2018 09:19:11
0

Pentru aceasta, adăugați următorul cod în fișierul functions.php (aflat în folderul temei):

add_action( 'init', 'create_cw_hierarchical_taxonomy', 0 );
//crează o taxonomie personalizată ierarhică
function create_cw_hierarchical_taxonomy() {
$labels = array(
'name' => _x( 'Subiecte', 'nume general taxonomie' ),
'singular_name' => _x( 'Subiect', 'nume singular taxonomie' ),
'search_items' => __( 'Caută Subiecte' ),
'all_items' => __( 'Toate Subiectele' ),
'parent_item' => __( 'Subiect Părinte' ),
'parent_item_colon' => __( 'Subiect Părinte:' ),
'edit_item' => __( 'Editează Subiect' ),
'update_item' => __( 'Actualizează Subiect' ),
'add_new_item' => __( 'Adaugă Subiect Nou' ),
'new_item_name' => __( 'Nume Subiect Nou' ),
'menu_name' => __( 'Subiecte' ),
);
// înregistrare taxonomie
register_taxonomy('topics',array('post'), array(
'hierarchical' => true,
'labels' => $labels,
'show_ui' => true,
'show_admin_column' => true,
'query_var' => true,
'rewrite' => array( 'slug' => 'topic' ),
));
}

Am găsit informația aici și aici am aflat cum să creez Taxonomie Non-ierarhică https://www.wpblog.com/create-custom-taxonomies-in-wordpress/

10 aug. 2017 10:13:09