Introducción
Un tema de WordPress es un conjunto de archivos que determinan el diseño y la funcionalidad de un sitio web WordPress. Esta guía te ayudará a profundizar en el desarrollo de temas y a consolidar tus conocimientos a través de ejercicios prácticos.
Estructura Básica de un Tema
Un tema de WordPress debe contener, como mínimo, los archivos style.css y index.php. Sin embargo, un tema completo generalmente incluye muchos más archivos.
| Archivo | Descripción |
|---|---|
| `style.css` | Hoja de estilos e información del tema |
| `index.php` | Plantilla principal |
| `header.php` | Cabecera del sitio |
| `footer.php` | Pie de página |
| `sidebar.php` | Barra lateral |
| `single.php` | Para entradas individuales |
| `page.php` | Para páginas |
| `archive.php` | Para archivos (categorías, etiquetas, etc.) |
| `search.php` | Para resultados de búsqueda |
| `404.php` | Para página de error 404 |
| `functions.php` | Funciones y características del tema |
| `screenshot.png` | Vista previa del tema (1200x900 px) |
| `/assets/` | Carpeta para imágenes, JS, CSS adicionales, etc. |
Recordatorio del Loop de WordPress
El Loop es el mecanismo principal para mostrar contenido en WordPress.
<?php
if (have_posts()):
while (have_posts()) :
the_post();
// Contenido de cada entrada/página
the_title('<h2>', '</h2>');
the_content();
endwhile;
else:
echo '<p>No hay contenido para mostrar</p>';
endif;
?>
Jerarquía de Plantillas
WordPress busca plantillas específicas en un orden determinado. Si no encuentra una plantilla, utiliza la siguiente en la jerarquía, llegando eventualmente a `index.php`.
- Páginas individuales: `page-{slug}.php` → `page-{id}.php` → `page.php` → `index.php`.
- Entradas individuales: `single-{post-type}-{slug}.php` → `single.php` → `singular.php` → `index.php`.
- Archivos: Siguen una jerarquía similar para categorías, etiquetas, autores, fechas, etc
Funciones Esenciales para Crear Temas
Incluir Header y Footer
<?php get_header(); ?>
<!-- Contenido de la página -->
<?php get_footer(); ?>
Incluir Sidebar
<?php get_sidebar(); ?>
Cargar Estilos y Scripts
Se realiza en el archivo functions.php.
function mi_tema_scripts() {
wp_enqueue_style('mi-estilo', get_stylesheet_uri()); // Cargar hoja de estilos principal
wp_enqueue_script('mi-script', get_template_directory_uri() . '/assets/js/script.js'); // Cargar script personalizado
}
add_action('wp_enqueue_scripts', 'mi_tema_scripts');
Registrar Menús
Se registra en functions.php y se muestra en archivos como header.php.
function registrar_mis_menus() {
register_nav_menus(array(
'menu-principal' => 'Menú Principal',
'menu-footer' => 'Menú del Footer'
));
}
add_action('init', 'registrar_mis_menus');
// En header.php
<?php
wp_nav_menu(array(
'theme_location' => 'menu-principal',
'container' => 'nav',
'container_class' => 'menu-principal-container'
));
?>
Registrar Widgets
Se registra en functions.php y se muestra en sidebar.php.
function registrar_mis_widgets() {
register_sidebar(array(
'name' => 'Widget Lateral',
'id' => 'sidebar-1',
'before_widget' => '<div class="widget">',
'after_widget' => '</div>',
'before_title' => '<h3 class="widget-title">',
'after_title' => '</h3>'
));
}
add_action('widgets_init', 'registrar_mis_widgets');
// En sidebar.php
<?php
if (is_active_sidebar('sidebar-1')) {
dynamic_sidebar('sidebar-1');
}
?>
Añadir Soporte para Características
Se realiza en functions.php.
function configurar_tema() {
add_theme_support('post-thumbnails'); // Imágenes destacadas
add_theme_support('title-tag'); // Título del sitio
add_theme_support('custom-logo', array( // Logotipos personalizados
'height' => 100,
'width' => 400,
'flex-height' => true,
'flex-width' => true
));
add_theme_support('post-formats', array( // Formatos de entrada
'video', 'audio', 'gallery', 'quote'
));
}
add_action('after_setup_theme', 'configurar_tema');
Ejercicios Prácticos
Ejercicio 1: Crear un Tema Básico con Header y Footer
1. Crea la estructura de archivos en wp-content/themes/mi-primer-tema/ con `style.css`, `index.php`, `header.php` y `footer.php`.
2. Agrega el encabezado del tema en `style.css`.
3. Crea la estructura del encabezado en `header.php`.
4. Crea la estructura del pie de página en `footer.php`.
5. En `index.php`, integra el header, footer y el Loop.
Ejercicio 2: Añadir Sidebar y Widgets
1. Crea un archivo sidebar.php.
2. Crea un archivo functions.php para registrar el área de widgets.
3. Modifica index.php para incluir la barra lateral con la función `get_sidebar()`.
4. Actualiza style.css para dar formato al diseño, por ejemplo, usando flexbox para distribuir el contenido principal y la barra lateral.
Ejercicio 3: Crear Plantillas Específicas
1. Crea un archivo single.php para entradas individuales.
2. Crea un archivo page.php para páginas.
Ejercicio 4: Añadir Menú de Navegación
1. Actualiza functions.php para registrar los menús "Menú Principal" y "Menú del Footer".
2. Actualiza header.php para incluir el menú principal.
3. Actualiza footer.php para incluir el menú del footer.
4. Actualiza style.css para dar formato a los menús.
Ejercicio 5: Crear una Plantilla Personalizada para Página
1. Crea un archivo template-full-width.php con un encabezado de plantilla personalizado, por ejemplo, Template Name: Página de Ancho Completo.
2. Actualiza style.css para dar formato a la plantilla de ancho completo.
Ejercicio 6: Implementar Características Avanzadas
1. Actualiza functions.php para añadir soporte a características como imágenes destacadas y tamaños de imagen personalizados. También puedes personalizar la longitud del extracto.
2. Crea una carpeta `js` con un archivo scripts.js para añadir interactividad, como un botón para mostrar/ocultar el menú en móviles.
3. Actualiza header.php para incluir un botón de toggle para el menú en móviles.
4. Actualiza style.css para dar soporte a estas características, incluyendo estilos para el header con scroll y el botón de menú en móviles.
Recursos Adicionales
- Documentación oficial de WordPress: Theme Developer Handbook.
- Tema _s (Underscores): Un tema inicial para desarrolladores: https://underscores.me/
- WordPress Codex: https://codex.wordpress.org/Theme_Development
- WordPress.org Theme Review Guidelines: https://make.wordpress.org/themes/handbook/review/
Consejos Finales
- Desarrollo iterativo: Comienza con un tema simple y añade características gradualmente.
- Uso de child themes: Para personalizar temas existentes sin modificar el original.
- Depuración: Usa `WP_DEBUG` en tu archivo `wp-config.php` durante el desarrollo.
- Validación: Usa herramientas como Theme Check para validar tu tema antes de distribuirlo.
- Internacionalización: Prepara tu tema para traducciones usando funciones como `__()` y `_e()`.