Wordpress Avanzado con Custom Post Type

Creando un Custom Post Type en WordPress sin Plugins

Son vacaciones y mientras escribía ayer sobre como crear un child theme, me dio la necesidad de escribir ahora sobre como crear un Custom Post Type en WordPress sin necesidad de plugins, esto es algo poderoso dentro del ecosistema de WordPress. ¿no me crees?, veamos por que.

Índice de Contenido
  1. ¿Por qué usar un Custom Post Types?
  2. Requisitos previos
  3. Paso 1: ¿Dónde registrar el Custom Post Type?
  4. Paso 3: Regenerar enlaces permanentes
  5. Paso 4: Verifica que todo esté funcionando
  6. Conclusión

¿Por qué usar un Custom Post Types?

Debes entender que en WordPress el contenido se organiza principamente en posts (entradas) y pages (páginas). Sin embargo, cuando el proyecto crece, esto ya no puede seguir manteniéndose en un simple wordpress, sino que necesitas más control, y la necesidad de segmentar tu información por ejemplo agregar secciones exclusivas de proyectos, testimonios, cursos, portafolios, casos de estudio, etc.

Y es ahí donde entran los Custom Post Types (CPT): tipos de contenido personalizados que amplían las capacidades de WordPress sin alterar su estructura interna. Por ese motivo, te enseñaré a como registrar un CPT desde cero, sin plugins, directamente de tu child theme, que si leíste el post anterior te diste cuenta que lo hicimos a través de la plantilla Twenty Twenty-Five , siguiendo la lógica y continuidad de estos temas de WordPress Avanzado, comencemos.

Requisitos previos

Antes de comenzar este pequeño tutorial, debes de tener lo siguiente:

  • WordPress instalado y funcionando.
  • Un tema hijo basado en la plantilla que gustes.
  • Archivos style.css y functions.php correctamente configurados (tal como el post anterior).

Paso 1: ¿Dónde registrar el Custom Post Type?

Vamos a trabajar directamente en el archivo functions.php del tema hijo, ya que es la forma más directa y práctica de registrar un CPT sin utilizar plugins. Pero antes de que lo hagamos, quiero que veas como se ve nuestro panel de gestión de WordPress ahora mismo:

Panel de Gestión de WordPress antes de agregar el Custom Post Type

Ahora si, nos vamos a dirigir a nuestra ruta del archivo:

/wp-content/themes/twentytwentyfive-child/functions.php

Este Custom Post Type lo usaremos como ejemplo a lo largo de nuestros próximos tutoriales de WordPress Avanzado, vamos a pegar este código justo debajo del último código PHP que hicimos cuando creamos nuestro child theme o "tema hijo".

<?php
// Evita el acceso directo al archivo
if ( ! defined( 'ABSPATH' ) ) exit;

/**
 * Registrar Custom Post Type: Manuales
 */
function cjm_registrar_cpt_manuales() {

    $labels = array(
        'name'               => 'Manuales',
        'singular_name'      => 'Manual',
        'menu_name'          => 'Manuales',
        'name_admin_bar'     => 'Manual',
        'add_new'            => 'Añadir nuevo',
        'add_new_item'       => 'Añadir nuevo manual',
        'new_item'           => 'Nuevo manual',
        'edit_item'          => 'Editar manual',
        'view_item'          => 'Ver manual',
        'all_items'          => 'Todos los manuales',
        'search_items'       => 'Buscar manuales',
        'not_found'          => 'No se encontraron manuales',
        'not_found_in_trash' => 'No hay manuales en la papelera'
    );

    $args = array(
        'labels'             => $labels,
        'public'             => true,
        'has_archive'        => true,
        'rewrite'            => array( 'slug' => 'manuales' ),
        'show_in_rest'       => true, // Permite usar el editor de bloques
        'supports'           => array( 'title', 'editor', 'thumbnail', 'excerpt', 'custom-fields' ),
        'menu_icon'          => 'dashicons-book',
    );

    register_post_type( 'manuales', $args );
}
add_action( 'init', 'cjm_registrar_cpt_manuales' );

Por si tienes dudas, lo pegamos justamente así:

Ejemplo de como agregar el código de un Custom Post Type.

Notas importantes:

  • cjm_registrar_cpt_manuales es el nombre que yo le dí a mi función (tu lo puedes cambiar).
  • register_post_type() es la función principal para declarar un CPT.
  • show_in_rest => true asegura compatibilidad con el editor de bloques (Gutenberg).
  • rewrite => ['slug' => 'manuales'] define la URL amigable.
  • menu_icon puede cambiarse según tus necesidades (Ver lista de dashicons).
Si decides cambiar el nombre de la función que yo le puse, no olvides que deberás colocarla al final, nuevamente en la línea de add_action( 'init', 'cjm_registrar_cpt_manuales' );

Paso 3: Regenerar enlaces permanentes

Después de guardar el código, ve a:

Ajustes → Enlaces permanentes → Guardar cambios (sin cambiar nada).

👉 Esto fuerza a WordPress a registrar las nuevas reglas de URLs para el CPT.

Regenerar enlaces permanentes

Paso 4: Verifica que todo esté funcionando

  1. En el escritorio de WordPress, deberá aparecer un nuevo menú llamado Manuales
  2. Crearemos uno y probaremos con contenido de prueba.
  3. Visita la URL tusitioweb.com/manuales para ver el archivo del CPT

Si todo está bien, verás el listado de manuales como si fueran posts tradicionales.

Observamos que ciertamente, aparece un nuevo menú llamado Manuales

Custom Post Type Creado

Creamos uno con contenido de prueba y veamos que sucede.

Añadiendo Manuales en el CPT (Custom Post Type).

Pondremos de Título: "Soy el primer manual" y en contenido de prueba "Aquí encontrarás información sobre WordPress Avanzado", no te olvide de darle click en "Publicar".

Publicando un manual en el custom post type.

Y si todo está bien, verás el listado de manuales (aquí agregamos uno, yo te sugiero agregar 3 o más).

¡Listo!, aprendiste a crear tu primer Custom Post Type (CPT), sin problemas. Aunque ahora te podrás dar cuenta que nuestro CPT, no tiene diseño propio, ni tampoco un template especial, es decir una plantilla personalizada. Y es lo que veremos en nuestro siguiente post, así como las taxonomías personalizadas asociadas a los manuales, campos personalizados con meta boxes, consultas avanzadas con WP_Query para mostrar los manuales en otras partes del sitio y al final shortcodes reutilizables para insertar listados de CPTs donde quieras.

Conclusión

Registrar un Custom Post Type sin plugins es un paso obligatorio para cualquier desarrollador WordPress que esté buscando profesionalizar sus proyectos, evitar sobrecargar la instalación con extensiones innecesarias. Al hacerlo desde tu tema hijo, garantizas portabilidad, control, y coherencia en el código fuente, totalmente listo para escalar tu proyecto.

Espero que te haya servido, un gusto y un abrazo. 🤓🚀

Estos temas te pueden interesar

Deja una respuesta

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *

Tu puntuación: Útil

Subir