Registrar un Custom Post Type en WordPress

Php marzo 7, 2026
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',
            'view_item'     => 'Ver 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, // Activa el editor Gutenberg
    ) );
}
add_action( 'init', 'mi_plugin_register_cpt' );
  • Cambia proyecto / proyectos por tu tipo de contenido
  • show_in_rest: true es obligatorio si quieres usar el editor de bloques
  • has_archive: true crea automáticamente la página /proyectos/
  • Después de guardar, ve a Ajustes → Enlaces permanentes y haz clic en Guardar para que WordPress registre la nueva URL
  • Para añadir campos personalizados al CPT, combínalo con el snippet de [taxonomía personalizada] o [meta fields]