blog webempresa

functions.php en WordPress ¡restáuralo tras un desastre!

por | Sep 28, 2023 | Aprender WordPress

Imagen destacada - functions.php en WordPress restáuralo tras un desastre

¿Recuerdas cuando eras más pequeño y tus padres o tutores te decían eso de “niñ@ no metas los dedos en el enchufeee” y tú hacías caso omiso?, hasta que ¡¡¡zassss!!! corrientazo que te llevaste y ese día aprendiste que la prudencia es la madre de todas las ciencias. Al final a cacharrazos también se aprende, je, je, je.

Este artículo no va de que aprender a cambiar un enchufe, ni que te sometas a descargas con el secador de pelo, sino que conozcas el archivo functions.php en WordPress y cómo restaurarlo en caso de que lo manipules erróneamente.

No has sentido un susurro por lo bajito, en tu oído derecho que decía “no toques el archivo functions.php en WordPress, que la vas a liar parda…” y tú naturalmente has ignorado el aviso hasta que te has dado de narices con un error 500 o una hermosa pantalla blanca en tu web.

Al final el problema llega y casi siempre por no haber tomado las medidas preventivas habituales, como hacer una copia de seguridad con All In One WP Migration o el plugin de tu devoción, o más simple aún, cacharrear primero dentro de una sandbox en WordPress para verificar que todo irá bien, ¿verdad que no lo hiciste?

Y ahora toca arrepentirte del desastre y ponerte manos a la obra para solucionar este desaguisado antes de que tus visitas se resientan en la web, caigan las ventas o tu jefe se dé cuenta…

¡Venga, vamos a solucionar este gazapo causado en functions.php!

  ¿Qué es functios.php de WordPress?

 

Aparte de ser un archivo, a veces suele también ser una pesadilla para algunos usuarios, sobre todo cuando las cosas se tuercen por añadir código incorrecto o no soportado en este archivo.

Pero más allá de esto, functions.php es el archivo de funciones del Tema de WordPress en uso. Cada tema tiene su propio archivo functions.php y este actúa como un plugin tanto para el dashboard de WordPress como para el frontal.

Permite añadir código que amplíe las funcionalidades al tema en uso y a la instalación de WordPress de forma general.

Permite añadir ganchos, filtros, funciones PHP y de WordPress. Los temas hijo en WordPress (child theme) también pueden tener su propio archivo functions.php si necesitas ampliar funcionalidades al margen del tema padre.

Además, puedes añadir mediante acciones el código de Google Analytics, declarar cuál será y donde se encuentra el favicon de tu sitio web, ocultar el número de versión de WordPress (para evitar la enumeración), añadir un logo personalizado mediante una función y un sinfín de posibilidades que a poco que escarbes en Internet vas a encontrar, por lo que llegado a este punto cabe recordarte de nuevo que la precaución es la mejor de las medidas a tomar en el uso de este archivo.

Se localiza en la carpeta:

wp-content   themes   tema activo

 Todos los Temas tienen un archivo functions.php estén o no activos. Los temas hijos pueden heredar funciones del tema padre o tener únicamente aquellas que supongan un cambio de filtros, acciones u otros para el tema hijo, aparte de las que ya incluya de forma nativa el tema “padre”.

  Errores de todos los tamaños y colores

 

Cuando el código insertado en functions.php es correcto, nada malo debe suceder y el comportamiento del sitio y/o del tema será el esperado. Pero si, por el contrario, añades código erróneo, no soportado o con una sintaxis incorrecta, podrás encontrarte en pantalla, en tu archivo error_log o en el debug cosas como estas:

Parse error – syntax error, unexpected $end in /public_html/wp-content/themes/titania_wp/functions.php on line 278

Un error parse no es más que una indicación de que algo está mal escrito o falta. Puede ser, desde uso de etiquetas de PHP incorrectas, algún símbolo de cierre como corchetes }, paréntesis ) o una simple coma ,

Revisa la línea del error y observa que puede estar faltando, posiblemente sea un error fácil de resolver que te puede ahorrar un mal rato y tener que restaurar una copia de seguridad anterior al problema.

