
🚀 Cómo crear una página de archivo para tipos de contenido personalizados en WordPress
Cuando un sitio supera la etapa de «blog más unas pocas páginas», las entradas y categorías estándar ya no son suficientes. Portafolios, equipos, testimonios, casos de estudio, ofertas de empleo: todo esto necesita vivir en su propia estructura en lugar de ser comprimido en el flujo general de publicaciones con soluciones improvisadas basadas en categorías.
WordPress resuelve este problema mediante los custom post types. Pero crear un CPT no basta; usted también necesita una página donde se reúnan todas las entradas de ese tipo: una página de archivo. Sin ella, los visitantes simplemente no verán los elementos de su portafolio o los miembros de su equipo exhibidos como un bloque unificado.
Plugins de cuadrícula como Essential Grid se encargan del aspecto visual, pero añaden CSS y JS adicionales. En proyectos pequeños esto pasa desapercibido, pero en un sitio con decenas de miles de visitantes cada kilobyte cuenta. El mecanismo de archivo nativo de WordPress proporciona la misma funcionalidad sin sobrecarga en el frontend, y se configura en solo 10 minutos.
💡 Resumen rápido:
- Cree un custom post type mediante CPT UI y active el soporte de archivo en los ajustes desde el principio
- Escriba una plantilla personalizada para un control preciso del diseño si lo necesita
- Configure los metadatos SEO a través de Yoast SEO: título, descripción y og:image para la página de archivo
- Desactive la barra lateral y añada el marcado Open Graph si es necesario
1. Creación de un custom post type
La forma más sencilla y fiable de registrar un CPT sin una sola línea de código es el plugin Custom Post Type UI. Está instalado en más de un millón de sitios y recibe mantenimiento desde 2010, y su interfaz es intuitiva: los campos del formulario se corresponden uno a uno con los argumentos de la función register_post_type().

Tras instalar el plugin, vaya a CPT UI → Add/Edit Post Types. Rellene lo mínimo:
- Post Type Slug: caracteres latinos, sin espacios (por ejemplo
portfolio) - Plural Label: "Portfolio"
- Singular Label: "Work"
Puede dejar el resto de ajustes con sus valores predeterminados; los valores por defecto cubren la gran mayoría de los escenarios típicos. Haga clic en Add Post Type y el nuevo tipo aparecerá en el panel de administración como un elemento de menú independiente.
2. Configuración de la página de archivo
Para que las entradas del nuevo tipo se recopilen en una página separada, debe activar explícitamente el soporte de archivo. Viene desactivado por defecto.
Vaya a CPT UI → Edit Post Types y seleccione el tipo que creó de la lista:

Desplácese hacia abajo hasta la sección Settings y rellene dos campos clave:

- Has Archive: establézcalo en
True. Este es el interruptor de la página de archivo. - Custom Rewrite Slug: el slug donde el archivo será accesible. Normalmente coincide con el slug del tipo de entrada (por ejemplo
portfolio).
Guarde los cambios y navegue a http://YOUR_SITE/portfolio. Verá una lista de todas las entradas de este tipo, estilizadas con la plantilla estándar archive.php del tema activo:

