Mostrar taxonomías de tipos de entradas personalizadas como una página de archivo
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
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:
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!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.
