lunes, 26 Oct 2026

Recursos y herramientas exclusivas para expertos en diseño y desarrollo web

Explorar
BiblioWeb

Biblioweb.es

Todo sobre tecnología web

  • Inicio
  • WordPress
    WordPress
    • Todo sobre WordPress26
    • Plugins de WordPress16
    • Desarrollo web y plugins15
    Rendimiento y seguridad
    • Hosting y rendimiento8
    • Ciberseguridad web7
    • Solución de errores5
    Negocio e IA
    • IA y automatización10
    • WooCommerce y tiendas online6
    Lo último
    Restaurant Menu Widget — Plugin de WordPress27 Sep 2026JetStudio Bookings — Plugin de WordPress27 Sep 2026SC Heatmap — Plugin de WordPress27 Sep 2026
    Ver el blog completoHistorial de noticiasSobre nosotrosNewsletter semanal
  • Plugins de WordPress
    Fichas de plugins
    • WP Translate Master
    • Cart Tool Kit
    • SC Heatmap
    • JetStudio Bookings
    • Restaurant Menu Widget
    • WP SEO Pro
    • Rank Math SEO en 2026
    • WP Rocket
    • WPCode
    • AI Engine para WordPress
    Comparativas y guías
    • Los mejores plugins SEO para WordPress
    • Los mejores plugins de IA para WordPress
    • Los mejores plugins de reservas para WordPress
    • WordPress multiidioma
    • Cómo crear un formulario de contacto en WordPress
    • Stripe o PayPal
    Por temática
    • Plugins de WordPress16
    • WooCommerce y tiendas online6
    • Desarrollo web y plugins15
    • IA y automatización10
    • Hosting y rendimiento8
    BibliotecaPluginteca

    Los plugins de WordPress que desarrollamos: qué hace cada uno, cómo se ve en acción y dónde conseguirlo.

    Entrar en la Pluginteca
    Toda la categoría Plugins de WordPressHerramientas gratis
  • Herramientas
    Herramientas gratis, sin registro y desde el navegador
    Generador de contraseñasContraseñas largas y aleatorias sin salir del navegador.Generador de QRCódigos QR en PNG de alta resolución, sin caducidad.Contador de palabrasPalabras, caracteres y tiempo de lectura en vivo.Formateador JSONFormatea, valida y localiza el error exacto.Conversor a WebPPNG, JPG y PDF a WebP para que la web cargue…PDF a WebPCada página del PDF, en una imagen ligera.Comprobador de emailsSintaxis, correos temporales y registros MX.Compresor de vídeoBaja el peso del vídeo sin subirlo a ningún servidor.Vídeo a MP3Extrae el audio de un vídeo en un par de clics.Firmas de emailFirma en HTML lista para Gmail y Outlook.
    También te sirveHerramientas externas que merecen la pena

    DNS Checker, Query Monitor, Local WP y el resto del kit que usamos a diario, con para qué sirve cada una.

    Ver la selección
    Todas las herramientasPlugintecaRecíbelas por correo
  • Pluginteca
  • Español ✓
  • English
  • 🇨🇳 中文(简体)
  • Français
  • Deutsch
  • Italiano
Newsletter
  • WordPress
  • Plugins de WordPress
  • WooCommerce
  • IA para WordPress
  • Seguridad
  • Herramientas gratis
  • Ver todo
BiblioWebBiblioWeb
Redimensionador de fuentesAa
  • WordPress
  • Plugins
  • WooCommerce
  • Errores
  • Herramientas
