URL de página de archivo de tipo de entrada personalizada que apunte al enlace permanente de página
Deseo que mi 'página de archivo de tipo de entrada personalizada' apunte a una Página.
La situación es la siguiente:
Tengo una Page
en WordPress con enlace permanente http://myurl.com/galleries
. Esta página muestra una lista de entradas con tipo de entrada personalizada = vmgallery
. Tengo una lógica personalizada para esta página que funciona correctamente.
Desde otro punto de vista, esta página funciona como una "página de archivo de tipo de entrada personalizada", porque muestra todas las entradas para el tipo de entrada personalizada vmgallery. Actualmente, si el usuario va a http://myurl.com/vmgallery/, WordPress carga la página de archivo (archive.php), pero en su lugar, deseo que se cargue la página http://myurl.com/galleries
.
¿Cómo puedo lograr esto?
Tienes múltiples opciones aquí.
1. Definir el slug del archivo del tipo de publicación en el registro del tipo de publicación
Al establecer 'has_archive' => 'galleries'
puedes definir un slug personalizado para el archivo del tipo de publicación.
Consulta la documentación.
Luego puedes eliminar tu página "galleries" y añadir & personalizar el archive-post_type.php
2. Desactivar el archivo predeterminado para el tipo de publicación
Desactiva el archivo estableciendo 'has_archive' => false
y mantén la página como archivo del tipo de publicación.
3. Redirigir las solicitudes del archivo a tu página
Puedes redirigir permanentemente las solicitudes del archivo predeterminado a tu página.
function archive_to_custom_archive() {
if( is_post_type_archive( 'post_slug' ) ) {
wp_redirect( home_url( '/galleries/' ), 301 );
exit();
}
}
add_action( 'template_redirect', 'archive_to_custom_archive' );
¡Diría que el primer método es bueno!

¿Podrías sugerir qué opción sería mejor si también tengo una "taxonomía personalizada para este tipo de contenido personalizado" (el nombre de la taxonomía personalizada es 'gallery_categories', un ejemplo de categoría de galería es "auto"). Y me gustaría que http://myurl.com/galleries/auto funcionara igual que http://myurl.com/galleries. Me gustaría que tuviera casi el mismo código (el código verificaría si es 'galleries' o 'galleries'/xxx y actuaría de la misma manera con pequeñas diferencias)?

El archivo de tipo de contenido personalizado y el archivo de taxonomía personalizada son diferentes. La primera opción siempre es buena pero no funcionará como http://myurl.com/galleries/auto
No puedes obtener resultados del término auto
. Para esto necesitarás una plantilla de página personalizada y reescritura de URL para analizar la solicitud como http://example.com/page-name/?mytax=auto

Genial. Para mí solo funcionó la tercera opción porque mi caso era sobre redirigir la solicitud del archivo a una publicación específica de este tipo de publicación. Así que agregué home_url( '/galleries/slug-de-alguna-publicacion' ) dentro del método wp_redirect() y así funcionó. Gracias

A continuación se muestra el código para eliminar el enlace de la página de archivo sin afectar la URL de la publicación individual. Además, puedes crear una página con el slug de archivo.
function dg_custom_post_type_args( $args, $post_type ) {
if ( $post_type === "custom post type" ) {
$args['rewrite'] = array(
'with_front' => false,
'slug' => 'slug here'
);
}
return $args;
}
add_filter( 'register_post_type_args', 'dg_custom_post_type_args', 20, 2 );

Este código resolvió mi problema.
function redirect_cpt_archive() {
if( is_post_type_archive( 'galleries' ) ) {
wp_redirect( home_url( '/galleries/post-url/' ), 301 );
exit();
}
}
add_action( 'template_redirect', 'redirect_cpt_archive' );
En tu tipo de entrada personalizado en functions.php
debes actualizar 'has_archive' => true
.
