functions.php
El archivo functions.php es el cerebro del tema WordPress. Se carga automáticamente en cada petición junto con el tema activo y funciona como un plugin: puedes añadir hooks, registrar menús, cargar assets, definir funciones propias y mucho más.
¿Qué va en functions.php?
- La función de setup del tema (hook
after_setup_theme) - Carga de scripts y estilos (hook
wp_enqueue_scripts) - Registro de sidebars y áreas de widgets
- Funciones auxiliares propias del tema
- Personalizaciones del Customizer
- Sobrescritura de funciones del tema padre (en temas hijo)
Estructura recomendada
<?php
// 1. Setup del tema
add_action( 'after_setup_theme', 'mi_tema_setup' );
function mi_tema_setup() {
add_theme_support( 'title-tag' );
add_theme_support( 'post-thumbnails' );
register_nav_menus([
'primary' => __( 'Menú principal', 'mi-tema' ),
]);
}
// 2. Assets
add_action( 'wp_enqueue_scripts', 'mi_tema_assets' );
function mi_tema_assets() {
wp_enqueue_style( 'mi-tema', get_stylesheet_uri(), [], wp_get_theme()->get('Version') );
wp_enqueue_script( 'mi-tema-js', get_template_directory_uri() . '/js/main.js', [], '1.0', true );
}
// 3. Funciones auxiliares
function mi_tema_get_color_primario() {
return get_theme_mod( 'color_primario', '#336699' );
}
Buena práctica: dividir en archivos
Cuando functions.php crece, divídelo en archivos separados e inclúyelos con require_once:
// functions.php
require_once get_template_directory() . '/inc/setup.php';
require_once get_template_directory() . '/inc/enqueue.php';
require_once get_template_directory() . '/inc/cpt.php';
require_once get_template_directory() . '/inc/helpers.php';
Diferencia con un plugin
El código en functions.php solo está activo mientras ese tema esté activo. Si cambias de tema, desaparece. Para funcionalidad que debe sobrevivir al cambio de tema (CPTs, opciones globales), usa un plugin.
