Introducción
Los Tipos de Publicación Personalizados (CPT) y las Taxonomías son herramientas esenciales en WordPress que te permiten ir más allá de las publicaciones y páginas estándar, creando una experiencia de gestión de contenido más adaptada. Esta guía proporciona un enfoque integral para crear y gestionar de manera efectiva los Tipos de Publicación Personalizados y las Taxonomías.
Paso 1: Registro de un Tipo de Publicación Personalizado
Para crear un tipo de publicación personalizado, utiliza la función register_post_type()
en el archivo functions.php
de tu tema o en un plugin personalizado. Aquí tienes un ejemplo de cómo crear un tipo de publicación Portfolio:
function create_portfolio_post_type() {
$labels = array(
'name' => 'Portfolios',
'singular_name' => 'Portfolio',
'add_new' => 'Agregar Nuevo Portfolio',
'add_new_item' => 'Agregar Nuevo Elemento de Portfolio',
'edit_item' => 'Editar Elemento de Portfolio',
'new_item' => 'Nuevo Elemento de Portfolio',
'view_item' => 'Ver Elemento de Portfolio',
'search_items' => 'Buscar Portfolio',
);
$args = array(
'labels' => $labels,
'public' => true,
'has_archive' => true,
'rewrite' => array('slug' => 'portfolio'),
'supports' => array('title', 'editor', 'thumbnail'),
);
register_post_type('portfolio', $args);
}
add_action('init', 'create_portfolio_post_type');
Paso 2: Creación de Taxonomías Personalizadas
Las taxonomías personalizadas ayudan a organizar el contenido dentro de tus Tipos de Publicación Personalizados. Por ejemplo, puedes crear una taxonomía personalizada llamada Tipo de Proyecto para tus elementos del portfolio:
function create_portfolio_taxonomies() {
$labels = array(
'name' => 'Tipos de Proyectos',
'singular_name' => 'Tipo de Proyecto',
'search_items' => 'Buscar Tipos de Proyectos',
'all_items' => 'Todos los Tipos de Proyectos',
'edit_item' => 'Editar Tipo de Proyecto',
'add_new_item' => 'Agregar Nuevo Tipo de Proyecto',
);
$args = array(
'labels' => $labels,
'hierarchical' => true, // Comportamiento similar a categorías
'public' => true,
'rewrite' => array('slug' => 'tipo-proyecto'),
);
register_taxonomy('project_type', 'portfolio', $args);
}
add_action('init', 'create_portfolio_taxonomies');
Paso 3: Vinculación de Tipos de Publicación y Taxonomías
Después de registrar tu CPT y taxonomía, puedes asignar términos de tu taxonomía personalizada a tus publicaciones en el administrador de WordPress. Para mostrar esta taxonomía en tus plantillas, utiliza la función get_the_terms()
:
$terms = get_the_terms(get_the_ID(), 'project_type');
if ($terms && !is_wp_error($terms)) {
foreach ($terms as $term) {
echo '<a href="' . get_term_link($term) . '">' . esc_html($term->name) . '</a>';
}
}
Paso 4: Mostrar Tipos de Publicación Personalizados y Taxonomías
Para mostrar tus tipos de publicación personalizados, modifica los archivos de plantilla como archive-portfolio.php
y single-portfolio.php
. Aquí tienes un ejemplo básico para la plantilla de archivo:
<?php if (have_posts()) : while (have_posts()) : the_post(); ?>
<h2><?php the_title(); ?></h2>
<p><?php the_excerpt(); ?></p>
<?php endwhile; else: ?>
<p><?php esc_html_e('No se encontraron portfolios.'); ?></p>
<?php endif; ?>
Paso 5: Personalización Avanzada
Para una funcionalidad mejorada, considera agregar campos personalizados a tus CPT y taxonomías. Plugins como Advanced Custom Fields (ACF) facilitan este proceso. Si prefieres un enfoque programático, puedes utilizar register_meta()
para la gestión de datos complejos.
Aquí tienes un ejemplo básico usando ACF:
- Instala y activa el plugin ACF.
- Ve a Campos Personalizados > Agregar Nuevo y crea campos para tu tipo de publicación Portfolio.
- Muestra estos campos en tus archivos de plantilla usando
get_field()
:
$client_name = get_field('client_name');
if ($client_name) {
echo '<p>Cliente: ' . esc_html($client_name) . '</p>';
}
Conclusión
Dominar los Tipos de Publicación Personalizados y las Taxonomías en WordPress te permite crear un sistema de gestión de contenido especializado que satisface tus necesidades únicas. Al implementar estas técnicas avanzadas, puedes mejorar la funcionalidad y organización de tu sitio web, haciéndolo más amigable y eficiente.