Come creare un template personalizzato per una tassonomia personalizzata?
Ho il seguente codice che ho utilizzato per creare un custom post type e una tassonomia personalizzata.
Nella sezione prodotti ho creato le categorie "monitors" e "consumables".
Ho quindi creato il template taxonomy-monitors.php, è correttamente nominato per la categoria monitors? Inoltre, qual è l'URL che devo visitare per vedere solo la categoria monitors utilizzando quel template?
add_action( 'init', 'create_post_type' );
function create_post_type() {
register_post_type( 'products',
array(
'labels' => array(
'name' => __( 'Prodotti' ),
'singular_name' => __( 'Prodotto' )
),
'capability_type' => 'post',
'supports' => array('title','editor','comments'),
'public' => true,
'has_archive' => true,
'rewrite' => array( 'slug' => 'products' ),
)
);
}
function news_init() {
// crea una nuova tassonomia
register_taxonomy(
'products',
'products',
array(
'label' => __( 'Categorie Prodotti' ),
'sort' => true,
'hierarchical' => true,
'args' => array( 'orderby' => 'term_order' ),
'rewrite' => array( 'slug' => 'products-category' )
)
);
}
add_action( 'init', 'news_init' );
AGGIORNAMENTO
Template
Consulta la Gerarchia dei Template per una spiegazione più dettagliata su come WordPress sceglie il template.
Per un termine di tassonomia slug
('monitors' nel tuo esempio) nella tassonomia taxonomy
(ad esempio 'products') WordPress proverà a utilizzare i seguenti template (in questo ordine)
taxonomy-{taxonomy}-{slug}.php
taxonomy-{taxonomy}.php
taxonomy.php
archive.php
index.php
Per la pagina del termine di tassonomia 'monitors', WordPress utilizzerà
taxonomy-products-monitors.php
se esiste. Se non esiste, per quella tassonomia passerà a
taxonomy-products.php
e così via.
Permalink
Il seguente URL dovrebbe puntare alla pagina dei prodotti 'monitors':
www.example.com?products=monitors
Hai anche specificato una riscrittura degli URL, quindi supponendo che le regole di riscrittura siano state aggiornate e non ci siano conflitti, anche il seguente dovrebbe funzionare
www.example.com/products-category/monitors

Ok grazie. Ora ho un template taxonomy-products-monitors.php
, sono andato nella sezione permalink e ho cliccato salva (in questo modo si svuota la cache, giusto?) poi sono andato alla pagina http://www.neurosignsurgical.com/v2/products-category/monitors
ma mostra ancora un errore 404. Davvero non capisco perché!

Sì, così si svuota la cache. Tieni presente che i termini senza post probabilmente mostreranno un messaggio 'nessun risultato trovato'. Se il primo link funziona bene, allora è un problema di permalink. Dovresti usare questo plugin per diagnosticarlo. Un template non influisce su un errore 404.

Ho provato ad aggiungere nuovi prodotti e a categorizzarli come monitor, il primo link dava errore 404 e anche il secondo. Ho provato il plugin (aggiornerò la domanda con uno screenshot).

Riferimento: 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', // Nome del tuo Post Type che hai registrato
'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();

Per fare questo, aggiungi il seguente codice nel file functions.php (che si trova nella cartella del tema):
add_action( 'init', 'create_cw_hierarchical_taxonomy', 0 );
//crea un nome di tassonomia personalizzato
function create_cw_hierarchical_taxonomy() {
$labels = array(
'name' => _x( 'Argomenti', 'nome generale della tassonomia' ),
'singular_name' => _x( 'Argomento', 'nome singolare della tassonomia' ),
'search_items' => __( 'Cerca Argomenti' ),
'all_items' => __( 'Tutti gli Argomenti' ),
'parent_item' => __( 'Argomento Genitore' ),
'parent_item_colon' => __( 'Argomento Genitore:' ),
'edit_item' => __( 'Modifica Argomento' ),
'update_item' => __( 'Aggiorna Argomento' ),
'add_new_item' => __( 'Aggiungi Nuovo Argomento' ),
'new_item_name' => __( 'Nuovo Nome Argomento' ),
'menu_name' => __( 'Argomenti' ),
);
// registrazione della tassonomia
register_taxonomy('topics',array('post'), array(
'hierarchical' => true,
'labels' => $labels,
'show_ui' => true,
'show_admin_column' => true,
'query_var' => true,
'rewrite' => array( 'slug' => 'topic' ),
));
}
L'ho trovato qui e qui ho scoperto come creare una Tassonomia Non Gerarchica https://www.wpblog.com/create-custom-taxonomies-in-wordpress/