La página básica está lista. Si la apariencia estándar es suficiente, puede detenerse aquí. Pero en la mayoría de los casos querrá refinar el aspecto.
3. Plantilla personalizada archive-{posttype}.php
WordPress utiliza una jerarquía de plantillas clara. Cuando un visitante llega a una página de archivo de CPT, el núcleo busca archivos en este orden:
archive-{posttype}.phparchive.phpindex.php
Esto significa que solo necesita crear un archivo llamado archive-portfolio.php (donde portfolio es el slug de su tipo de entrada) y WordPress lo seleccionará automáticamente.
Pasos:
Copie el contenido de archive.php de su tema en un nuevo archivo archive-portfolio.php. Luego modifique el marcado para adaptarlo a sus necesidades: oculte la fecha si no es relevante para un portafolio; muestre la miniatura en un tamaño diferente; sustituya the_excerpt() estándar por the_content().
1 <?php 2 /* Template for Portfolio archive — overrides archive.php */ 3 4 if ( have_posts() ) { 5 while ( have_posts() ) { 6 the_post(); 7 // Your custom markup here 8 the_post_thumbnail( 'medium' ); 9 the_title( '<h3>', '</h3>' ); 10 the_excerpt(); 11 } 12 }
Si trabaja con un tema FSE (tema de bloques), la plantilla de archivo se crea en el editor del sitio: Apariencia → Editor → Plantillas → Añadir nueva plantilla → Archivo: Portfolio. Sin PHP, puramente bloques, pero la lógica es la misma: diseño personalizado para un CPT específico.
4. Optimización SEO para la página de archivo
Una página de archivo no es solo una URL utilitaria. Los motores de búsqueda la indexan y puede generar tráfico fácilmente para consultas comerciales como «portafolio de estudio web» o «equipo de agencia».
Si tiene instalado Yoast SEO, los metadatos para los archivos de CPT se configuran en un solo lugar:

Abra Yoast SEO → Ajustes → Tipos de contenido, busque su Custom Post Type y expanda la sección. Establezca plantillas para el título y la meta descripción:

Plantillas recomendadas:
- Título:
%%pt_plural%% %%page%%, %%sitename%% - Meta descripción:
%%pt_plural%%, work samples, case studies and projects. %%sitename%%
Yoast sustituye automáticamente las variables %%pt_plural%% y %%pt_single%% a partir de la configuración de su CPT. No olvide desactivar noindex para la página de archivo si está habilitado por defecto; la casilla Mostrar en los resultados de búsqueda debe estar activa.
5. Marcado Open Graph y barra lateral
Para asegurarse de que se obtenga una imagen al compartir el enlace de la página de archivo en redes sociales, añada og:image mediante el hook wp_head. Inserte el código en el archivo functions.php de su tema activo o a través del plugin Code Snippets:
1 add_action( 'wp_head', 'cpt_archive_og_image' ); 2 function cpt_archive_og_image() { 3 if ( is_post_type_archive( 'portfolio' ) ) { 4 echo '<meta property="og:image" content="' . 5 get_template_directory_uri() . '/images/portfolio-og.jpg' . '" />'; 6 } 7 }
La condición is_post_type_archive() se activa solo en la página de archivo del CPT especificado, por lo que el marcado no afectará a otras páginas. Coloque la imagen en la carpeta de su tema o súbala a través de la biblioteca multimedia y use la URL directa.
Un último detalle: la barra lateral. En las páginas de archivo a menudo es innecesaria, especialmente para portafolios o equipos donde el ancho de las tarjetas importa. La mayoría de los temas modernos le permiten desactivar la barra lateral en los ajustes de página:

En los temas de bloques, cambie la plantilla a Ancho completo en los ajustes de la página de archivo. En los temas clásicos, busque Atributos de página → Plantilla → Ancho completo en el personalizador o en la caja de edición.
📺 Vídeo: todo el proceso en 8 minutos
Una breve demostración en inglés que cubre la creación del CPT, la activación del archivo y una plantilla personalizada desde el primer clic hasta la página terminada:
⁉️🤔 Preguntas frecuentes
¿Por qué la página de archivo devuelve un error 404 después de crear el CPT?
Lo más probable es que no haya activado el parámetro Has Archive. Vaya a CPT UI → Edit Post Types, encuentre su tipo, establezca Has Archive en True y especifique un Custom Rewrite Slug. Después de guardar, asegúrese de ir a Ajustes → Enlaces permanentes y haga clic en «Guardar cambios»; esto vacía la caché de reglas de reescritura.
¿Puedo prescindir del plugin CPT UI?
Sí, los custom post types se pueden registrar en
functions.phpmediante la funciónregister_post_type(). Ocupa unas 15-20 líneas de código, un par de minutos para un desarrollador. El plugin simplemente proporciona una interfaz visual y evita errores tipográficos en los argumentos.
¿Cómo muestro las entradas del CPT en la página de inicio?
Añada
'has_archive' => truea los argumentos deregister_post_type(), y para incluir las entradas en el flujo principal, establezca'public' => truey'exclude_from_search' => false. Para una salida dirigida, useWP_Querycon el argumento'post_type' => 'portfolio'.
¿Cuál es la diferencia entre archive-{posttype}.php y taxonomy-{taxonomy}.php?
El primero gestiona la página con TODAS las entradas del CPT; el segundo gestiona el filtrado por un término de taxonomía específico (por ejemplo, «Tipo de proyecto: landing page»). Ambos siguen la jerarquía de plantillas pero se activan en URLs diferentes.
¿Es obligatoria una plantilla personalizada?
No. Si el
archive.phpestándar le sirve, simplemente active Has Archive y utilícelo. Una plantilla personalizada es necesaria cuando requiere un marcado único: diferentes tamaños de miniatura, sin fechas, una cuadrícula en lugar de una lista.
¿Qué ocurre si la plantilla estándar no le funciona?
Una página de archivo para entradas personalizadas es algo que se configura una vez y se olvida. CPT UI más unas pocas líneas en functions.php cubren el asunto por completo: sin plugins todo en uno, sin código extra en el frontend.
Si después de leer esto aún tiene preguntas sobre una combinación específica de tema o plugin, deje un comentario debajo de la entrada. Examinaremos su caso por separado.



