¿Cómo crear una plantilla personalizada para una taxonomía personalizada?
Tengo lo siguiente que he utilizado para crear un tipo de contenido personalizado y una taxonomía personalizada.
Dentro de la sección de productos he creado las categorías "monitores" y "consumibles".
Luego he creado la plantilla taxonomy-monitors.php, ¿está correctamente nombrada para la categoría monitores? ¿Y cuál es la URL que necesito visitar para ver solo la categoría de monitores usando esa plantilla?
add_action( 'init', 'create_post_type' );
function create_post_type() {
register_post_type( 'products',
array(
'labels' => array(
'name' => __( 'Productos' ),
'singular_name' => __( 'Producto' )
),
'capability_type' => 'post',
'supports' => array('title','editor','comments'),
'public' => true,
'has_archive' => true,
'rewrite' => array( 'slug' => 'products' ),
)
);
}
function news_init() {
// crear una nueva taxonomía
register_taxonomy(
'products',
'products',
array(
'label' => __( 'Categorías de Productos' ),
'sort' => true,
'hierarchical' => true,
'args' => array( 'orderby' => 'term_order' ),
'rewrite' => array( 'slug' => 'products-category' )
)
);
}
add_action( 'init', 'news_init' );
ACTUALIZACIÓN
Plantillas
Consulta la Jerarquía de Plantillas para un desglose más detallado de cómo WordPress elige la plantilla.
Para un término de taxonomía slug
('monitores' en tu ejemplo) en la taxonomía taxonomy
(por ejemplo, 'productos'), WordPress intentará usar las siguientes plantillas (en este orden)
taxonomy-{taxonomy}-{slug}.php
taxonomy-{taxonomy}.php
taxonomy.php
archive.php
index.php
Para tu página de término de taxonomía 'monitores', WordPress usará
taxonomy-products-monitors.php
si existe. Si no existe, entonces para esa taxonomía recurrirá a
taxonomy-products.php
y así sucesivamente.
Enlaces permanentes
La siguiente URL debería apuntar a la página de productos 'monitores':
www.example.com?products=monitors
También has especificado una reescritura de URL, por lo que asumiendo que las reglas de reescritura se han actualizado y no hay conflicto, lo siguiente también debería funcionar
www.example.com/products-category/monitors

Vale, gracias. Ahora tengo una plantilla taxonomy-products-monitors.php
, fui a la sección de enlaces permanentes y hice clic en guardar (eso lo actualiza, ¿verdad?) luego fui a la página http://www.neurosignsurgical.com/v2/products-category/monitors
pero sigue mostrando un 404. ¡Realmente no entiendo por qué!

Sí, eso lo actualiza. Ten en cuenta que los términos sin publicaciones probablemente mostrarán un 'nada encontrado'. Si el primer enlace funciona bien, entonces es un problema de enlace permanente. Deberías usar este complemento para diagnosticarlo. Una plantilla no afecta a un 404.

He intentado añadir nuevos productos y categorizarlos como monitores, el primer enlace dio un 404 y el segundo también. Probé el complemento (actualizaré la pregunta con una captura de pantalla).

Referencia: 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', // Nombre de tu tipo de entrada personalizada
'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();

Para esto, agrega el siguiente código en el functions.php (ubicado en la carpeta del tema):
add_action( 'init', 'create_cw_hierarchical_taxonomy', 0 );
//crear un nombre de taxonomía personalizada
function create_cw_hierarchical_taxonomy() {
$labels = array(
'name' => _x( 'Temas', 'nombre general de la taxonomía' ),
'singular_name' => _x( 'Tema', 'nombre singular de la taxonomía' ),
'search_items' => __( 'Buscar Temas' ),
'all_items' => __( 'Todos los Temas' ),
'parent_item' => __( 'Tema Padre' ),
'parent_item_colon' => __( 'Tema Padre:' ),
'edit_item' => __( 'Editar Tema' ),
'update_item' => __( 'Actualizar Tema' ),
'add_new_item' => __( 'Agregar Nuevo Tema' ),
'new_item_name' => __( 'Nombre del Nuevo Tema' ),
'menu_name' => __( 'Temas' ),
);
// registrar taxonomía
register_taxonomy('temas',array('post'), array(
'hierarchical' => true,
'labels' => $labels,
'show_ui' => true,
'show_admin_column' => true,
'query_var' => true,
'rewrite' => array( 'slug' => 'tema' ),
));
}
Lo encontré aquí y aquí encontré cómo crear una Taxonomía No Jerárquica https://www.wpblog.com/create-custom-taxonomies-in-wordpress/
