Descuento 20% Diciembre
Plugin Optimización de Imágenes Gratuito para WordPress
Miércoles, 08 Junio 2016 23:39

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

Escrito por 
CMS:  WordPress |  Versión:  4.5.x |  Nivel de dificultad:  Básico |  Tiempo estimado de lectura:  20 minutos


functions.php en WordPress


¿Recuerdas cuando eras más pequeño y tus padres o educadores te decían eso de "niñ@ no metas los dedos en el enchufeee" y tu hacias 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, jeje!!

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 XCloner o el plugin de tu fervor, o más simple aún, cacharrear primero dentro de una sandbox en WordPress para verificar que todo ira 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 tu web, caigan las ventas o tu jefe se de cuenta...

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

 

¿Que es functions.php?

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 de 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 (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 en 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.

 

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 } o 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 que 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.

 

¡Vale! la he liado con functions.php ¿cómo lo arreglo?

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

Recuperando una copia de functions.php desde Dropbox

Si haces copias automáticas diarias en Dropbox o Google Drive de tu instalación de WordPress, 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.


Recuperando una copia de functions.php desde Dropbox

Esto lo puedes hacer desde tu cPanel, Archivos, Administrador de Archivos o por FTP.


Sustituye el archivo erróneo

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.


Sube la copia de Dropbox

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


Sube la copia de Dropbox

Madre mía ¡pero cómo puede ser tan simple! :)

Personalmente este para mi es uno de los métodos más recomendados, por inmediatez, sobre todo porque las copias se realizan todos los días y se que a lo largo del día, si me cepillo 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.

Puedes leer en el artículo del Blog como programar las copias de seguridad de WordPress hacia Dropbox de manera desatendida.

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.

En este vídeo te explico lo sencillo y rápido que puede ser restaurar el archivo functions.php desde una copia de seguridad que realices automáticamente cada día en Dropbox.



 

Recuperando functions.php desde SuperBackup

Si todavía eres de los que no usa la nube (Dropbox, Drive, etc.) para almacenar automáticamente copias de seguridad diarias, no sabes lo que te estás perdiendo, tu mismo. No obstante, si eres cliente de Webempresa ¡estás salvado! 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 cPanel, 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" y luego especificando 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 SuperBackups puedes verlo en nuestras guías relacionadas para esta funcionalidad (solo clientes de Webempresa).


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' para hacer pruebas antes de que tu web deje de ser visible.

 

Lectura recomendada:
Backups WordPress en 2 minutos con All In One WP Migration

     

¿Te ha resultado interesante este artículo?

Suscríbete para recibir consejos exclusivos para WordPress, Joomla y PrestaShop



Luis Méndez Alejo

Miembro del equipo técnico de Webempresa.
Coordinador de contenidos en el Blog y en Youtube.
Google+


Plugin Optimización de Imágenes Gratuito para WordPress