Seguramente en alguna ocasión, os ha tocado usar alguna función personalizada para cambiar el comportamiento de WordPress, para añadir alguna característica, o quizá para eliminarla.

Casi siempre que os encontráis algún artículo, en la mayoría de los casos os dicen que la función a incluir, la tenéis que colocar en el functions.php de vuestro tema. Pero… ¿es realmente el lugar correcto para colocar funciones personalizadas?

Pues en alguna ocasión puede que sí, pero no siempre. Así que vamos a repasar las mejores opciones que tenemos para colocar nuestras funciones personalizadas.

Opción nº 1: colocar funciones en el functions.php de nuestro tema

Colocar funciones en el archivo functions.php de nuestro tema, no es tan malo como nos lo quieren hacer creer, pero tampoco recomendable. Siempre dependerá de para qué se va a utilizar la función.

Si el código que queremos colocar, modifica algo que es exclusivo del tema que estamos utilizando, entonces sí es recomendable colocarlo en el functions.php de nuestro tema. Ya que si algún día cambiamos de tema, dicha función, ya no servirá, y tenerlo fuera, sería un código que no serviría para nada.

Por ejemplo. Conozco temas que generan más de 20 imágenes por cada imagen subida, y no siempre se utilizan. Esto genera una cantidad ingente de imágenes que no hacen más que ocupar sitio en nuestro servidor, algo que si bien no puede ser preocupante, podría serlo con página con miles de entradas.

Colocar una función para que no genere las imágenes que no usamos, sería algo exclusivo para ese tema, por lo que lo ideal sería colocarlo en el functions.php de nuestro tema, ya que si cambiamos de tema, tendríamos una función que estaría intentando quitar imágenes que no se están generando.

Opción nº 2: crear un Plugin

Podemos crear un Plugin que tan solo tendrá las funciones que queramos. Dicho Plugin, se subirá a nuestro WordPress como cualquier otro, y se activará de la misma manera.

La ventaja de tener las funciones en un Plugin separado de nuestro funcions.php, es que si algún día cambiamos de tema, las funciones seguirán estando disponibles y funcionando.

Esta opción es ideal para funciones que cambian el comportamiento de WordPress y no del tema que estemos usando. Un ejemplo sería una función que desactiva la creación de Feeds. Algo que aunque cambiemos de tema, seguiremos usando.

El proceso de creación de un Plugin, puede parece algo complicado, pero como solo vamos a incluir funciones, y no vamos a crear una página de opciones, el proceso es muy sencillo.

En un editor de texto añadiremos la cabecera por defecto tal y como nos los muestra el Codex de WordPress:

Este archivo lo guardaremos, por ejemplo, como misfunciones.php y lo colocaremos en una carpeta llamada misfunciones. Comprimiremos la carpeta en formato ZIP y lo añadiremos a nuestra página como cualquier otro Plugin.

Para verlo mejor veremos el siguiente ejemplo, que desactiva la barra de navegación para todos los usuarios:

Opción nº 3: usar un Plugin para funciones personalizadas

Hay varios Plugins que son exactamente para añadir funciones personalizadas y no tener que incluirlas en el functions.php del tema.

De todos los que hay, hay uno que es muy popular y sobre todo muy útil: My Custom Functions

Este Plugin ofrece muchas ventajas entre las que destaca:

  • Si escribes el código mal, no aparece un error de servidor como te pasaría al editar el functions.php. El Plugin te dice que el código tiene un error, y que no ha podido guardar los cambios. Algo muy útil que nos evita tener que entrar al hosting directamente para editar el fichero y tener que modificar el código de nuevo.
  • Tiene el “código de colores” como algunos editores de código. Algo muy útil a la hora de escribir nuestras funciones personalizadas.
  • Tiene numeradas las líneas, ideal para buscar errores.
  • Tiene un botón para activar o desactivar las funciones que hemos añadido.
  • Es gratuito.

Un Plugin de estas características es especialmente útil cuando tenemos muchas funciones que seguiremos usando aunque cambiemos de tema, pero sobre todo para cuando necesitamos ir haciendo cambios constantemente, ya que el editor es muy visual.

Opción nº 4: crear nuestro propio fichero de funciones

Podemos crear nuestro propio fichero php para incluir todo el código que queramos. Dicho fichero puede ir en cualquier parte de nuestra instalación de WordPress, aunque no es aconsejable colocarlo en cualquier sitio.

Al igual que los casos anteriores, dependerá de si las funciones cambian características de nuestro tema, o cambia aspectos que queramos seguir usando cuando cambiemos de tema.

Si es la primera opción, el fichero lo colocaremos dentro de nuestro tema. Si no lo es, podemos, por ejemplo, crear una carpeta en el raíz de nuestro servidor para incluir todas nuestras modificaciones.

Aun así, en ambos casos, este fichero tendremos que indicarle a WordPress donde está. Para ello tendremos que incluirlo desde nuestro funcions.php, nuestro Plugin creado, o nuestro Plugin de funciones.

Para incluir ficheros en PHP y en WordPress tenemos varias opciones. Recomiendo este estupendo artículo (en inglés) que lo explica a la perfección.

En resumen:

Como os habéis podido dar cuenta, todo dependerá del uso que se le va a dar a las funciones. Por poner un ejemplo práctico, poseo varias páginas en WordPress para productos de afiliados. Todas las páginas son iguales, aunque cambia la temática.

En el Plugin My Custom Functions, tengo todo el código que se encarga de insertar las entradas de manera automática, generando sus imágenes, texto, etiquetas, categorías etc… También incluye varias funciones para cambiar el comportamiento de WordPress.

Estas funciones son iguales en todas las páginas. Así, si realizo un cambio, sé que tengo que hacerlo en todas las páginas, que con un sencillo copiar y pegar se soluciona.

Luego cada página tiene su propio fichero en php con funciones personalizadas exclusivas para cada pagina.

Esto lo tengo separado, ya que algunas funciones son para una página en concreto.

Si lo colocara todo junto, tendría funciones que no servirían en algunas páginas.

Y como apunte final, tan solo recordar que siempre es recomendable usar un Tema Hijo para nuestras modificaciones, y hacer copias de seguridad de nuestro contenido y base de datos de manea constante.