Dónde colocar una función en base a si es diseño o funcionalidad

Person fill wght grad opsz - Luis Colomé
Calendar today fill wght grad opsz - Luis Colomé
Donde colocar una función en WordPress

En cuanto a donde colocar un función hay varias opciones dependiendo de lo que queramos. Pero sin duda alguna, la gran pregunta radica en si la colocamos en el archivo functions.php o merece la pena hacer un plugin de funciones para albergar las que tengamos. Veamos. 

Funcionalidad o diseño

Llegará un día en que nos cansemos del tema que tenemos, o el producto o servicio que ofrecemos haya evolucionado y nuestra web tendrá que hacerlo también.

Está bien. Diseño nuevo, tema nuevo. En ese momento nos daremos cuenta de que habrá cosas que querremos conservar y otras que simplemente nos dará igual, dado que vendrán dadas por el nuevo tema o diseño. Pues bien, esas cosas que queremos conservar son las funcionalidades. Es lo que, supuestamente, debería estar en un plugin. Y lo que no importa es de la parte de diseño y debería estar en nuestro tema. Ya bien en el archivo functions.php u ordenado en otros archivos. A eso llegaremos mas adelante. 

Un ejemplo de funcionalidad

Supongamos que estamos desarrollando un directorio de libros, por ejemplo para una editorial, o para un escritor. Decidimos que los artículos de WordPress se quedan cortos, asi que creamos un nuevo tipo de contenido personalizado (CPT), llamado Libros. Le agregamos sus campos personalizados como autor, editorial, año de publicación, tipo de publicación, ISBN, etc… todos ellos campos para rellenar.

Ya lo tenemos desarrollado. ¿Donde lo implementamos?  ¿En el archivo functions.php? Podríamos, es decir, funcionaría. Pero la mejor manera de saberlo es preguntarnos si en ese futuro cambio de tema querremos perder todo eso. ¿Querré conservar el CPT llamado Libros? En este caso hipotético la respuesta es si. Imaginad decirle a esa editorial que tiene que empezar de nuevo y rehacer toda base de datos de libros porque quiere cambiar un poco el aspecto de la web. Una locura.

Genesis Author Pro, un plugin para crear tu propia biblioteca
Genesis Author Pro, un plugin para crear tu propia biblioteca

Entonces, siendo funcionalidad deberá ir en un plugin. Que de hecho ya existe. La complejidad de ese plugin ya la decidimos nosotros mismos. O incluso pueden ser varios plugins que creen esa funcionalidad, da igual. Lo importante es desvincularlo de la parte de diseño. De otra manera se perderá con el tema.

Sólo diseño

Ejemplos de funciones que aporten diseño hay cientos. Tales como la típica que quita los títulos de todas las entradas del blog. O una que cree un área de widgets, que quizás sólo se mostrará en un lugar de la web. 

¿Podríamos crear un plugin para estas funciones? Claro que si, y funcionarían de igual manera. En este caso las dos opciones son válidas. Podemos albergar la función en el functions.php o crear un plugin. Quizás se hace siempre lo primero porque es más cómodo. 

Web design - Creando bocetos
Web design – Creando bocetos

El functions.php más ordenado

Otra opción, a la hora de organizar nuestras funciones y de no llegar a tener el archivo functions.php saturado con miles de líneas, es ordenar los fragmentos de código o librerías que vamos utilizando, en archivos php, que luego llamaremos desde el functions.php

En Genesis, existe una carpeta en cada tema hijo o child theme llamada /lib en la que se almacenan estos archivos. Y luego con una simple línea de código se llaman desde el functions.php. Por ejemplo. Si hemos implementado un portfolio en nuestra web, con un plugin y queremos agregarle alguna funcionalidades extra, podríamos crear el archivo portfolio-functions.php y ponerlo en la carpeta /lib. Después con una simple línea de código lo llamamos desde functions.php.

// Incluimos las funcionalidades del portfolio.
include_once( get_stylesheet_directory() . '/lib/portfolio-functions.php' );

Y le agregamos un comentario para saber a que hace referencia al archivo al que estamos llamando.

Las plantillas o templates

En el caso de que lo que queramos implementar sean muchas lineas de código, cabe la posibilidad de crear plantillas o templates donde pondremos ese código. En lugar de ponerlo todo en el functions.php. Este código sólo se ejecutará cuando visualicemos a esa parte de la web. Si por ejemplo, queremos que una categoría del blog se vea completamente distinta a como se ve el resto. PAra ello creamos la plantilla o template category-6.php. El código que pongamos ahí sólo se ejecutará cuando visualicemos esa categoría.

Lo mismo pasa con las páginas. El código alojado en el template page-about.php se ejecutará sólo cuando se visualice la página /about.

Es el caso de un tema nuevo que estoy diseñando. He creado un loop entero para el portfolio con numerosas funciones para personalizar la página. Ese loop lo he incluido en el archivo archive-portfolio.php. De esa manera WordPress sólo lee esas líneas de código cuando alguien visualiza el portfolio. 

Como veréis las opciones son numerosas, pero bajo mi punto de vista, la manera en la que hago las cosas que no es otra que la que he contado, funciona. Es eficiente, y cualquiera que eche un vistazo al código que escribo, podrá indentificar claramente de donde vienen las cosas y que hace cada archivo. 

Me gustaría saber vuestra opinión. O si tenéis alguna duda, aportación o pregunta podéis dejarme un comentario justo debajo. O también podéis mandar un mensaje a través del formulario de contacto. Si sois suscriptores no os olvidéis de hacerlo a través de la Intranet, pues os daré preferencia a la hora de contestar emails.