Buscar
  • Inicio
  • WordPress
    • Todo sobre WordPress
    • Plugins de WordPress
    • Desarrollo Web y Plugins
    • IA y Automatización web
    • WooCommerce
    • Hosting y Rendimiento Web
    • Ciberseguridad y Seguridad Web
    • Solución de errores web
  • Plugins de WordPress
    • Rank Math SEO
    • AI Engine
    • WP Rocket
    • WPCode
    • WP Translate Master
    • Cart Tool Kit
    • SC Heatmap
    • JetStudio Bookings
    • Restaurant Menu Widget
    • WP SEO Pro
  • Herramientas
    • Generador de Contraseñas
    • Generador de Código QR
    • Contador de Palabras
    • Formateador JSON
    • Conversor Imagenes a WebP
    • Comprobador de Correos Electrónicos
    • Compresor de Vídeo para Web
    • Generador de Firmas de Email
    • Convertidor de Vídeo a MP3
    • Conversor de PDF a WebP
  • Pluginteca
  • Blog
    • Español ✓
    • English
    • 🇨🇳 中文(简体)
    • Français
    • Deutsch
    • Italiano
Síguenos
© 2026 BiblioWeb — Todos los derechos reservados.
Portada » Blog » Custom Post Types en WordPress: guía completa
Desarrollo Web y Plugins

Custom Post Types en WordPress: guía completa

Adrián Alcalá
Actualizado: 08/08/2026 21:10
Por Adrián Alcalá
Compartir
15 min de lectura
Custom Post Types en WordPress: guía completa
COMPARTIR

WordPress nació como plataforma de blogs, pero hace mucho que dejó de ser solo eso: hoy gestiona porfolios, inmobiliarias, academias, directorios de empresas y tiendas enteras. La pieza que hace posible esa versatilidad son los custom post types de WordPress: tipos de contenido personalizados que conviven con las entradas y las páginas, pero con su propio nombre, sus propios campos, sus propias URLs y su propio apartado en el escritorio. Si alguna vez has intentado gestionar «proyectos», «recetas» o «cursos» a base de entradas normales y categorías, sabes lo rápido que se convierte en un caos. En esta guía completa aprenderás qué es exactamente un Custom Post Type (CPT), cuándo tiene sentido crearlo y cuándo no, cómo registrarlo con código PHP completo y correcto, cómo añadirle taxonomías propias, cómo mostrarlo en tu tema y qué implicaciones tiene para el SEO. Al terminar podrás estructurar cualquier proyecto con la solidez de un desarrollador profesional.

Índice
Qué son los custom post types de WordPressCuándo crear un CPT (y cuándo no)Cómo registrar un custom post type con códigoTaxonomías personalizadas: clasificar tu nuevo contenidoCómo mostrar los custom post types en tu temaCampos personalizados: los datos que completan la fichaSEO y custom post types: lo que debes revisarPreguntas frecuentesConclusión

Qué son los custom post types de WordPress

En WordPress, todo contenido es técnicamente un «post»: las entradas del blog (post), las páginas (page), los adjuntos de la mediateca (attachment), las revisiones o los menús de navegación. Todos se guardan en la misma tabla de la base de datos (wp_posts) y se distinguen por el valor de la columna post_type. Un custom post type no es más que un nuevo valor en esa columna, registrado por ti, con sus propias reglas: qué características admite (editor, imagen destacada, extracto), cómo se llama en el menú, qué URL tienen sus elementos y si aparece o no en los resultados de búsqueda.

Ejemplos clásicos donde los custom post types de WordPress brillan:

  • Porfolio: proyectos con imagen, cliente y tecnología usada.
  • Inmobiliaria: propiedades con precio, superficie y ubicación.
  • Academia: cursos y lecciones con duración y nivel.
  • Restaurante: platos con alérgenos y precio.
  • Eventos: con fecha, lugar y aforo.

De hecho, ya los usas sin saberlo: los productos de WooCommerce son un CPT llamado product, y los formularios de casi cualquier plugin también se guardan como tipos de contenido propios.

Cuándo crear un CPT (y cuándo no)

La pregunta clave: ¿este contenido es conceptualmente distinto de una entrada de blog? Si la respuesta es sí (tiene sentido listarlo por separado, con sus propios archivos y su propia estructura), es candidato a CPT. Si solo quieres agrupar entradas por temática, la herramienta correcta son las categorías y etiquetas de toda la vida.

Situación Solución adecuada
Separar el blog por temáticas Categorías
Fichas de productos, cursos, inmuebles… Custom Post Type
Marcar entradas con palabras clave sueltas Etiquetas
Clasificar un CPT (género de un libro, zona de un inmueble) Taxonomía personalizada
Datos concretos de cada elemento (precio, fecha, ISBN) Campos personalizados (post meta)

