Contents
Cómo registrar Custom Post Types con register_post_type
En el desarrollo de sitios en WordPress, los Custom Post Types (CPT) ofrecen una forma poderosa de extender la funcionalidad nativa más allá de las entradas y páginas. Este artículo detalla paso a paso cómo crear, configurar y optimizar tus propios tipos de contenido usando la función register_post_type. Lo haremos con un enfoque profesional y minimalista, incluyendo ejemplos, buenas prácticas y enlaces oficiales.
1. Introducción a los Custom Post Types
Un Custom Post Type es un tipo de contenido personalizado que puedes registrar en WordPress. A diferencia de las entradas (post) y páginas (page), tus CPT pueden tener etiquetas, taxonomías, metaboxes y comportamientos propios.
- Flexibilidad: Definir campos, plantillas y capacidades únicas.
- Organización: Separar contenido por tipo (por ejemplo, eventos, portafolio, recetas).
- Escalabilidad: Facilita la evolución de un sitio conforme crecen los requerimientos.
2. La función register_post_type
La función principal para registrar un CPT es register_post_type( post_type, args ). Se debe invocar dentro de un hook apropiado, normalmente init:
add_action(init, mi_registro_eventos)
function mi_registro_eventos() {
labels = array(
name =gt Eventos,
singular_name =gt Evento,
menu_name =gt Eventos,
name_admin_bar =gt Evento,
add_new =gt Añadir nuevo,
add_new_item =gt Añadir nuevo evento,
edit_item =gt Editar evento,
view_item =gt Ver evento,
all_items =gt Todos los eventos,
search_items =gt Buscar eventos,
not_found =gt No se encontraron eventos,
not_found_in_trash =gt No se encontraron eventos en la papelera
)
args = array(
labels =gt labels,
public =gt true,
has_archive =gt true,
supports =gt array(title,editor,thumbnail),
rewrite =gt array(slug =gt eventos),
)
register_post_type(evento, args)
}
3. Desglose de argumentos esenciales
| Argumento | Descripción |
|---|---|
public |
Determina si el CPT es público (front-end) y aparece en admin. |
labels |
Array con las etiquetas que verán los usuarios en el dashboard. |
supports |
Define funcionalidades habilitadas: título, editor, autor, thumbnail, etc. |
show_in_menu |
Ubicación en el menú de admin: true, false o slug de otro CPT. |
has_archive |
Habilita página de archivo para el tipo de contenido. |
rewrite |
Configura URLs amigables (slug, con/without front). |
4. Labels: personalización al detalle
El array labels acepta más de 20 índices. Entre los más utilizados:
name: Nombre plural (p. ej. Eventos).singular_name: Nombre singular (Evento).add_newyadd_new_item: Textos para añadir contenido.all_items,search_items,not_found…
5. Soportes y metaboxes
Con supports =gt array(...) eliges qué metaboxes aparecen al editar. Los más comunes:
- title: Título.
- editor: Contenido principal.
- thumbnail: Imagen destacada.
- excerpt: Extracto.
- custom-fields: Campos personalizados.
- comments: Comentarios.
6. Permalinks y rewrite rules
Para que las URLs de tu CPT funcionen correctamente, asegúrate de “refrescar” las reglas de reescritura al activar tu plugin o tema:
function activar_mi_plugin() {
mi_registro_eventos()
flush_rewrite_rules()
}
register_activation_hook(__FILE__, activar_mi_plugin)
En la desactivación, conviene limpiar:
function desactivar_mi_plugin() {
unregister_post_type(evento)
flush_rewrite_rules()
}
register_deactivation_hook(__FILE__, desactivar_mi_plugin)
7. Capabilities y seguridad
Controla quién puede ver o editar tu CPT con la opción capability_type y capabilities. Ejemplo:
args[capability_type] = array(evento,eventos) args[map_meta_cap] = true
Esto crea capacidades como edit_evento, publish_eventos… que puedes asignar a roles.
8. Taxonomías personalizadas
Mucha veces los CPT van de la mano de taxonomías propias. Regístralas con register_taxonomy:
add_action(init,mi_taxonomia_temas)
function mi_taxonomia_temas() {
labels = array( name =gt Temas, singular_name =gt Tema )
register_taxonomy(tema,evento, array(
labels =gt labels,
hierarchical =gt true,
show_ui =gt true,
rewrite =gt array(slug =gt temas)
))
}
9. Buenas prácticas y depuración
- Prefijos únicos: evita colisiones usando nombres propios (
mi_eventoen lugar deevento). - Internacionalización: envuelve textos con
__()o_e(). - Uso de Capabilities: no confíes solo en
publicpara controlar permisos. - Depuración: utiliza plugins como Query Monitor para revisar consultas y errores.
10. Recursos adicionales
Conclusión
Registrar Custom Post Types con register_post_type es una de las técnicas más potentes para adaptar WordPress a necesidades específicas. Siguiendo este artículo tendrás las bases para crear contenido organizado, seguro y optimizado. ¡Manos a la obra!
|
|
Acepto donaciones de BAT's mediante el navegador Brave 🙂 |
