Registrar un Custom Post Type
Los Custom Post Types (CPT) permiten crear nuevos tipos de contenido más allá de posts y páginas. Úsalos cuando necesites gestionar portfolios, productos, eventos, inmuebles o cualquier entidad que tenga sus propios campos y su propio archivo. Se definen en un plugin (nunca en el tema) para no perder el contenido al cambiar de diseño.
Casos de uso: portafolio de proyectos, catálogo de productos sin WooCommerce, directorio de profesionales, base de conocimiento.
<?php
function mi_plugin_register_cpt() {
register_post_type( 'proyecto', array(
'labels' => array(
'name' => 'Proyectos',
'singular_name' => 'Proyecto',
'add_new_item' => 'Añadir proyecto',
'edit_item' => 'Editar proyecto',
'all_items' => 'Todos los proyectos',
'not_found' => 'No se encontraron proyectos',
),
'public' => true,
'has_archive' => true,
'rewrite' => array( 'slug' => 'proyectos' ),
'supports' => array( 'title', 'editor', 'thumbnail', 'excerpt' ),
'menu_icon' => 'dashicons-portfolio',
'show_in_rest' => true,
) );
}
add_action( 'init', 'mi_plugin_register_cpt' );
¿Qué hace cada parte?
- register_post_type(): función principal de WordPress que registra el nuevo tipo de contenido con el slug
proyecto. - labels: textos que aparecen en el panel de administración — nombre en plural, singular, botones de acción y mensajes de estado.
- public => true: hace el CPT visible tanto en el admin como en el frontend del sitio.
- has_archive => true: crea una página de archivo accesible en
/proyectos/que lista todas las entradas del CPT. - rewrite: define el slug que aparece en las URLs de las entradas y del archivo.
- supports: activa los metaboxes estándar de WordPress —
editoractiva Gutenberg,thumbnailla imagen destacada. - show_in_rest => true: expone el CPT en la REST API y habilita el editor de bloques Gutenberg.
- add_action( ‘init’ ): engancha el registro al hook
init, el momento correcto en el ciclo de WordPress para registrar tipos de contenido.
