Se abre en una pestaña nueva

Cómo crear un plugin con un Custom Post Type en WordPress

Crea paso a paso un plugin propio para registrar un Custom Post Type con sus taxonomías en WordPress, con el código explicado.

Javier Clausell

Por

Diseñador web y consultor SEO en Castellón

  • Actualizado
  • Publicado
  • 4 min de lectura
Buscador de plugins de WordPress con Simple Custom CSS and JS señalado

Una de las cosas que más me gusta de WordPress es su capacidad de personalización y la posibilidad de crear Custom Post Types (CPT). Puedes crear estas funcionalidades para gestionar portfolios, eventos, casi todo lo que se te ocurra. Por ejemplo, la sección de proyectos de mi web es un CPT, donde añado los diseños que voy creando.

Así que vamos al lío con este pequeño tutorial acerca de los Custom Post Type creando un plugin sencillo. Ya en otra guía, veremos como añadir datos dinámicos a estos CPT que puede resultar extremadamente interesante para ahorrar trabajo en nuestras webs.

¿Qué es un Custom Post Type y por qué usarlo?

Un Custom Post Type es un tipo de contenido personalizado que puedes crear para gestionar información específica en tu sitio web. Por defecto, WordPress viene con varios tipos de contenido integrados, como:

  • Post (entradas del blog).
  • Page (páginas estáticas).
  • Attachment (archivos subidos).

Con un CPT puedes crear algo completamente nuevo, como:

  • Una sección de eventos.
  • Un portfolio para proyectos (por ejemplo como el que tengo yo)
  • Una base de datos de libros o recetas.

Usar un plugin personalizado para crear un CPT es una práctica recomendada, ya que así mantienes tu código separado del tema y evitas problemas al cambiar de diseño.

Paso 1: crear la estructura básica del plugin

Primero, vamos a crear un plugin personalizado para gestionar tu Custom Post Type.

  1. Accede a los archivos de tu instalación de WordPress mediante FTP o desde el administrador de archivos de tu cPanel.
  2. Busca la carpeta /wp-content/plugins/ y crea una nueva carpeta. Por ejemplo: mi-cpt-plugin.
  3. Dentro de esa carpeta, crea un archivo PHP con el mismo nombre. Por ejemplo: mi-cpt-plugin.php.
  4. Abre el archivo con tu editor de código preferido y pega el siguiente código base:
<?php
/*
Plugin Name: Mi Plugin de CPT
Description: Un plugin para crear un Custom Post Type.
Version: 1.0
Author: Tu Nombre
*/

// Evitar acceso directo
if ( !defined( 'ABSPATH' ) ) exit;

Este archivo ahora es un plugin válido que puedes activar desde el panel de WordPress.

Paso 2: registrar el Custom Post Type

WordPress tiene una función llamada register_post_type() que usamos para registrar nuestro CPT. Añade el siguiente código dentro del archivo del plugin:

function mi_cpt_plugin_registrar_cpt() {

    $labels = array(
        'name'               => 'Proyectos',
        'singular_name'      => 'Proyecto',
        'menu_name'          => 'Proyectos',
        'name_admin_bar'     => 'Proyecto',
        'add_new'            => 'Añadir Nuevo',
        'add_new_item'       => 'Añadir Nuevo Proyecto',
        'edit_item'          => 'Editar Proyecto',
        'new_item'           => 'Nuevo Proyecto',
        'view_item'          => 'Ver Proyecto',
        'search_items'       => 'Buscar Proyectos',
        'not_found'          => 'No se encontraron proyectos',
        'not_found_in_trash' => 'No se encontraron proyectos en la papelera',
    );

    $args = array(
        'labels'             => $labels,
        'public'             => true,
        'has_archive'        => true,
        'rewrite'            => array( 'slug' => 'proyectos' ),
        'supports'           => array( 'title', 'editor', 'thumbnail', 'excerpt' ),
        'menu_icon'          => 'dashicons-portfolio',
        'show_in_rest'       => true,
    );

    register_post_type( 'proyectos', $args );
}

add_action( 'init', 'mi_cpt_plugin_registrar_cpt' );

