El archivo functions.php
aloja fragmentos de código que queremos cargar en momentos y lugares diferentes, y para no repetirlos cada vez, convertimos en funciones que llamamos para que ejecuten su misión. funcions.php
puede contener funciones a las que llamaremos en otras plantillas para construir el theme, otras a las que llamará un usuario desde el administrador (mediante shortcodes por ejemplo), y otras que cargarán funcionalidades adicionales a las que WordPress incluye de base (tipos de contenido personalizado, elementos extra en el administrador…).
El archivo functions.php
es el lugar para alojar la lógica del theme, las funciones. Y las plantillas alojarán el HTML y las llamadas a las funciones que sean necesarias. Así la edición del theme es más sencilla, porque todas las funciones están en el mismo sitio, y las plantillas permanecen limpias y ordenadas.
A su vez las funciones dentro de functions.php
deben seguir una estructura que permita llamarlas cuando son necesarias, modificaciones de otros programadores (por ejemplo en un child theme), activarlas y desactivarlas de manera sencilla… Para tener un buen functions.php
, conviene estructurarlo siguiendo una serie de buenas prácticas:
Elegir los nombres de las funciones
Nuestras funciones se añaden a las miles que ya incluye WordPress. Para que no haya conflictos con ellas, es conveniente elegir cuidadosamente los nombres de nuestras funciones, asegurándonos de que no coinciden con alguna otra. Siempre es una buena idea usar un prefijo característico en el nombre de nuestras funciones, para evitar nombres demasiado genéricos. Por ejemplo, example_prefix_theme_
. Así una función para cargar las opciones del theme se llamaría example_prefix_options
.
Un detalle que uno mismo agradece cuando se vuelve a un código tras cierto tiempo es que el nombre de una función sea suficientemente explícito, para saber inmediatamente lo que hace. Mejor example_prefix_thumbnail_and_images_options
que example_prefix_options
.
Usar los hooks y filtros
Los hooks permiten decidir cuándo cargar o ejecutar una función dentro de la secuencia de carga de WordPress. Si cualquier fragmento de código de functions.php debe pertenecer a una función, cada función debe estar asociada a un hook que le diga cuándo ejecutarse.
Aprovechar las funciones ya existentes en WordPress
Antes de programar una función para una necesidad específica, es conveniente buscar en la documentación de WordPress; hay muchas probabilidades de que ya exista una solución, y que esté programada mejor de lo que tú o yo seamos capaces de programar.
Crear una función madre de configuración del theme
Esta función, que se cargará cuando el theme se cargue, contendrá los filtros y hooks de carga de cada función, que estará definida fuera de ella, claro. Por ejemplo:
add_action( 'after_setup_theme', 'example_prefix_theme_setup' ); function example_prefix_setup() { /* Aquí filtros y hooks que cargarán las diferentes funciones */ /* Por ejemplo: */ /* Carga los archivos JavaScript de acuerdo al hook 'wp_enqueue_scripts'. */ add_action( 'wp_enqueue_scripts', 'example_prefix_load_scripts' ); }
A continuación podemos definir cada una de las funciones:
add_action( 'after_setup_theme', 'example_prefix_theme_setup' ); // definimos ahora la función que llamaremos en la función del theme // carga scripts js evitando conflictos function example_prefix_load_scripts() { wp_enqueue_script('jquery'); wp_enqueue_script( 'bootstrap.min', get_template_directory_uri() . '/bootstrap/js/bootstrap.min.js', array( 'jquery' ), '2.3.2', FALSE );