Otra decisión previa: ¿código o plugin? Plugins como Custom Post Type UI o Pods permiten registrar CPT desde el panel sin escribir PHP, y son perfectamente válidos. A cambio, generan dependencia: si el plugin se desactiva, el contenido no se borra pero desaparece del escritorio. El registro por código, que veremos ahora, es más ligero, portable y controlable, y es como lo hacen todos los temas y plugins profesionales.

También te podría interesar

Qué es un child theme en WordPress y cómo crearlo
Trucos avanzados de Yoast SEO para mejorar tu WordPress
Qué es Elementor y cómo usarlo: guía para empezar
Cómo conectar Google Sheets con WordPress

Cómo registrar un custom post type con código

Todo gira en torno a una función: register_post_type(), que debe ejecutarse en el hook init. Este es un registro completo y comentado para un CPT de porfolio, listo para usar:

<?php
function biblioweb_registrar_cpt_proyecto() {
    $labels = array(
        'name'               => 'Proyectos',
        'singular_name'      => 'Proyecto',
        'menu_name'          => 'Porfolio',
        '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 han encontrado proyectos',
        'not_found_in_trash' => 'No hay proyectos en la papelera',
        'all_items'          => 'Todos los proyectos',
    );

    $args = array(
        'labels'       => $labels,
        'public'       => true,
        'has_archive'  => true,
        'menu_position'=> 20,
        'menu_icon'    => 'dashicons-portfolio',
        'rewrite'      => array( 'slug' => 'proyectos', 'with_front' => false ),
        'supports'     => array( 'title', 'editor', 'thumbnail', 'excerpt', 'revisions', 'custom-fields' ),
        'show_in_rest' => true, // Necesario para el editor de bloques y la REST API.
        'taxonomies'   => array(),
    );

    register_post_type( 'proyecto', $args );
}
add_action( 'init', 'biblioweb_registrar_cpt_proyecto' );

Repasemos los argumentos que más dudas generan:

  • public: en true, el CPT tiene URLs propias, aparece en el escritorio y es visible. Para contenido interno (por ejemplo, testimonios que solo se muestran incrustados) se puede afinar con publicly_queryable y exclude_from_search.
  • has_archive: crea la página de archivo en tudominio.com/proyectos/ con el listado de todos los elementos.
  • rewrite: define el slug de las URLs. with_front => false evita heredar prefijos de la estructura de enlaces permanentes (como /blog/).
  • supports: qué cajas aparecen en el editor. Si tu CPT no necesita editor de texto, quítalo y el formulario quedará más limpio.
  • show_in_rest: imprescindible en true si quieres usar Gutenberg con este CPT o consumirlo desde la REST API.
  • menu_icon: cualquier icono de la librería Dashicons, o la ruta a un SVG propio.

Un aviso crítico: tras registrar o modificar un CPT, visita Ajustes → Enlaces permanentes y pulsa «Guardar cambios». Ese gesto regenera las reglas de reescritura; si no lo haces, las URLs nuevas devolverán un error 404 y perderás un buen rato buscando un fallo que no está en tu código.

¿Dónde colocarlo? En un plugin propio o en un gestor de snippets como WPCode, que analizamos a fondo aquí. Evita el functions.php del tema: un CPT es funcionalidad, no diseño, y debe sobrevivir a un cambio de tema.

Taxonomías personalizadas: clasificar tu nuevo contenido

Las categorías y etiquetas estándar pertenecen a las entradas. Para clasificar un CPT lo correcto es registrar taxonomías propias con register_taxonomy(). Siguiendo con el porfolio, creemos una taxonomía «Tipo de proyecto»:

