Desarrollar un theme de WordPress que sea profesional y funcional requiere más que un diseño atractivo. Es necesario seguir las normativas y buenas costumbres establecidas por el equipo de desarrollo de WordPress para asegurar compatibilidad, seguridad, accesibilidad y rendimiento. Esta guía técnica ofrece un repaso exhaustivo basado en las fuentes oficiales más confiables.
#1. Punto de partida: Theme Handbook y estándares de código
El Theme Developer Handbook es la referencia principal para cualquier desarrollador de themes. Explica la arquitectura básica, cómo se organiza el código, las funciones propias de un theme y las reglas para que sea aceptado en el repositorio oficial.
Complementariamente, los WordPress Coding Standards marcan un estilo uniforme para PHP, HTML, CSS y JavaScript que facilita mantenimiento y colaboración, además de prevenir errores comunes.
- Indentación y formato: Usa tabulaciones o espacios conforme al estándar, normalmente tabs para PHP. Esto hace el código legible y evita confusiones al colaborar.
- Nombres claros: Emplea nombres descriptivos para funciones, variables y clases, siguiendo el estilo camelCase o snake_case tal como se pide en las guías.
- Funciones apropiadas: Evita funciones deprecated y actualiza tu theme conforme se desarrollan nuevas API para mantener compatibilidad futura.
- HTML y CSS: Usa etiquetas semánticas, minúsculas, atributos correctamente formateados, y escribe CSS modular evitando código inline salvo casos muy justificados.
#2. Estructura mínima y archivos obligatorios
Todo theme WordPress debe contar como mínimo con:
style.css: Contiene la hoja de estilos y una cabecera especial en comentarios con metadatos (Nombre del tema, URI, Autor, Versión, etc.), que el sistema utiliza para identificar el theme.index.php: Archivo base que sirve como plantilla fallback para cualquier tipo de contenido sin plantilla específica.functions.php: Archivo PHP que permite añadir funcionalidades a tu theme, como registrar menús, sidebars, scripts y soporte para características.
Además se recomienda separar en archivos independientes las partes comunes para mejorar legibilidad y evitar duplicidad:
header.php: Cabecera HTML común a las páginas.footer.php: Pie de página común.sidebar.php: Barra lateral con widgets o menús.
Es importante conservar esta estructura para facilitar la integración con plugins y compatibilidad futura.
#3. Carga correcta de scripts y estilos
El manejo adecuado de CSS y JavaScript evita conflictos y mejora rendimiento. Nunca añadas etiquetas <link> o <script> directas en las plantillas. Usa siempre las funciones:
wp_enqueue_style( $handle, $src, $deps, $ver, $media ): Para registrar y cargar hojas de estilo.wp_enqueue_script( $handle, $src, $deps, $ver, $in_footer ): Para scripts JS, indicando si se debe cargar en el footer para no bloquear renderizado.
Estas funciones deben enganchase al hook wp_enqueue_scripts para asegurar que WordPress las gestione correctamente.
Para CSS dinámico generado en PHP, no uses etiquetas <style> dispersas. En su lugar, emplea wp_add_inline_style(), que añade CSS inline vinculado a una hoja encolada y permite mejor control.
#4. Jerarquía y uso eficaz de plantillas
WordPress utiliza una jerarquía de plantillas que define qué archivo carga para cada tipo de contenido. Conocer esta jerarquía evita duplicar código y facilita mantenimiento:
single.php: Para entradas individuales.page.php: Para páginas estáticas.archive.php: Para archivos de categorías o fechas.search.phpy404.php: Para búsquedas y páginas no encontradas.
Para fragmentos comunes reutilizables, usa get_template_part( 'slug' ) que permite dividir código en partes.
Evita escribir lógica compleja dentro del loop principal; mejor crea funciones especializadas en functions.php o en templates parciales para mantener el código limpio y reutilizable.
#5. Seguridad en PHP y datos
Los themes interactúan con datos sensibles, por lo que deben seguir prácticas estrictas de seguridad para evitar vulnerabilidades:
- Escapar datos: Al imprimir datos a HTML, usa funciones de escape propias de WordPress, por ejemplo:
esc_html(),esc_attr(),esc_url(). No imprimir datos sin filtrar directamente. - Sanear y validar: Antes de usar datos de formularios o fuentes externas, sanéalos y valida que cumplan con los formatos esperados para evitar ataques (inyección SQL, XSS, etc.).
- Sin credenciales en el theme: Nunca añadas datos sensibles o claves en archivos del theme; deben gestionarse fuera por seguridad.
- Actualizar código: Mantén el theme libre de funciones obsoletas o inseguras conforme a las guías oficiales.
#6. Accesibilidad integrada
Un theme es más útil cuando es accesible para la mayor cantidad posible de usuarios, incluyendo personas con discapacidades visuales, motrices o cognitivas. La accesibilidad incluye:
- Uso correcto y ordenado de encabezados para facilitar la navegación con lectores de pantalla.
- Contrastes de color que cumplen con las recomendaciones WCAG para asegurar legibilidad.
- Textos alternativos en imágenes que transmitan la información visual.
- Navegación mediante teclado donde el foco sea fácilmente visible en botones, enlaces y campos de formulario.
#7. Optimización y rendimiento
El diseño y desarrollo influyen directamente en la velocidad y carga del sitio:
- Minimiza la inclusión de librerías externas solo a las necesarias, para evitar peso extra e impactar la carga.
- Usa funciones como
add_image_size()para registrar tamaños de imágenes adecuados y evitar servir imágenes demasiado grandes. - Optimiza las consultas a la base de datos, evitando loops que lancen peticiones complejas repetidas.
- Testea el theme con herramientas reconocidas en la comunidad WordPress para mejorar la experiencia del usuario.
#8. Uso correcto del Customizer
El Customizer de WordPress es la forma recomendada para exponer opciones al usuario sin crear interfaces propias desde cero. Algunas consideraciones:
- Agrupa opciones en secciones lógicas para facilitar uso (colores, tipografías, cabecera, etc.).
- Valida y sanea todos los valores ingresados antes de guardarlos usando callbacks dedicados.
- Documenta en el theme qué opciones se pueden personalizar y qué efecto tienen en la presentación.
#9. Internacionalización
Para que el theme pueda ser traducido a cualquier idioma, debes preparar todas las cadenas de texto usando las funciones estándar (__(), _e()) y cargar el dominio de texto. Esta preparación facilita que cualquier usuario pueda usar el theme en su idioma nativo.
- Evita concatenar fragmentos para mensajes traducibles; cada cadena debe ser independiente para permitir traducciones precisas.
- Aplica convenciones internacionales también para fechas, números y otros formatos regionales.
#10. Licencia y cabecera
La cabecera del style.css es un bloque de comentarios con datos esenciales que WordPress lee para mostrar el theme en el administrador y en el repositorio:
- Nombre, autor y URI para identificar el tema.
- Descripción clara y honesta de la funcionalidad.
- Versión para control de actualizaciones.
- Licencia compatible con GPL para garantizar compatibilidad y uso abierto.
El incumplimiento de estos datos puede suponer la exclusión del repositorio oficial.
#11. Pruebas y revisión
Antes de publicar un theme o cada nueva versión, debe someterse a pruebas rigurosas. Algunas recomendaciones:
- Usa el Theme Unit Test para validar que el theme soporta correctamente casos típicos y límites en contenidos (títulos largos, imágenes, comentarios anidados, etc.).
- Utiliza plugins y herramientas automáticas de revisión para comprobar adherencia a estándares y buenas prácticas.
- Prueba el tema en múltiples navegadores y dispositivos, cuidando que la experiencia sea homogénea y accesible.
Seguir estas buenas prácticas asegura que el theme que desarrolles será robusto, seguro y respetuoso con el ecosistema WordPress, facilitando su mantenimiento y evolución en el tiempo.