¿Cómo crear una plantilla personalizada para una taxonomía personalizada?

15 ago 2012, 13:00:24
Vistas: 94K
Votos: 10

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 Imagen descriptiva de taxonomías personalizadas en WordPress

0
Todas las respuestas a la pregunta 3
4
15

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
15 ago 2012 13:32:25
Comentarios

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é!

Rob Rob
15 ago 2012 14:20:25

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.

Stephen Harris Stephen Harris
15 ago 2012 17:00:53

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).

Rob Rob
15 ago 2012 17:17:22

Parece que no has actualizado tus enlaces permanentes. Ve a Ajustes > Enlaces permanentes y simplemente haz clic en 'Guardar' nuevamente para forzar una actualización de las reglas de reescritura.

Tom Auger Tom Auger
15 ago 2012 18:34:33
1

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();
28 dic 2018 07:32:45
Comentarios

Por favor, [edita] tu respuesta y añade una explicación: ¿por qué esto podría resolver el problema?

fuxia fuxia
28 dic 2018 09:19:11
0

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/

10 ago 2017 10:13:09