<?php
function biblioweb_registrar_taxonomia_tipo() {
    $labels = array(
        'name'          => 'Tipos de proyecto',
        'singular_name' => 'Tipo de proyecto',
        'search_items'  => 'Buscar tipos',
        'all_items'     => 'Todos los tipos',
        'edit_item'     => 'Editar tipo',
        'add_new_item'  => 'Añadir nuevo tipo',
    );

    register_taxonomy(
        'tipo_proyecto',
        array( 'proyecto' ),
        array(
            'labels'       => $labels,
            'hierarchical' => true, // true = como categorías; false = como etiquetas.
            'rewrite'      => array( 'slug' => 'tipo-proyecto' ),
            'show_in_rest' => true,
        )
    );
}
add_action( 'init', 'biblioweb_registrar_taxonomia_tipo' );

El parámetro hierarchical decide el comportamiento: en true funciona como las categorías (con jerarquía padre-hijo y casillas de verificación); en false, como las etiquetas (texto libre). Cada término genera automáticamente su propia página de archivo: tudominio.com/tipo-proyecto/diseno-web/.

Cómo mostrar los custom post types en tu tema

WordPress resuelve la presentación mediante la jerarquía de plantillas. Para nuestro CPT proyecto buscará, por este orden:

  1. single-proyecto.php para la ficha individual (si no existe, usa single.php).
  2. archive-proyecto.php para el listado (si no existe, usa archive.php y después index.php).
  3. taxonomy-tipo_proyecto.php para los archivos de la taxonomía.

Si tu tema es de bloques o usas un maquetador, normalmente podrás asignar plantillas al CPT desde su propia interfaz. Y para listados a medida en cualquier plantilla o shortcode, la consulta se hace con WP_Query:

<?php
$proyectos = new WP_Query( array(
    'post_type'      => 'proyecto',
    'posts_per_page' => 6,
    'tax_query'      => array(
        array(
            'taxonomy' => 'tipo_proyecto',
            'field'    => 'slug',
            'terms'    => 'diseno-web',
        ),
    ),
) );

if ( $proyectos->have_posts() ) :
    while ( $proyectos->have_posts() ) : $proyectos->the_post();
        the_title( '<h3>', '</h3>' );
        the_post_thumbnail( 'medium' );
    endwhile;
    wp_reset_postdata();
endif;

No olvides nunca wp_reset_postdata() tras un bucle personalizado: restaura la consulta principal y evita efectos secundarios extraños en el resto de la página. La referencia completa de todos los argumentos disponibles está en la documentación oficial de post types de developer.wordpress.org.

Campos personalizados: los datos que completan la ficha

Un CPT define el «contenedor», pero los datos específicos (precio, cliente, fecha de entrega) viven en campos personalizados (post meta). Puedes gestionarlos de tres maneras: con la caja nativa de campos personalizados (espartana pero funcional), con código mediante register_post_meta() y get_post_meta(), o con plugins especializados como Advanced Custom Fields (ACF) o Meta Box, que generan interfaces de edición cómodas con validación y tipos de campo avanzados. Para proyectos serios, la combinación CPT por código + ACF para los campos es probablemente el estándar del sector.

<?php
// Registrar un campo y exponerlo en la REST API:
register_post_meta( 'proyecto', 'cliente', array(
    'type'         => 'string',
    'single'       => true,
    'show_in_rest' => true,
    'sanitize_callback' => 'sanitize_text_field',
) );

// Leerlo en la plantilla:
$cliente = get_post_meta( get_the_ID(), 'cliente', true );

SEO y custom post types: lo que debes revisar

Un CPT bien planteado es una bendición para el SEO: genera archivos limpios, URLs semánticas y estructura clara. Pero conviene revisar cuatro puntos:

  • Sitemap: comprueba que tu plugin SEO incluye el nuevo tipo de contenido en el sitemap XML. Tanto Yoast como Rank Math, del que analizamos su versión gratuita, detectan los CPT públicos y permiten activarlos o excluirlos por tipo.
  • Indexación selectiva: si el CPT es contenido de apoyo (testimonios, bloques reutilizables), márcalo como no indexable o directamente regístralo con public => false.
  • Slug con intención: /proyectos/ dice más que /cpt_portfolio/. El slug del rewrite es una decisión SEO, y cambiarlo después implica redirecciones.
  • Contenido en el archivo: la página de archivo generada automáticamente suele ser un simple listado; valorar una página con texto introductorio propio puede marcar la diferencia para posicionar la keyword principal del tipo de contenido.