PHP Parse error: syntax error, unexpected ‘{‘ in functions.php on line 20

Otro clásico error de escritura o de copy & paste de código de otros sitios web. En este error indica que falta un corchete { de apertura en la línea 20 del archivo.

 

Cannot redeclare _verify_activate_widget() (previously declared in /home/usuario/public_html/wp-content/themes/twentyeleven/functions.php:188) in /home/usuario/public_html/wp-content/themes/twentyeleven/library/admin/templates/functions.php on line 243

 

Caben varias conjeturas en la causa de este error, pero yo me decantaría por qué has editado el archivo functions.php incorrecto o algún problema con una versión desactualizada del tema, ¿se te ocurre alguna a ti?

Al final solo quería ilustrarte un poco lo que puede provocar el meterle mano a functions.php sin tener claro el cómo y con qué código.

No te voy a discutir que si algo lo puedes hacer con una función, un gancho o un filtro, hazlo, siempre será mejor que instalar un plugin.

  Cómo reparar el archivo functions.php dañado

 

Reconocido el error, ya has dado el primer paso, ahora toca ver qué opciones tienes. A mí se me ocurren varias.

  • Restaurando el archivo desde un backup almacenado en tu CDN.
  • Recuperando el archivo de un backup del Hosting con SuperBackup.
  • Subiendo por FTP el archivo de un backup almacenado en tu ordenador.
  • Subiendo el archivo al Hosting desde tu Panel de Hosting.

Seguro que a ti se te ha ocurrido alguna más, ¡felicidades! eso demuestra que has tenido la precaución de guardarte una copia del archivo por si pasaba algo raro después de manipularlo.

  Recuperando una copia de functions.php desde tu CDN

 

Si haces copias automáticas diarias de tu instalación de WordPress en tu nube (Dropbox, Google Drive, etc.), ve y descarga el archivo functions.php de la última copia y súbelo de nuevo al Hosting en sustitución del actual fichero con errores.

Descargar archivo functions.php de un backup en Dropbox
Si no tienes claro cómo automatizar las copias de seguridad para tenerlas en tu nube de Dropbox u otro tipo de CDNs, consulta el artículo Copias de Seguridad de WordPress en DropBox con UpdraftPlus donde te lo explico.

Puedes eliminar el archivo functions.php erróneo o renombrarlo, por ejemplo a functions.php_OLD para no perderlo, pero que no interfiera con tu instalación de WordPress.

A continuación sube a esta carpeta el archivo functions.php que has descargado de tu copia de seguridad diaria almacenada en Dropbox.

El archivo functions.php, de la copia de seguridad de tu CDN, lo puedes subir a tu WordPress desde tu panel de Hosting wePanel ➜ Archivos ➜ Administrador de Archivos o por FTP.

Renombrar y subir archivo functions.php al Hosting

Para finalmente tener el archivo functions.php rescatado de la copia de seguridad y que tu web vuelva a ser operativa.

Archivo functions.php restaurado

Madre mía, ¡pero cómo puede ser tan simple! 😜

Personalmente este para mí es uno de los métodos más recomendados, por inmediatez, sobre todo porque las copias se realizan todos los días y sé que a lo largo del día, si me llevo por delante algún archivo o hago cambios y luego no puedo dar marcha atrás, soy consciente de que en Dropbox encontraré una versión del archivo eliminado o modificado, de las últimas 24 horas.

Si quieres tener acceso a los ficheros de la copia de seguridad en Dropbox de forma individual, como si navegaras por la misma estructura que verías desde tu Administrador de Archivos del Hosting o por FTP, no instales o actives el plugin (addon) para Dropbox que permite comprimir las copias en formato .zip llamado ZIP backup, ya que entonces las copias se subirían diariamente a Dropbox en formato comprimido ZIP y no sería práctico el proceso de restaurar un solo archivo.

  Recuperando functions.php desde SuperBackup

 

Si todavía eres de las personas que no usa la nube (Dropbox, Drive, etc.) para almacenar automáticamente copias de seguridad diarias, no sabes lo que te estás perdiendo. No obstante, si eres cliente de Webempresa ¡estás salvad@!, ya que diariamente se hacen copias de seguridad (además de otras copias), y es precisamente la copia de seguridad diaria la que te puede salvar si la lías con functions.php

Recuerda que lo recomendable es que desde tu WePanel ➜ Archivos ➜ Administrador de Archivos, renombres primero el archivo functions.php problemático (si no pudiste resolver el problema editándolo) para luego restaurar una copia desde tu Área de Cliente ➜ Hosting ➜ SuperBackups seleccionando la fecha de la copia de seguridad deseada y usando la opción “Restauración parcial”.

Posteriormente especifica el archivo que vas a restaurar, en este caso /public_html/wp-content/themes/<tu-tema-activo>/functions.php.

Hecho esto, tu archivo functions.php debería haberse restaurado y tu web tendría que volver a funcionar con normalidad.

El funcionamiento más detallado de SuperBackup puedes verlo en nuestras guías relacionadas para esta funcionalidad (solo clientes de Webempresa).

  Añadir fragmentos de código en WordPress de forma segura

 

Es bueno que sepas que no es necesario editar el archivo functions.php de tu instalación de WordPress para añadir fragmentos de código para cambiar el comportamiento parcial o global de funcionalidades nativas de WordPress o de algún plugin en particular.

Actualmente tienes plugins que te permiten añadir “trozos de código”, que es más o menos lo que alberga el archivo functions.php de WordPress, sin tener que tocar archivos delicados de tu instalación y pasar por alguno de los procesos de restauración explicados arriba.

 

Algunos de estos plugins son:

  • Code Snippets: Ver plugin – Sencillo de usar y muy recomendado.
  • Woody code snippets – Insert Header Footer Code, AdSense Ads: Ver plugin – Versión fremium y de pago.
  • WPCode – Insert Headers and Footers + Custom Code Snippets: Ver plugin – Ideal para Ads.
  • Insert PHP Code Snippet: Ver plugin – Permite insertar fragmentos de código mediante shortcodes.
  • Header Footer Code Manager: Ver plugin – No va fino con todo tipo de scripts ¡ojo!

Por la experiencia de uso en estos años te recomiendo probar Code Snippets, que además de ser muy sencillo, te va a permitir añadir trozos de código en tu sitio web, sean funciones, filtros, etc., sin tocar archivos de tu instalación, y pudiendo activar o desactivar según tus necesidades, aquellos que uses circunstancialmente.

Fragmento de código en Code Snippets

Añadir snippets para que sean interpretados por WordPress es bastante sencillo y además tiene soporte para indicarte si algún fragmento del código añadido tiene errores de sintaxis.

Si por alguna razón algún fragmento de código añadido no puede ser ejecutado, por cuestiones de PHP o de compatibilidad con tu versión de PHP activa, o mala programación del script ¡no te preocupes! basta con que hagas clic en el botón “Atrás” de tu navegador, y volverás a la pantalla del snippet, para resolver el problema o realizar la acción que convenga.

Errro al añadir un script en Code Snippets

Analiza si tu script es compatible en la versión de PHP que ejecuta tu sitio web.

De todos los métodos posibles creo que es el más recomendable utilizar, ya que evita que dejes tu web inoperativa por manipular archivos que no deberías, o si lo haces ¡bajo tu responsabilidad!

  Cómo editar functions.php en WordPress de forma segura

 

Si puedes evitar editar este archivo para añadir código, ¡mejor! Hacerlo desde un plugin como Code Snippet o HFCM te va a permitir activar o desactivar scripts de código en función de tus necesidades y evaluar la sintaxis antes de activar cada nuevo fragmento de código que añadas en tu web.

Editar el archivo functions.php de una tema o plugin en WordPress requiere precauciones para no romper nada, por lo que es bueno que tengas en cuenta algunos consejos:

  • Haz una copia de seguridad del archivo functions.php antes de editarlo. Así puedes revertir cambios en caso de errores.
  • Usa un editor de código como Visual Studio Code o similar, para tener resaltado de sintaxis y autocompletado.
  • Comenta cualquier código nuevo añadiendo // antes de la línea. Esto lo desactiva temporalmente para probar.
  • Haz cambios pequeños, guarda y prueba después de cada uno. No hagas múltiples cambios de una vez.
  • No elimines o comentes código existente a menos que estés seguro de que no romperá nada. Muchas funciones dependen de otras.
  • Evita editar código relacionado al núcleo de WordPress, enfócate solo en hooks en WordPress y funciones personalizadas.
  • Respeta estándares de codificación – indentación, espacios, llaves, punto y coma, etc.
  • Documenta cada función nueva con comentarios explicando qué hace. El tiempo vuela y luego no te acordarás.
  • Después de probar, elimina los comentarios para activar el código nuevo.
  • Guarda copias incrementales en caso de necesitar revertir. Por ejemplo, functions-1.php, functions-2.php.
  • Pide ayuda si no estás segur@ sobre una edición en particular. Tu soporte del Hosting o la comunidad de WordPress te puede ayudar.

Si usas el sentido común, utilizas plugins para añadir fragmentos de código, y de paso, sigues las directrices indicadas, podrás editar el archivo functions.php de manera segura sin romper tu sitio WordPress.

  Conclusiones

 

Hay muchas más formas de restaurar functions.php después de haberla liado, pero creo que solo van a contribuir a aumentar el número de palabras de este artículo y no necesariamente van a sustituir a estas dos excelentes opciones que te he planteado para restaurar este archivo cuando surgen los problemas.

Es importante que sepas que por un error en functions.php no es necesario restaurar una copia de seguridad completa del sitio web, es una pérdida de tiempo importante por tu parte, que puedes evitar haciendo copias de seguridad programadas diarias y trabajando en una sandbox en WordPress para hacer pruebas antes de que tu web deje de ser visible.

¿Te ha resultado útil este artículo?

Black Friday 2024