Detalles del código

  • Labels: define los textos visibles en el panel de administración de WordPress.
  • public: hace que el Custom Post Type sea visible tanto en el panel de administración como en el front-end.
  • has_archive: permite tener una página de archivo para listar todos los elementos del CPT.
  • rewrite: define la URL amigable (slug).
  • supports: especifica qué opciones tendrá cada elemento (título, editor, imágenes destacadas, extracto etc.).
  • show_in_rest: lo hace visible para la API REST de WordPress. Sin esto, el CPT se edita con el editor clásico y algunas herramientas (el editor de bloques, aplicaciones externas) no lo ven.
  • menu_icon: cambia el icono en el panel de administración. Puedes encontrar más íconos en Dashicons (la web donde están todos los iconos).

Página oficial de Dashicons, los iconos del escritorio de WordPress

Paso 3: activar el plugin en nuestra web

  1. Entra al panel de administración de WordPress.
  2. Accede a Plugins > Plugins instalados.
  3. Encuentra tu plugin (“Mi Plugin de CPT”) y actívalo.
  4. Verás un nuevo menú llamado “Proyectos” en el panel de administración.

Paso 4: personalizar el CPT con taxonomías

Para categorizar y organizar tu contenido, puedes registrar taxonomías personalizadas. Añade este código debajo del registro del CPT:

function mi_cpt_plugin_registrar_taxonomias() {

    $labels = array(
        'name'              => 'Categorías de Proyectos',
        'singular_name'     => 'Categoría de Proyecto',
        'search_items'      => 'Buscar Categorías',
        'all_items'         => 'Todas las Categorías',
        'edit_item'         => 'Editar Categoría',
        'add_new_item'      => 'Añadir Nueva Categoría',
    );

    $args = array(
        'labels'            => $labels,
        'hierarchical'      => true,
        'public'            => true,
        'rewrite'           => array( 'slug' => 'categorias-proyectos' ),
    );

    register_taxonomy( 'categorias_proyectos', 'proyectos', $args );
}

add_action( 'init', 'mi_cpt_plugin_registrar_taxonomias' );

Este código crea una taxonomía personalizada similar a las categorías de las entradas.

Paso 5: prueba y ajustes finales

  1. Ve al nuevo menú de “Proyectos” y crea un proyecto de prueba.
  2. Revisa que los campos como título, contenido y miniatura funcionen correctamente.
  3. Accede a la página de archivo (tusitio.com/proyectos/) para ver la lista de proyectos.

Depuración de URL

Si no ves la página de archivo (o te da un error 404), ve a Ajustes > Enlaces permanentes y guarda los cambios sin modificar nada. Esto regenera las URL amigables. Si quieres que el plugin lo haga solo al activarlo, añade al final del archivo:

register_activation_hook( __FILE__, function () {
    mi_cpt_plugin_registrar_cpt();
    mi_cpt_plugin_registrar_taxonomias();
    flush_rewrite_rules();
} );

Un aviso: si cambias el slug del CPT cuando ya tiene contenido publicado, las URL antiguas darán error 404. Tendrás que crear redirecciones 301.

Y hasta aquí esta miniguía de cómo crear un Custom Post Type en un plugin de WordPress. Si no quieres tocar código, hay alternativas: el plugin Custom Post Type UI, o Advanced Custom Fields, que desde su versión 6.1 también registra CPT y taxonomías. Pero hacerlo con un plugin propio y algo de código es una práctica profesional que te da control total y no depende de nadie. Y una vez creado, con Bricks puedes listar los proyectos con un Query Loop y diseñar su plantilla individual.

Si esta guía te ha sido útil, ¡no dudes en compartirla! Y si necesitas ayuda profesional para personalizar tu WordPress, contáctame para hacer realidad tu proyecto.

Javier Clausell

Sobre el autor

Javier Clausell

Diseño webs en WordPress para pymes y autónomos de Castellón y me encargo de que aparezcan en Google. Lo que cuento en el blog es lo mismo que aplico en los proyectos de mis clientes.

Si no tienes tiempo para esto

¿Quieres un WordPress que no tengas que arreglar tú?

Diseño webs WordPress a medida, rápidas y fáciles de editar. Y si ya tienes una, también la mantengo.

Ver diseño web WordPressCalcula tu presupuesto

Sigue leyendo

Más de WordPress
logo-lawebquemola
Resumen de privacidad

Esta web utiliza cookies para que podamos ofrecerte la mejor experiencia de usuario posible. La información de las cookies se almacena en tu navegador y realiza funciones tales como reconocerte cuando vuelves a nuestra web o ayudar a nuestro equipo a comprender qué secciones de la web encuentras más interesantes y útiles.

Más información en la política de privacidad.