Preguntas frecuentes

¿Qué pasa con el contenido si desactivo el plugin que registra el CPT?

Nada se borra: los elementos siguen en la base de datos. Simplemente dejan de mostrarse en el escritorio y sus URLs devuelven 404, porque WordPress ya no reconoce ese tipo de contenido. Al reactivar el registro (plugin o snippet), todo vuelve a aparecer intacto. Por eso es importante mantener el registro en algo independiente del tema.

¿Custom post type o categorías? Sigo sin tener claro cuál usar

Usa categorías cuando quieras organizar artículos del blog que comparten formato. Usa un CPT cuando el contenido tenga naturaleza propia: campos distintos, plantilla distinta y sentido como sección independiente de la web. Una pista práctica: si te descubres queriendo ocultar esas «entradas» del blog principal, casi seguro que deberían ser un custom post type.

¿Cuántos custom post types puedo crear?

No hay límite técnico relevante: todos comparten la tabla wp_posts y el coste de registrar cada tipo es mínimo. El límite razonable es organizativo: si pasas de seis u ocho tipos, revisa si algunos no deberían ser en realidad taxonomías o campos de un mismo tipo. Reserva nombres con prefijo (por ejemplo bw_proyecto) si distribuyes tu código, para evitar colisiones con otros plugins.

¿Por qué mis custom post types dan error 404?

En el 95 % de los casos, por las reglas de reescritura: WordPress aún no ha «aprendido» las URLs nuevas. Ve a Ajustes → Enlaces permanentes y guarda sin cambiar nada. Si persiste, revisa que public sea true, que el slug del rewrite no choque con una página existente y que el registro se ejecute en el hook init en cada carga, no solo en la activación.

Conclusión

Los custom post types de WordPress son la herramienta que convierte un blog en un verdadero CMS a medida: porfolios, catálogos, directorios o academias, cada contenido con su estructura, sus URLs y su lugar en el escritorio. La receta profesional cabe en tres pasos: registrar el tipo con register_post_type() en el hook init (y guardar los enlaces permanentes), clasificarlo con taxonomías propias mediante register_taxonomy(), y completar las fichas con campos personalizados. A partir de ahí, la jerarquía de plantillas y WP_Query te dan control total sobre cómo se muestra todo. Empieza con un solo tipo de contenido real de tu proyecto, regístralo por código en un snippet o plugin propio, y comprueba en el escritorio lo que cambia gestionar «proyectos» de verdad en lugar de entradas disfrazadas. Esa claridad estructural la agradecerás tú, la agradecerán tus clientes y la agradecerá Google.

Compartir este artículo
Correo electrónico Copiar enlace Imprimir
PorAdrián Alcalá
Síguele:
Adrián Alcalá es desarrollador WordPress y consultor SEO, autor del plugin WP Translate y creador de BiblioWeb. Desde aquí comparte guías, tutoriales y herramientas gratuitas para quienes crean, optimizan y posicionan páginas web. Lleva años ayudando a negocios de toda España a sacar el máximo partido a WordPress, y todo lo que publica está probado en proyectos reales.
Artículo anterior Shortcodes de WordPress: qué son y cómo crearlos Shortcodes de WordPress: qué son y cómo crear los tuyos
Artículo siguiente La REST API de WordPress: qué es y cómo usarla La REST API de WordPress: qué es y cómo usarla
Ilustración del plugin Restaurant Menu Widget: carta de restaurante con platos y precios editables en Elementor
Restaurant Menu Widget — Plugin de WordPress
Plugins de WordPress
Ilustración del plugin JetStudio Bookings: formulario de citas por pasos con calendario y bandeja de solicitudes
JetStudio Bookings — Plugin de WordPress
Plugins de WordPress
Ilustración del plugin SC Heatmap: mapa de calor de clics y scroll sobre una web, con los datos en tu servidor
SC Heatmap — Plugin de WordPress
Plugins de WordPress
Accesibilidad web en WordPress con IA
Accesibilidad web en WordPress: auditarla con IA en una tarde
IA & Automatización web

