Desde hace algún tiempo estamos viendo que cada vez se populariza más la utilización del fichero
functions.php
de nuestro tema para añadir funcionalidades, muchas veces como un modo rápido de añadir características a WordPress sin tener que instalar un plugin, simplemente añadiendo un pequeño código que realiza lo que queremos. Pero – todo tiene algún pero – ¿es correcto actuar así?, es más, ¿qué es mejor, un plugin o código en el fichero functions.php
?.
Vamos a ver un poco como funciona este fichero casi mágico y si es mejor usarlo o instalar plugins ¿te parece? …
Índice de contenidos
¿En qué se diferencian?
Si acabas de empezar con WordPress seguramente, o no sabes la diferencia o realmente ni te importa, con que funcione vas que te matas. Pero para que lo sepas, y así también vas teniendo algo de culturilla WordPress, de manera sencilla, se puede decir que los elementos de tu archivo functions.php
solo se ejecutan en el tema, mientras que los plugins se ejecutan en todo momento.
También debes saber que la mayoría de los plugins se pueden ejecutar dentro del fichero functions.php
y viceversa, puedes hacer un plugin sencillo de un código para functions.php
. Y lo mejor es que funcionarán bien ambos.
Vale, pero ¿qué hace el archivo functions.php
?
El fichero functions.php
se ha estandarizado en la mayoría de los temas actuales para WordPress. En realidad no es necesario pero es casi seguro que lo encontrarás en la mayoría de los temas. El código que veas en ese fichero se ejecutará en el tema y ya, eso es todo. Ahí te vas a encontrar funciones básicas de WordPress que «hacen cosas», como register_sidebar()
, el más típico, que habilita que el tema tenga la funcionalidad de widgets, pero te encontrarás muchos otros códigos seguramente, unos modificarán partes del diseño del tema, otros se ocuparán de la página de opciones del tema y cosas así.
¿Y por qué no un plugin?
Los plugins los tienes en el repositorio oficial de WordPress.org, y también puedes instalarlos desde el escritorio de tu WordPress.. Pueden hacer cualquier cosa que hagas también con el fichero functions.php
pero no se ejecutan solo con el tema, se ejecutan todo el tiempo si están activos. Los plugins hay que instalaros y activarlos desde el menú de … Plugins. Si no están activos no se ejecutan (con la excepción de los plugins de la carpeta mu-plugins de multisitio). Lo habitual es que los plugins tengan más funcionalidades que simplemente hacer que tengas widgets o un menú, pero también pueden hacerse cuan simples como desees.
Entonces ¿por qué y cuando usar un plugin?
Hay situaciones en que querrás que un plugin intercepte funciones o tags de plantilla de WordPress, en ese caso lo mejor es un plugin, pues se ejecuta todo el tiempo. Un buen ejemplo es el plugin para mostrar una versión móvil de tu sitio, WPTouch, que no necesita de tu tema sino que antepone uno distinto antes de que se muestre el activo, detectando si el dispositivo con el que están visitando tu sitio es un iPad, iPhone, Android o lo que sea. Este tipo de funciones, si estuvieran en el fichero functions.php
serían menos eficaces e incluso no se ejecutarían porque incluso ignoran el TEMPLATEPATH.
Otro bueno ejemplo son los tipos de entrada personalizados, pues afectan al funcionamiento interno de WordPress, independientemente del tema que utilices.
¿Se entiende?
Casos raritos
Vale, hay casos extraños, pero de puro raros es algo que solo abordarás en caso de encontrártelos o necesitar esa rareza. Por ejemplo, cargar jQuery desde el CDN de Google, y que quieras que cargue en un diseño o no, cosas así.
En resumen …
La conclusión es que si la característica que que quieres incorporar debe afectar al diseño de tu sitio (al tema) entonces siempre optes por el fichero functions.php
, en caso contrario, si necesitas funcionalidades más globales, seguramente lo mejor sea un plugin. ¿Te parece razonable?.
Esto proviene del genial planteamiento de Curtis McHale
¿Te gustó este artículo? ¡Ni te imaginas lo que te estás perdiendo en YouTube!
Claro como principiante de Wordpress recomiendo usar el functions.php . ya que los plugins saturan mucho wordpress.
Saludos
En mi caso personal prefiero plugins cuando se trata de algo independiente del tema que se utilice, utilizando functions.php cuando se trata de algo relacionado directamente con el tema. De esta manera si cambio de tema puedo seguir con el plugin.
Yo estoy contigo, por estrategia y practicidad
En mi caso personal prefiero plugins cuando se trata de algo independiente del tema que se utilice, utilizando functions.php cuando se trata de algo relacionado directamente con el tema. De esta manera si cambio de tema puedo seguir con el plugin.
Ocupo los dos… el fuctions.php para algo especifico de alguna platilla que este usando, mientras que los plugins en forma general :O me gusta mucho como funciona y me alivia un buen de dolores de cabeza… claro esta que uno debe estar organizado y saber que es lo que esta haciendo 😛
Chaox
Eso que dices Fernando de que "los elementos de tu archivo functions.php solo se ejecutan en el tema, mientras que los plugins se ejecutan en todo momento." y que posteriormente repites con afirmaciones como "un plugin, pues se ejecuta todo el tiempo".
No sé si es que no te has sabido expresar o simplemente estás equivocado. Pero con eso y que además dices que hay cosas que desde el functions.php no se puede hacer o darían problemas…
En fin, que no sé de dónde has sacado la información pero está claro que este artículo más que aclarar conceptos lo que hace es confundir.
Entre otras cosas, un plugin no se está ejecutando "todo el tiempo", se ejecutará lo que se tenga que ejecutar en el momento que sea necesario, exactamente igual que si lo hubieras hecho en el functions.php. Por algo WordPress tienen un completo sistema de hooks.
Al archivo functions.php se le trata como a un plugin (lo puedes leer en el codex), luego puedes ejecutar desde el si quieres cualquier función con idénticos resultados.
La única diferencia, es que si cambias de theme y no actualizas el functions.php, obviamente al no existir las funciones en el nuevo theme no se ejecutarán.
Pero salvo eso no hay ninguna otra diferencia entre una función ejecutada desde el functions.php o desde un plugin.
Entendí perfecto, yo ocupo bastante el archivo functions.php, creo que hay que utilizar wp solo con los plugins necesarios para el proyecto web que se este haciendo. Para mi mientras menos plugins mejor.
El uso de functions.php es apropiado cuando el tema requiere cierto nivel de customización. Para quienes desean evitar las complejidades de crear un plugin, functions.php viene bien.
El tema es cuando agregamos a functions.php funcionalidades complejas, numerosos custom post types, menues para ingresos de tipos customizados, rutinas con Mapas de google embebidas y un largo etc. Estamos creando toda una lógica de funcionamiento asociada a un tema en particular.
Conozco temas (comerciales!) tan complejos que si los desactivo, el sitio en si mismo deja de tener sentido. Tienen tanta funcionalidad interna como 10 plugines juntos. En estos casos functions.php está ampliamente ‘sobrecargado’. Lo peor: el usuario queda ‘atado’ para siempre al tema, sin opciones de poder cambiarlo… mala cosa.
Un tema (o theme) es la definicion de la interfaz gráfica de WP. En casos complejos, es preciso separar la interfaz de nuestra lógica de negocios. Functions.php puede funcionar como nuestra lógica de negocios adicional, hasta cierto punto.
Si nuestro tema evoluciona con mejoras continuas, llegará un momento que el uso de plugines es más conveniente.
Existe una regla simple para visualizar el problema: si cambiamos un tema y vemos que mucha funcionalidad se pierde, es que puede haber un sospechoso ‘abuso’ de functions.php y debería considerarse el usar plugines o crearse un plugin que complemente al tema.
Con las explicaciones de Fernando Zorrilla y Samuel me ha quedado más claro el asunto que con el artículo, la verdad. Tampoco entiendo la necesidad de cambiar de theme continuamente que tiene la gente en general.
Hola Fernando, no se sí este será el mejor lugar de tú blog para preguntarte pero bueno allá voy, conoces algún tutorial (en castellano sí no es mucho pedir) donde pueda aprender a modificar el archivo functions.php?
Soy bastante principiante en el asunto y me gustaría saber más sobre el tema…
Espero que no te moleste que pregunte desde aquí, gracias y saludos!
Alguien me puede dar alguna sugerencia, tengo un proyecto donde se generara post de patrocinadores, estilo portal, estilo clasificados o anuncios en concreto de un cliente, y se pretende que cada uno de esos post tengan el twitter independiente así como su respectivo widget de facebook, pero los plug ins de ese tipo solo funcionan para una cuenta no para varias. Alguna pista, ayuda o comentario de favor se les agradecera infinitamente XD
Tienes que pensar. Nada viene en bandeja 😉
La verdad no enuentro como dar inicio a mi sitio web
PROBLEMA: Al terminar de desarrollar uno de mis sitios web el archivo "functions.php" pesa 46kb y funciona bien, pero al día siguiente el sitio amanece caído porque no existe alguna función…al revisar los archivos por medio del ftp veo que el peso del archivo "functions.php" ahora es de 12kb, de manera que no es el mismo archivo (no se si wordpress tenga alguna funcionalidad para actualizar ese archivo o algo relacionado, he intentado todo lo que se me ha ocurrido, como cambiarle los permisos a solo lectura a este archivo, o desactivar las actualizaciones automáticas del core, plugins y theme a wordpress pero el problema persiste…todos los días debo entrar por ftp a mi sitio para poner de nuevo el archivo original, de otra manera la página queda inhabilitada hasta que lo haga).
¿Alguna idea?….realmente me tiene de los ** este tema.
Estoy creando un blog con tres post types, bueno la pregunta es la siguiente, me conviene crear un plugin de funciones para cada post types o en un solo plugin definir todos los post types, no quedaría muy cargado?
mi web