¿Qué es mejor, functions.php o plugins en WordPress?

Respuesta rápida

Son lo mismo.

Respuesta completa

Como developer de WordPress -a partir de ahora WP- cuando he querido desarrollar una funcionalidad siempre he dudado entre incluirla en el function.php o crear un plugin entero.

Son dos conceptos son distintos y cada uno tiene sus consecuencias, pero ninguno es mejor que otro.

En la documentación de WP lo dice bien claro, function.php actúa básicamente como un plugin.

¿Para que sirve un function.php o un plugin?

Sirven para añadir funcionalidad extra a la página web.

La funcionalidad que puede abarcar una página web es infinita, el límite está en el tiempo que se tarde en hacer y el precio del developer.

Entonces, ¿qué diferencias hay entre function.php y un plugin?

Ubicación:

  • Un plugin se encuentra en la carpeta wp-content/plugins/
  • El archivo function.php se encuentra dentro de un theme, i.e., wp-content/themes/alisios/

Disponibilidad:

  • El function.php solo funciona si el theme que le corresponde está activado.
  • El plugin funciona independientemente del theme. Se debe activar a través del panel de administración.

Quiero añadir una funcionalidad, ¿hago un plugin o lo meto en function.php?

Depende de la integración que vaya a tener con el theme.

Suponiendo casos prácticos:

  • Tu funcionalidad necesita un framework que solo tu theme utiliza, como por ejemplo, Bootstrap o jQueryUI, entonces recomiendo utilizar function.php, porque nunca sabes que problemas de compatibilidad pueden surgir con otros themes.
  • Tu funcionalidad modifica visualmente el theme, recomiendo utilizar function.php.
  • Tu funcionalidad necesita que haya código previo en el theme, recomiendo utilizar function.php.
  • Tu funcionalidad modifica solo el contenido de las entradas o las páginas, recomiendo utilizar un plugin.
  • Para mostrar tu funcionalidad usas un widget, recomiendo utilizar un plugin.
  • Tu funcionalidad crea una base de datos, que se gestiona en el panel de administración, recomiendo utilizar un plugin.

Se pueden suponer muchos más casos, pero espero que los mencionados te hayan ayudado a tomar una decisión sobre cómo encapsular tu funcionalidad, en un plugin o en function.php

¿Puede mi funcionalidad tener varios archivos, ya sea en un plugin o en function.php?

Por supuesto.

Como plugin es más sencillo de visualizarlo porque se guardan todos los archivos en una carpeta y todos los archivos son llamados haciendo un include o un require.

Del mismo modo se hace en el function.php, puedes guardar la funcionalidad en una carpeta y tan solo haces un include a través de function.php