También te puede interesar

Shortcodes de WordPress: qué son y cómo crearlos
Desarrollo Web y Plugins

Shortcodes de WordPress: qué son y cómo crear los tuyos

08/08/2026
Cómo crear un plugin de WordPress desde cero
Desarrollo Web y Plugins

Cómo crear un plugin de WordPress desde cero

28/09/2026
Entornos de desarrollo para WordPress en la nube
Desarrollo Web y Plugins

Entornos de desarrollo para WordPress en la nube

24/08/2026
La REST API de WordPress: qué es y cómo usarla
Desarrollo Web y Plugins

La REST API de WordPress: qué es y cómo usarla

28/09/2026
Mostrar más
  • Temas:
  • WordPress
  • Plugins de WordPress
  • Desarrollo Web y Plugins
  • IA & Automatización web
  • Hosting & Rendimiento Web
  • Ciberseguridad y Seguridad Web
  • WooCommerce
  • Solución de problemas y errores web
BiblioWeb

Biblioweb.es

Actualidad de tecnología web

Información en la que puedes confiar: guías y soluciones prácticas de tecnología web — WordPress, plugins, ciberseguridad, hosting, rendimiento y solución de errores.

Rss

Enlaces de interés

  • Sobre nosotros
  • Contacto
  • Herramientas gratuitas
  • Pluginteca

Recibe nuestras nuevas guías de WordPress en tu correo. Suscríbete a la newsletter.

Legal

  • Aviso Legal
  • Términos y Condiciones
  • Política de cookies
  • Política de Privacidad

Últimas novedades

Ilustración del plugin Restaurant Menu Widget: carta de restaurante con platos y precios editables en Elementor

Restaurant Menu Widget — Plugin de WordPress

27/09/2026
Seguir leyendo
Ilustración del plugin JetStudio Bookings: formulario de citas por pasos con calendario y bandeja de solicitudes

JetStudio Bookings — Plugin de WordPress

27/09/2026
Seguir leyendo

© 2026 BiblioWeb — Todos los derechos reservados.

Gestionar consentimiento
Utilizamos tecnologías como las cookies para almacenar y/o acceder a la información del dispositivo. Lo hacemos para mejorar la experiencia de navegación y para mostrar anuncios (no) personalizados. El consentimiento a estas tecnologías nos permitirá procesar datos como el comportamiento de navegación o los ID's únicos en este sitio. No consentir o retirar el consentimiento, puede afectar negativamente a ciertas características y funciones.
Funcional Siempre activo
El almacenamiento o acceso técnico es estrictamente necesario para el propósito legítimo de permitir el uso de un servicio específico explícitamente solicitado por el abonado o usuario, o con el único propósito de llevar a cabo la transmisión de una comunicación a través de una red de comunicaciones electrónicas.
Preferencias
El almacenamiento o acceso técnico es necesario para la finalidad legítima de almacenar preferencias no solicitadas por el abonado o usuario.
Estadísticas
El almacenamiento o acceso técnico que es utilizado exclusivamente con fines estadísticos. El almacenamiento o acceso técnico que se utiliza exclusivamente con fines estadísticos anónimos. Sin un requerimiento, el cumplimiento voluntario por parte de tu proveedor de servicios de Internet, o los registros adicionales de un tercero, la información almacenada o recuperada sólo para este propósito no se puede utilizar para identificarte.
Marketing
El almacenamiento o acceso técnico es necesario para crear perfiles de usuario para enviar publicidad, o para rastrear al usuario en una web o en varias web con fines de marketing similares.
  • Administrar opciones
  • Gestionar los servicios
  • Gestionar {vendor_count} proveedores
  • Leer más sobre estos propósitos
Ver preferencias
  • {title}
  • {title}
  • {title}
Accede a BiblioWeb
Usuario o correo electrónico
Contraseña

¿Has olvidado tu contraseña?