Mostrar taxonomías de tipos de entradas personalizadas como una página de archivo

4 ago 2017, 19:59:38
Vistas: 19.1K
Votos: 3

Hola, tengo un tipo de entrada personalizada llamado results. También creé categorías para ese tipo de entrada específica usando una taxonomía. No estoy seguro de si lo configuré correctamente, pero el código que tengo funciona, así que me quedo con él. Si ves una mejor manera o algún error, por favor házmelo saber.

Puedo crear una entrada personalizada y asignarle una categoría. A continuación, me gustaría crear una página de categorías que actúe como el archive.php normal, pero solo para la categoría de los tipos de entradas personalizadas.

Así que digamos que tengo una entrada personalizada para results y tengo su categoría establecida en car accidents, me gustaría una manera de mostrarlas todas como lo hace archive.php para las entradas normales.

Intenté ir a una URL como esta, pero me redirige a una página 404, aunque tengo un archive-results.php

www.myurl.com/results/categories/car-accidents

Aquí está el código que usé para configurar el tipo de entrada personalizada y la taxonomía. Lo siento si es largo, pero siento que es necesario incluirlo todo.

// Crear tipo de entrada personalizada
function create_posttype() {
    register_post_type( 'Results',
        array(
            'labels' => array(
                'name' => __( 'Results' ),
                'singular_name' => __( 'Results' )
            ),
            'public' => true,
            'has_archive' => true,
            'rewrite' => array('slug' => 'results'),
            'taxonomies'  => array( 'results', 'result-category' ),
        )
    );
}
add_action( 'init', 'create_posttype' );

// Crear categoría para el tipo de entrada específico
function tr_create_my_taxonomy() {
    register_taxonomy(
        'results-categories',
        'results',
        array(
            'label' => __( 'Result Categories' ),
            'rewrite' => array( 'slug' => 'result-category' ),
            'hierarchical' => true,
            'has_archive' => true
        )
    );
}
add_action( 'init', 'tr_create_my_taxonomy' );

¿Me estoy perdiendo algo que está evitando que esta URL funcione?

www.myurl.com/results/categories/car-accidents

Gracias de antemano

2
Comentarios

lo configuraste como result-category donde registraste la taxonomía, cámbialo a results/categories

Milo Milo
4 ago 2017 20:19:37

¿en la primera o segunda función?

cup_of cup_of
4 ago 2017 20:32:36
Todas las respuestas a la pregunta 1
0

Tus URLs deseadas:

www.example.com/resultados/nombre-del-post/
www.example.com/resultados/categorias/nombre-de-la-categoria/

Dos cambios respecto a tu código original:

  1. Se agregó prioridad a ambos hooks add_action para invertir el orden en que se ejecutan. El orden importa en este caso, porque las reglas de reescritura de adjuntos del tipo de publicación anulan las reescrituras de taxonomía. Efecto secundario: ¡las URLs de adjuntos no funcionan para este tipo de publicación!

  2. La reescritura para la taxonomía se cambió a resultados/categorias.


// Crear tipo de publicación personalizado
function create_posttype() {
    register_post_type( 'results',
        array(
            'labels' => array(
                'name' => __( 'Resultados' ),
                'singular_name' => __( 'Resultados' )
            ),
            'public' => true,
            'has_archive' => true,
            'rewrite' => array('slug' => 'resultados'),
            'taxonomies'  => array( 'results', 'result-category' ),
        )
    );
}
// PRIORIDAD AGREGADA
add_action( 'init', 'create_posttype', 9 );

// Crear categoría para tipo de publicación específico
function tr_create_my_taxonomy() {
    register_taxonomy(
        'results-categories',
        'results',
        array(
            'label' => __( 'Categorías de Resultados' ),
            // SLUG MODIFICADO
            'rewrite' => array( 'slug' => 'resultados/categorias' ),
            'hierarchical' => true,
            'has_archive' => true
        )
    );
}
// PRIORIDAD AGREGADA
add_action( 'init', 'tr_create_my_taxonomy', 8 );

También ten en cuenta que la plantilla general más específica para esto será taxonomy-results-categories.php, que recurrirá a taxonomy.php y luego a archive.php si no existe.

4 ago 2017 21:58:24