Creación de Temas de WordPress

Profesor Claudio Navarro – c.navarrob@profesor.duoc.cl

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`.

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

Consejos Finales

📥 Descargar PDF original