Cómo encontrar el archivo functions.php en WordPress, acceder a él y editarlo

Si acabas de empezar con el desarrollo en WordPress, uno de los archivos más importantes con los que deberías familiarizarte es functions.php. En realidad, hay tres posibles archivos functions.php de WordPress que podrías usar en tu sitio web, y cada uno desempeña una función diferente. Saber dónde se encuentran estos archivos, cuál es su finalidad y cómo y cuándo modificarlos te ayudará a solucionar problemas y te dará más control sobre la funcionalidad de tu sitio.

En esta guía, veremos todo lo que necesitas saber sobre WordPress y los archivos functions.php. Aprenderás qué hace functions.php y cómo encontrarlo y editarlo. Incluso incluiremos algunos fragmentos de código útiles para que los pruebes. 

Puedes empezar por el principio y leerlo todo, o ir directamente a una sección concreta usando la tabla de contenidos que aparece a continuación:

¿Qué es functions.php en WordPress?

En WordPress, el archivo functions.php contiene código esencial que determina el funcionamiento de tu sitio. De hecho, hay al menos dos archivos functions.php en cada sitio de WordPress: uno incluido en el núcleo de WordPress y otro incluido con tu tema. Si estás usando un tema hijo, también deberías tener un archivo functions.php en la carpeta de tu tema hijo. 

El archivo functions.php del núcleo de WordPress contiene código importante necesario para que WordPress funcione. Casi nunca deberías modificar el código del núcleo de WordPress incluido en el archivo functions.php

El archivo functions.php de tu tema contiene todas las características específicas del tema de tu sitio web: ubicaciones de menú personalizadas, áreas de widgets, contenido y funciones personalizadas para la cabecera y el pie de página, longitud de los extractos de las entradas y mucho más. 

El archivo functions.php de tu tema funciona prácticamente igual que un plugin de WordPress. La diferencia es que functions.php debe utilizarse para el código específico del tema, mientras que los plugins deben utilizarse para las funciones que seguirán disponibles aunque cambies de tema.

¿Dónde se encuentra el archivo functions.php?

Hemos hablado de lo que hace el archivo functions.php tanto en el núcleo de WordPress como en los archivos del tema, pero ¿cómo encuentras el archivo functions.php? ¿Dónde está functions.php en WordPress?

Todos los archivos de tu instalación de WordPress se encuentran en el directorio raíz de tu sitio y en varias subcarpetas. El directorio raíz suele llamarse algo como public_html o www, pero puede tener otro nombre. Si no tienes claro dónde encontrar la carpeta de tu instalación de WordPress en el servidor, ponte en contacto con tu proveedor de hosting.

Una vez que hayas encontrado dónde están los archivos de WordPress en tu servidor, puedes empezar a buscar tus archivos functions.php. Hemos mencionado que hay hasta tres ubicaciones para los archivos functions.php de WordPress: el núcleo de WordPress, la carpeta de tu tema y la carpeta de tu tema hijo. En esta sección veremos dónde encontrar cada uno. 

¿Dónde está functions.php en el núcleo de WordPress?

Si buscas la ubicación de functions.php en el núcleo de WordPress, la encontrarás en la carpeta wp-includes de tu instalación de WordPress.

buscar el archivo functions.php en wp-includes

Aunque nunca debes editar el archivo functions.php en el núcleo de WordPress, puede que necesites revisarlo por un motivo u otro. Lo más probable es que tengas que examinar el archivo functions.php en el núcleo de WordPress si sospechas que se ha inyectado malware. 

Antes siquiera de abrir functions.php, debes hacer una copia de seguridad de tu sitio de WordPress por si haces accidentalmente un cambio en el archivo que provoque un error crítico. Si descubres que functions.php se ha dañado o hackeado, es probable que haya otras partes de WordPress afectadas. Lo mejor es simplemente sustituir WordPress por una instalación nueva, en lugar de intentar eliminar uno a uno todos los scripts problemáticos.

¿Dónde está functions.php en la carpeta del tema de WordPress?

El archivo de tu tema functions.php se encuentra en el directorio principal de la carpeta de tu tema: wp-contentthemes → yourtheme.

buscar el archivo functions.php en la carpeta del tema

¿Dónde está functions.php en la carpeta del tema hijo de WordPress?

El tema hijo de WordPress tiene el archivo functions.php ubicado en el directorio principal de la carpeta de tu tema hijo: wp-content → themes → yourtheme-child.

buscar el archivo functions.php del tema hijo

¿Cómo accedo a functions.php?

Saber dónde encontrar functions.php es solo la mitad del trabajo. Ahora viene la cuestión de cómo acceder a functions.php en WordPress. Aunque al archivo functions.php del núcleo de WordPress solo se puede acceder mediante el protocolo de transferencia segura de archivos (SFTP) o a través de cPanel, también se puede acceder a los archivos functions.php de tu tema y de tu tema hijo desde el Editor de archivos de temas de WordPress. 

Acceder a functions.php en el Editor de archivos del tema de WordPress

Si necesitas acceder al archivo functions.php de tu tema o de tu tema hijo, puedes hacerlo directamente desde el Editor de archivos del tema de WordPress. En el panel de administración de WordPress, ve a Apariencia → Editor de archivos del tema.

Se abrirá la página «Editar temas». Desde aquí, en el menú desplegable situado junto a «Selecciona el tema que quieres editar», elige tu tema y haz clic en «Seleccionar». Verás una lista de archivos disponibles para editar en la columna «Archivos del tema» situada en el extremo derecho de la pantalla. Haz clic en functions.php para abrir el archivo.

Encontrar el archivo functions.php en el panel de administración de WordPress

Si estás en el archivo functions.php del tema padre, verás una advertencia en la parte inferior de la pantalla, encima del botón Actualizar archivo, que dice: «Atención: este es un archivo de tu tema padre actual». 

Nota: Si no eres el desarrollador del tema, debes hacer los cambios en el archivo functions.php de tu tema hijo para evitar que tus modificaciones se sobrescriban en futuras actualizaciones del tema.

Acceder a functions.php a través de SFTP

Paso 1: Instala tu cliente de SFTP. Si todavía no tienes un cliente de SFTP, tendrás que descargar uno. Hay opciones gratuitas y premium excelentes, entre ellas: 

AplicaciónSistemaGratis o premium
WinSCPWindowsGratis
Filezilla Windows, Mac, LinuxOpciones gratuitas y premium
CyberduckWindows, MacGratis
TransmitMacPremium

En este ejemplo usaremos Filezilla. Los demás clientes de SFTP deberían funcionar de forma similar.

Paso 2: Obtén tus credenciales de SFTP. Para iniciar sesión en tu servidor mediante SFTP, necesitarás los siguientes datos:

  • Host (la dirección IP o la URL de tu servidor)
  • nombre de usuario de SFTP
  • Contraseña
  • Número de puerto

Estos datos suelen encontrarse en el panel de control de tu proveedor de hosting. Es posible que se generen automáticamente o que tu proveedor te pida crear un nombre de usuario y una contraseña de SFTP. Si no sabes dónde encontrar estas credenciales o tienes problemas para averiguar cómo crearlas, busca instrucciones en la documentación de ayuda de tu proveedor o ponte en contacto con su equipo de soporte. 

Paso 3: Introduce tus credenciales de SFTP.

Introduce la dirección IP o la URL de tu proveedor de hosting, tu nombre de usuario de SFTP, la contraseña y el número de puerto (normalmente 22 o 2222, aunque algunos proveedores pueden usar un puerto diferente).

introducir las credenciales de SFTP en Filezilla

Nota: Puede aparecer una alerta de «clave de host desconocida» si tu cliente de SFTP utiliza la autenticación de confianza en el primer uso (TOFU). Marca «Confiar siempre en este host y añadir esta clave a la caché» si piensas volver a utilizar tu cliente de SFTP para acceder al sitio. Haz clic en OK para continuar.

mensaje de clave de host desconocida en Filezilla

Paso 4: Ve al directorio raíz de tu sitio web.

Cuando hayas iniciado sesión, verás dos árboles de archivos en la parte inferior de la pantalla: uno a la izquierda y otro a la derecha. El lado derecho muestra los directorios de tu servidor web (remotos). El lado izquierdo muestra los directorios de tu ordenador (locales). 

Tu directorio raíz suele estar en una carpeta llamada www o public_html, pero puede tener otro nombre. Si no sabes qué carpeta buscar, pregúntale a tu proveedor de hosting. Sabrás que estás en la carpeta correcta si ves las carpetas wp-admin, wp-content y wp-includes en la parte superior de la lista de archivos.

buscar la carpeta public_html en Filezilla

Paso 5: Ve al archivo functions.php del núcleo de WordPress, de tu tema principal o de tu tema hijo. Si estás buscando functions.php en el núcleo de WordPress, ve a la carpeta wp-includes.

Si buscas el archivo de tu tema functions.php en el directorio de tu tema, ve a wp-contentthemesyourtheme.

Para encontrar el archivo functions.php de tu tema hijo, ve a wp-content → themes → tu-tema-hijo.

Paso 6: Descarga functions.php. Ahora que sabes dónde se encuentra functions.php y has accedido a él, quizá quieras inspeccionar o editar el archivo. Antes de hacerlo, tendrás que descargarlo. Haz clic con el botón derecho en tu archivo functions.php y selecciona Descargar. El archivo se descargará en tu equipo local.

descargando el archivo functions.php desde Filezilla

Acceso a functions.php en cPanel

Si tu proveedor de hosting usa cPanel, puedes acceder a functions.php a través de su gestor de archivos. Si no sabes cómo encontrar cPanel en el panel de control de tu proveedor de hosting, ponte en contacto con su servicio de atención al cliente para obtener ayuda. 

Paso 1: Abre el administrador de archivos de cPanel. Una vez dentro de cPanel, ve a la sección Archivos y haz clic en Administrador de archivos.

Paso 2: Abre la carpeta raíz de tu sitio web. La carpeta raíz suele llamarse www o public_html, pero puede tener otro nombre. Las convenciones para nombrar la carpeta raíz varían según el proveedor de hosting, así que, si no tienes claro en qué carpeta debes buscar, pregunta a tu proveedor de hosting. 

Sabrás que estás en la carpeta correcta si ves las carpetas wp-admin, wp-content y wp-includes cerca de la parte superior de la lista de archivos.

Paso 3: Busca y descarga functions.php. El archivo functions.php del núcleo de WordPress se encuentra en la carpeta wp-includes

El archivo de tu tema functions.php se encuentra en wp-content → themes → yourtheme.

Si buscas el archivo functions.php de tu tema hijo, puedes encontrarlo en wp-content → themes → tu-tema-hijo.

Cuando hayas encontrado el archivo functions.php que buscas, haz clic con el botón derecho en functions.php y selecciona Descargar, o haz un solo clic en functions.php y después elige la opción Descargar del menú superior.

descargando el archivo functions.php desde cPanel

Si cambias el nombre del archivo al guardarlo, asegúrate de volver a llamarlo functions.php antes de volver a subirlo. Y, antes de modificar y sobrescribir functions.php, haz una copia de seguridad de tu sitio de WordPress

¿Cuándo debo editar functions.php en WordPress?

Antes de explicar cómo editar functions.php, deberíamos aclarar si conviene hacerlo y cuándo. Hay muchas razones por las que quizá quieras editar código de PHP en WordPress, pero añadir ese código a tu archivo functions.php no siempre es la mejor opción y solo debería hacerse en determinadas circunstancias, que comentaremos más adelante.

Cuándo editar functions.php en el núcleo de WordPress

Nunca. No deberías editar functions.php en el núcleo de WordPress. Como mucho, podrías sustituirlo si descubres que está dañado, pero es muy probable que eliminar o añadir código en el núcleo de WordPress, concretamente en functions.php, haga que tu sitio deje de funcionar. Así que puedes abrirlo, inspeccionarlo y sustituirlo por una copia nueva si lo necesitas, pero no hagas experimentos en ningún sitio web activo.

Cuándo editar functions.php en tu tema

En cuanto al archivo functions.php de tu tema, puede que necesites editarlo o puede que no. Si estás creando tu propio tema, casi con toda seguridad querrás añadir código personalizado a functions.php. Casi todos los temas tienen código en su archivo functions.php que le proporciona un conjunto único de funciones y capacidades. Además de tus hojas de estilos, estas funciones son una parte fundamental de lo que diferencia un tema de otro.

Si estás añadiendo código al archivo functions.php de tu tema que no sea específico de tu tema y pueda utilizarse independientemente de él, plantéate convertirlo en un plugin en su lugar. De este modo, podrás utilizar esa función en varios temas e incluso enviarla a la biblioteca de plugins de WordPress.org, donde podría resultar útil para otros usuarios de WordPress.

Antes de crear tu plugin, consulta la biblioteca de plugins para asegurarte de que lo que estás creando no exista ya. Si ya existe una solución de calidad, quizá prefieras reservar tus esfuerzos de desarrollo para otra función personalizada de tu sitio.

Cuándo editar functions.php en tu tema hijo

Si utilizas un tema de un desarrollador y quieres modificar el archivo functions.php, deberías usar siempre un tema hijo para hacer esos cambios. Cuando los desarrolladores del tema publican una nueva versión y actualizas a la última, tu tema actual se sobrescribe con los archivos nuevos, incluido functions.php.

Los temas hijo no se ven afectados por las actualizaciones del tema principal, por lo que conservarás todo tu código personalizado si haces cambios en el archivo functions.php de tu tema hijo.

Antes de añadir código, considera si usar un plugin sería una solución mejor. ¿El código que vas a añadir es específico de tu tema? Edita el archivo functions.php de tu tema hijo. ¿Es el código que estás añadiendo algo que quieras conservar si cambias de tema en el futuro (p. ej., el código de seguimiento de Google Analytics o el píxel de Facebook)? Usa un plugin.

Cómo editar functions.php en WordPress

Siempre debes tomar medidas para proteger tu sitio de cualquier error que puedas cometer al editar functions.php; por eso, antes de empezar a hacer cambios, haz una copia de seguridad de tu sitio y plantéate crear un sitio de pruebas para probarlos primero. De este modo, tu sitio en producción no se verá afectado si añades accidentalmente código en functions.php que provoque problemas graves o —peor aún— haga que tu sitio se bloquee por completo.

Ahora que has hecho una copia de seguridad de tu sitio, puedes pasar a editar tu archivo functions.php.

Cómo editar functions.php en el Editor de archivos de temas de WordPress

Editar functions.php en el Editor de archivos de temas de WordPress es un poco arriesgado. Si utilizas esta herramienta porque no tienes acceso a cPanel o SFTP, estarás en una situación bastante complicada si tus cambios provocan un error fatal que te impida acceder al panel de administración de WordPress. 

Si quieres editar functions.php en el Editor de archivos del tema, asegúrate de tener acceso directo al servidor y a tus copias de seguridad para poder restaurar tu archivo de copia de seguridad rápidamente.

Puedes encontrar el Editor de archivos del tema de WordPress en Apariencia → Editor de archivos del tema en tu panel de administración de WordPress

Se abrirá la pantalla «Editar temas», donde deberás seleccionar tu tema hijo y, a continuación, elegir el archivo functions.php en la columna «Archivos del tema», situada a la derecha de la pantalla.

Editando el archivo de WordPress functions.php en el editor de archivos del tema del panel wp-admin

Si has seleccionado el tema padre, verás una advertencia en la parte inferior de la pantalla que dice: «Precaución: Este es un archivo de tu tema padre actual». No conviene editar el archivo functions.php de tu tema padre porque tus cambios se sobrescribirán la próxima vez que actualices el tema.

Si ves funciones en tu archivo que no entiendes, WordPress incluye una práctica función de consulta de documentación justo encima del botón Actualizar archivo. Haz clic en el menú desplegable, busca el nombre de la función sobre la que quieras obtener más información y haz clic en Consultar. Se abrirá la documentación de WordPress.org correspondiente a esa función.

Cuando hayas terminado de hacer los cambios, haz clic en Actualizar archivo. Comprueba la parte pública y el panel de administración de tu sitio para asegurarte de que todo sigue funcionando como debe. Si encuentras un error fatal y necesitas restaurar functions.php a partir de tu copia de seguridad, puedes hacerlo en cPanel o mediante SFTP.

Editar functions.php con un editor de texto

La mejor forma de editar functions.php es con el software de edición de código que prefieras. Como estás editando una copia sin conexión en tu ordenador local, no necesitas estar conectado a internet para trabajar en el archivo. Además, tendrás más control sobre cuándo aplicas los cambios en tu sitio activo. 

Puedes editar el código cuando quieras y subir los cambios en un momento en el que tu sitio web normalmente reciba menos tráfico. De ese modo, si surge algún problema, afectará al menor número posible de visitantes.

Paso 1: Abre functions.php en tu editor de texto. Si no estás familiarizado con el uso de un editor de texto, puedes elegir entre varias opciones gratuitas. 

Editores gratuitos de código fuente y texto sin formato:

AplicaciónSistema
Notepad++Windows
Atom.ioWindows, Mac, Linux
SublimeWindows, Mac, Linux
TextEdit
*asegúrate de estar en modo de texto sin formato
Mac (aplicación predeterminada)
NotepadWindows (aplicación predeterminada)

Paso 2: Edita functions.php y guárdalo en tu equipo local. La visualización puede variar según el programa que utilices para editar tu archivo functions.php. Así es como se ve el código PHP en atom.io:

editando functions.php en atom.io

Añade o cambia la información que necesites y, después, guarda el archivo. 

Paso 3: Accede a tu servidor web mediante SFTP o cPanel. Ve a la carpeta de tu tema o tema hijo y busca el archivo functions.php.

Paso 4: Cambia el nombre del archivo functions.php en tu servidor web. Si la versión editada contiene errores, no querrás sobrescribir tu archivo functions.php original. Has hecho una copia de seguridad, claro, pero, en lugar de tener que recuperar el archivo functions.php de ella, tendrás tu archivo original a mano. 

Debes poder restaurar rápidamente el archivo functions.php si algo sale mal, por lo que cambiarle el nombre por algo como ‘functions-original.php’ garantizará que el contenido del archivo original se conserve en tu servidor.

cambiando el nombre del archivo functions.php

Paso 5: Sube functions.php desde tu ordenador al servidor web. Usando SFTP o cPanel, sube tu archivo functions.php al directorio principal de tu tema o tema hijo.

Paso 6: Visita tu sitio web para asegurarte de que funciona correctamente. Una vez que hayas subido tu archivo functions.php, deberás comprobar que todo funciona en tu sitio. Visita la parte pública e inicia sesión en el panel de WordPress para asegurarte de que todo es accesible, se muestra y funciona correctamente. 

Paso 7: Elimina el archivo functions.php antiguo. Una vez que hayas comprobado que tu sitio funciona correctamente, puedes eliminar functions-original.php (o lo que hayas usado como nombre). Si más adelante encuentras algún problema, aún deberías conservar el archivo functions.php de la copia de seguridad que hiciste.

Editar el archivo functions.php directamente en cPanel

Si no tienes un editor de código fuente o no quieres utilizarlo, puedes editar functions.php directamente en cPanel (si tu proveedor de hosting utiliza cPanel). Al igual que cuando editas en el Editor de archivos de temas de WordPress, es algo más arriesgado que trabajar en tu equipo local. Si se interrumpe la conexión a internet mientras editas, podrías perder los cambios. También corres el riesgo de sobrescribir el archivo functions.php original.

Paso 1: Busca functions.php en cPanel. En cPanel, haz clic en Gestor de archivos.

Ve a la carpeta raíz (normalmente public_html o www, pero podría tener otro nombre).

Paso 2: Haz una copia de functions.php. En el menú principal del Administrador de archivos, haz clic en + Carpeta para añadir una carpeta nueva. Te recomendamos hacer una copia de tu archivo functions.php y guardarla aquí como copia de seguridad.

Pon a la nueva carpeta un nombre fácil de identificar, como «funciones de copia de seguridad», para que puedas encontrarla fácilmente más adelante. Haz clic en Crear carpeta nueva.

haciendo una copia de seguridad en cPanel del archivo functions.php

Paso 3: Busca functions.php en la carpeta de tu tema o tema hijo y cópialo en la carpeta de copia de seguridad. En la carpeta de tu tema o tema hijo, desplázate hacia abajo hasta functions.php y haz clic con el botón derecho en el nombre del archivo. Selecciona Copiar.

copiando el archivo functions.php en cPanel

Aparecerá un cuadro de diálogo que te pedirá que introduzcas la ruta donde quieres copiar el archivo. La ruta de la carpeta en la que te encuentras aparecerá rellenada de antemano, así que, si la ruta del archivo de tu carpeta de copia de seguridad difiere de la que ves, introduce la ruta correcta. Haz clic en Copiar archivo(s).

Paso 4: Vuelve a functions.php en el directorio del tema o tema hijo. Ahora que tienes una copia de seguridad, puedes volver al archivo functions.php en el directorio del tema o tema hijo y empezar a editarlo. 

Haz clic con el botón derecho en functions.php, y luego haz clic en Editar.

Paso 5: Edita functions.php. Ahora deberías ver el contenido del archivo functions.php en pantalla. Debería tener un aspecto similar a este: 

ejemplo del archivo functions.php en cPanel

Añade o cambia la información que necesites y, después, guarda el archivo. 

Uso de un plugin para añadir funciones a tu sitio de WordPress

En lugar de modificar directamente el archivo functions.php, puedes usar un plugin como Code Snippets para añadir funciones a tu sitio web. Si necesitas añadir bastantes funciones a tu sitio, puede ser fácil perder la pista de cuáles sigues necesitando y cuáles no. 

Code Snippets proporciona una interfaz gráfica de usuario (GUI) para gestionar tus bloques de código PHP. Puedes añadir descripciones para saber qué debe hacer el código y activar y desactivar bloques de código, como si activaras y desactivaras un plugin.

Como no vas a hacer cambios en functions.php, es un método mucho más seguro para añadir funciones de PHP a tu sitio de WordPress.

Cómo proteger functions.php de las vulnerabilidades de seguridad

El archivo functions.php suele ser un objetivo de los hackers, por lo que mantenerlo a salvo debería ser una prioridad. Sigue estos pasos para ayudar a proteger tu archivo functions.php:

1. Instala un plugin de seguridad

Al utilizar un plugin de seguridad, disfrutarás de una protección avanzada frente a los hackers en varias áreas de tu sitio. 

Jetpack Security es una opción económica que ayuda a mantener tu sitio protegido frente a ataques maliciosos. Incluye análisis de malware y reparaciones con un solo clic, protección contra ataques de fuerza bruta, supervisión del tiempo de inactividad, un registro de actividad para saber si han hackeado tu sitio y cuándo, y protección del acceso mediante autenticación de dos factores (2FA).

mensajes de la página de inicio de Jetpack

Jetpack Security también supervisa tu sitio para detectar cualquier cambio en los archivos del núcleo de WordPress, plugins obsoletos o inseguros y otras vulnerabilidades, para que puedas detectarlos antes de que un hacker los encuentre y se aproveche de ellos. 

Además, proporciona copias de seguridad de WordPress en tiempo real para que puedas restaurar rápidamente una versión limpia si algo sale mal —incluso si no puedes iniciar sesión en tu sitio.

2. En el núcleo de WordPress, impide el acceso al archivo functions.php mediante el archivo .htaccess de tu sitio

Si tu sitio web está alojado en un servidor Apache, puedes editar el archivo .htaccess de tu sitio para proteger uno de los archivos del núcleo de WordPress, functions.php, bloqueando el acceso a toda la carpeta wp-includes.

Paso 1: Descarga .htaccess

Con SFTP o cPanel, ve a la carpeta raíz de tu sitio web. Haz clic con el botón derecho en .htaccess y selecciona Descargar para descargar el archivo en tu ordenador.

Paso 2: Añade código para bloquear el acceso a la carpeta wp-includes

En un editor de código fuente o de texto sin formato, abre el archivo .htaccess y añade el siguiente código:

<IfModule mod_rewrite.c>
RewriteEngine On
RewriteBase /
RewriteRule ^wp-admin/includes/ - [F,L]
RewriteRule !^wp-includes/ - [S=3]
RewriteRule ^wp-includes/[^/]+\.php$ - [F,L]
RewriteRule ^wp-includes/js/tinymce/langs/.+\.php - [F,L]
RewriteRule ^wp-includes/theme-compat/ - [F,L]
</IfModule>

Guarda el archivo. Asegúrate de que el programa editor no añada ninguna extensión al archivo. Si utilizas Notepad++ o Text Edit, podría añadir la extensión de archivo .txt. El archivo debe llamarse simplemente «.htaccess». 

Paso 3: Sube el archivo .htaccess editado de nuevo a la carpeta raíz

Vuelve a subir el archivo .htaccess editado a la carpeta raíz de tu sitio web. Se te preguntará si quieres sobrescribir el archivo existente. Haz clic en Aceptar.

Ahora tu archivo .htaccess debería bloquear el acceso externo a cualquier archivo de tu carpeta wp-includes, incluido functions.php.

3. Deniega el acceso a functions.php usando functions.php

Puedes bloquear el acceso directo a tu archivo functions.php añadiendo el siguiente fragmento de código directamente a functions.php.

if (!empty($_SERVER['SCRIPT_FILENAME']) && 'functions.php' ==
basename($_SERVER['SCRIPT_FILENAME']))
{
die ('Access denied!');
}

4. Oculta functions.php fuera del directorio raíz

Los hackers conocen la ubicación predeterminada de todos los archivos estándar de WordPress. Cambiar la ubicación de los archivos sensibles a una carpeta de acceso restringido fuera del directorio raíz puede mantenerlos fuera del alcance de los hackers. Este proceso es algo más laborioso que limitarse a añadir código a tu archivo .htaccess, pero el esfuerzo adicional merece la pena por la capa de protección extra que proporciona a tu web. 

En tan solo unos pasos, puedes proteger el archivo functions.php fuera de la carpeta raíz.

Paso 1: Descarga tu archivo functions.php actual

Si vas a mover el archivo functions.php de tu tema, lo encontrarás en wp-content → themes → yourtheme. El archivo de tu tema hijo estará en wp-content → themes → yourtheme-child.

Cuando hayas encontrado tu archivo functions.php, descárgalo en tu ordenador mediante SFTP o cPanel.

Paso 2: Crea un directorio nuevo fuera de la carpeta raíz

Sal del directorio raíz y sube al siguiente nivel de carpetas. Deberías ver el nombre de tu carpeta raíz, así como varias carpetas más. En este directorio, haz clic con el botón derecho y selecciona Crear directorio.

creando un directorio en Filezilla

Ponle al directorio un nombre fácil de recordar que te permita identificar dónde está tu archivo functions.php.

Paso 3: Sube functions.php a tu nueva carpeta

Sube el archivo functions.php que descargaste antes a tu nueva carpeta mediante SFTP o cPanel. 

subiendo el archivo functions.php

Comprueba los permisos de tu nueva carpeta y del archivo functions.php y asegúrate de que estén configurados como 600.

configurando los permisos del archivo functions.php

Paso 4: Haz que WordPress apunte al nuevo archivo functions.php

Deberías tener un archivo functions.php en tu nuevo directorio, además del archivo functions.php original que todavía está en la carpeta de tu tema. Para que WordPress encuentre y utilice el archivo correcto, tendrás que eliminar todo el contenido del archivo functions.php de tu tema y añadir el siguiente fragmento de código:

<?php
include('/home3/usr/securefunctions/functions.php');
?>

Nota: La ruta de tu archivo será diferente, ya que utilizarás los nombres de directorio de tu servidor.

En cPanel, puedes abrir el archivo functions.php del directorio raíz y editarlo directamente, o editar la copia que descargaste anteriormente en tu ordenador utilizando un editor de código fuente. En este ejemplo, hemos editado la copia que descargamos anteriormente con Atom.io.

Guarda tu archivo funtions.php y vuelve a subirlo al directorio de tu tema.

devolviendo el archivo de functions.php mediante ftp

Se te preguntará si quieres sobrescribir el archivo. Haz clic en Aceptar.

Ahora, WordPress debería hacer referencia a tu nuevo archivo functions.php en su ubicación segura fuera de la carpeta raíz.

4. Cambia el nombre de tu archivo functions.php

Cambiar el nombre de tu archivo functions.php es otro paso que puedes dar para mantenerlo a salvo de los hackers. Tendrás que alojar este archivo fuera de la carpeta raíz, así que, si has seguido el proceso de Ocultar functions.php fuera del directorio raíz, solo tendrás que seguir unos pasos adicionales.

Paso 1: En tu directorio seguro fuera de la carpeta raíz, cambia el nombre del archivo functions.php

Ve a la carpeta donde está functions.php, alojada fuera del directorio raíz, y cambia el nombre del archivo por uno único, como ‘keep-out.php’ o ‘these-are-not-the-functions-you-are-looking-for.php’. Vale, este último es un poco largo, pero no importa realmente cómo lo llames, siempre que lo incluyas en la ruta del archivo de la copia de functions.php en la carpeta del tema.

Paso 2: Edita el código de functions.php en tu directorio raíz para reflejar el cambio de nombre

Ahora que has cambiado el nombre de tu archivo functions.php por otro, tendrás que asegurarte de que la copia de functions.php que está en el directorio del tema apunte al nombre de archivo correcto. 

Descarga la copia de functions.php de la carpeta raíz a tu ordenador y edítala con tu editor de texto. Cambia el nombre del archivo functions.php por el nuevo nombre de archivo y, después, guarda el archivo.

<?php
include('/home3/usr/secureconfig/keep-out.php');
?>

Paso 3: Sube functions.php de nuevo al directorio del tema

Se te preguntará si quieres sobrescribir el archivo existente. Haz clic en Aceptar.

Ahora WordPress debería apuntar a tu archivo de funciones renombrado. 

Capas de seguridad adicionales para functions.php

Puedes añadir protección adicional a tu sitio web en general, incluido tu archivo functions.php si realizas cambios similares en tu archivo wp-config correspondiente, como cambiarle el nombre, alojarlo fuera del directorio raíz y denegar el acceso público.

Si ves código sospechoso en los archivos functions.php y te preocupa que quizá ya hayan hackeado tu sitio, te interesará informarte sobre cómo detectar y eliminar malware de tu sitio web de WordPress.

¿Qué código puedo añadir a functions.php en WordPress?

Hay muchos fragmentos de código distintos que, en WordPress, puedes añadir al archivo functions.php. Sin embargo, para muchas funciones suele ser mejor utilizar un plugin (o crear tu propio plugin). Si el código que quieres añadir es específico de tu tema, puedes añadir ese código PHP al archivo functions.php de tu tema hijo. 

A continuación encontrarás algunas funciones útiles que puedes insertar en el archivo functions.php de tu tema hijo:

Añadir un nuevo usuario administrador en functions.php

Si has perdido el acceso de administrador al panel de administración de WordPress y no puedes recuperar tu nombre de usuario o contraseña por correo electrónico, puedes crear un nuevo usuario administrador desde tu cuenta de hosting. Puedes hacerlo mediante SFTP o cPanel: descarga el archivo functions.php y añade el siguiente código para crear un nuevo usuario administrador para tu sitio.

function qode_add_new_admin_account() {
$user = 'your-username';
$password = 'your-password';
$email = 'your-email';
if ( ! username_exists( $user ) && ! email_exists( $email ) ) {
$user_id = wp_create_user( $user, $password, $email );
$user = new WP_User( $user_id );
$user->set_role( 'administrator' );
}
}
add_action( 'init', 'qode_add_new_admin_account' );

En el código anterior, sustituye «your-username», «your-password» y «your-email» por tus propias credenciales. Guarda el archivo functions.php y vuelve a subirlo a la carpeta de tu tema. Esto creará un nuevo usuario administrador con el nombre de usuario, la contraseña y la dirección de correo electrónico que hayas asignado en el código. 

Después de subir el archivo, ve a la página de inicio de sesión de tu sitio y utiliza tu nuevo nombre de usuario y contraseña para iniciar sesión. Cuando hayas iniciado sesión correctamente y hayas confirmado que tienes permisos de administrador, debes eliminar de functions.php el código que añadiste para crear tu nueva cuenta de administrador. 

Añadir y eliminar tamaños de imagen en functions.php

Cuando subes una imagen a la biblioteca de medios de WordPress, se generan varias versiones de la imagen. WordPress incluye de forma predeterminada tamaños de miniatura, pequeño, mediano y grande, que se utilizan además de la imagen a tamaño completo. Por lo general, tu tema seleccionará el tamaño de imagen óptimo para cada sección de tu sitio. 

Si estás creando tu propio tema o necesitas modificar un tema hijo para añadir tamaños de imagen personalizados, puedes hacerlo en tu archivo functions.php

Utiliza el código siguiente y cambia los nombres de tus tamaños de imagen personalizados, «custom-small-square» y «custom-landscape», por los nombres que quieras utilizar. Los números que aparecen junto al nombre del tamaño de imagen personalizado representan el tamaño de la imagen en píxeles, así que introduce primero el valor de la anchura y después el de la altura.

function register_custom_image_sizes() {
if ( ! current_theme_supports( 'post-thumbnails' ) ) {
add_theme_support( 'post-thumbnails' );
}
add_image_size( 'custom-small-square', 450, 450, true );
add_image_size( 'custom-landscape', 1000, 600 );
}
add_action( 'after_setup_theme', 'register_custom_image_sizes' );

Ten en cuenta que los tamaños de imagen personalizados adicionales pueden ralentizar tu sitio y afectar a los tiempos de carga. Si tienes algunos tamaños de imagen predeterminados de WordPress que tu tema no utiliza, quizá quieras eliminarlos y desactivarlos para dejar espacio a tus tamaños personalizados. 

Si quieres desactivar los tamaños de imagen predeterminados de WordPress, puedes colocar este fragmento de código en tu archivo functions.php:

add_filter( 'intermediate_image_sizes_advanced', 'prefix_remove_default_images' );
// Esto eliminará los tamaños de imagen predeterminados pequeño, mediano y grande. 
function prefix_remove_default_images( $sizes ) {
 unset( $sizes['small']); // 150px
 unset( $sizes['medium']); // 300px
 unset( $sizes['large']); // 1024px


 return $sizes;
}

Si solo necesitas desactivar uno o dos tamaños, puedes añadir únicamente esos tamaños al código anterior y eliminar el código que no necesites. 

Utiliza functions.php para permitir tipos de archivo adicionales en las subidas

WordPress solo permite subir unos pocos tipos de archivo distintos en el panel de administración de WordPress. Es una medida de seguridad razonable, pero puede que te encuentres con una situación en la que necesites subir un tipo de archivo que no se permite de forma nativa. 

Para añadir más tipos de archivo permitidos a WordPress, añade el siguiente código al archivo functions.php de tu tema hijo:

function additional_upload_file_types($mime_types){
$mime_types['stl''] = 'application/sla';
$mime_types['stl'] = 'application/vnd.ms-pki.stl';
$mime_types['stl'] = 'application/x-navistyle';
return $mime_types;
}
add_filter('upload_mimes', 'additional_upload_file_types', 1, 1);

En el ejemplo anterior hemos utilizado el tipo de archivo stl, que es un tipo de archivo CAD. Es un tipo de archivo poco habitual para subir a un sitio web fuera de ciertos sectores especializados, pero si tu sitio es para un diseñador industrial, una empresa de ingeniería o incluso un laboratorio de ortodoncia, puede que te resulte muy útil poder subir archivos STL. 

Puedes sustituir la variable $mime_type por la extensión de archivo que mejor se adapte a las necesidades de tu sitio web. Después también tendrás que incluir el tipo y el subtipo de medio (por ejemplo, «application/sla» o «image/octet-stream»). Aquí tienes una lista completa de tipos MIME a la que puedes recurrir. 

Preguntas frecuentes sobre cómo editar el archivo functions.php en WordPress

Hemos explicado qué es el archivo functions.php, cómo encontrar functions.php, cómo acceder a él, cómo editarlo y algunos fragmentos de código que puedes añadir a tu archivo functions.php. Terminaremos con algunas respuestas útiles a preguntas frecuentes. 

¿Necesito utilizar un tema hijo para editar functions.php?

¿La respuesta breve? Sí.

Si desarrollas temas, sin duda querrás añadir las funciones específicas de tu tema directamente al archivo functions.php. Sin embargo, si modificas un tema de otro desarrollador que recibe actualizaciones periódicas, debes utilizar functions.php dentro de un tema hijo. 

La mayoría de los desarrolladores de temas actualizan periódicamente sus temas por motivos de seguridad y rendimiento, o para añadir nuevas funciones. Si modificas el archivo functions.php del tema padre, todos esos cambios se sobrescribirán cuando actualices a la versión más reciente de tu tema. Todo tu trabajo y tus personalizaciones —¡zas!— desaparecerán. 

Los temas hijos no se modifican cuando se actualiza el tema padre, así que, si haces cambios en el archivo functions.php de tu tema hijo, se conservarán cada vez que actualices el tema padre.

¿En qué se diferencia el archivo functions.php de un tema hijo del archivo del tema padre?

El archivo functions.php de un tema hijo se carga además del archivo functions.php del tema padre, no en su lugar. Este comportamiento es único. En la mayoría de los demás archivos del tema, como header.php o page.php, el archivo del tema hijo sustituye por completo al archivo del tema padre.

Con functions.php se cargan ambos archivos, primero el del tema hijo. Esto significa que puedes añadir nuevas funciones al archivo functions.php de tu tema hijo para ampliar la funcionalidad del tema padre sin tener que copiar todo el código original del tema padre.

¿Qué ocurre si cometo un error de PHP en el archivo functions.php?

Cometer un error de PHP en el archivo functions.php puede hacer que todo tu sitio de WordPress quede inaccesible. Esto suele conocerse como la «pantalla blanca de la muerte», en la que tu sitio web muestra una página completamente en blanco. Un solo punto y coma que falte o una errata en el código puede desencadenar un error irrecuperable.

Por eso nunca debes editar directamente tu archivo functions.php en un sitio web activo utilizando el editor de temas de WordPress. En su lugar, prueba siempre primero el código en un sitio de pruebas. Si cometes un error, tendrás que acceder a los archivos de tu sitio mediante un cliente FTP para corregir el código y restaurar el sitio.

¿Cómo puedo reparar mi sitio si un error en functions.php me ha dejado sin acceso?

Si, por desgracia, editaste el archivo functions.php y provocaste un error crítico en tu sitio que te impidió acceder al panel de administración de WordPress, no te preocupes: ¡no está todo perdido!

Hay varias cosas que puedes hacer para recuperar el acceso a tu sitio. Puedes editar functions.php mediante SFTP y un editor de texto, o directamente en cPanel si sabes qué parte del código causó el problema. También puedes restaurar functions.php a partir de una copia de seguridad o descargar una copia nueva de functions.php del desarrollador de tu tema.

Sé qué código estropeé. Solo necesito acceder a functions.php para corregirlo.

Consulta más arriba la sección Cómo editar functions.php para ver las instrucciones sobre cómo acceder al archivo functions.php de tu tema o tema hijo y editarlo.

No tengo ni idea de qué le hice a mi archivo functions.php, pero tengo una copia de seguridad.

Si tienes una copia de seguridad a mano, puedes acceder a tus archivos desde el servidor de tu proveedor de hosting o desde tu servidor remoto, según dónde hayas decidido almacenarlos, y utilizarlos para sustituir tu archivo functions.php dañado mediante SFTP o cPanel.

Si te resulta más cómodo restaurar la copia de seguridad completa de tu sitio en lugar de intentar restaurar únicamente el archivo functions.php, nuestro artículo «Cómo restaurar WordPress desde una copia de seguridad» explica detalladamente los diferentes métodos que puedes utilizar para restaurar tu sitio de WordPress.

No tengo ni idea de qué código causó el problema y no hice ninguna copia de seguridad.

Si no tienes una copia de seguridad, puedes descargar una copia nueva del tema que utilizas desde el desarrollador del tema, extraer el archivo functions.php y sobrescribir el archivo functions.php dañado en tu servidor mediante SFTP o cPanel.

Nota: Si utilizas un tema que no se ha actualizado desde hace tiempo, es posible que tengas problemas al sobrescribir functions.php con una versión procedente de una actualización mucho más reciente. Si tienes problemas, quizá sea mejor que simplemente actualices manualmente todo el tema a la versión más reciente. También puedes ponerte en contacto con el desarrollador del tema para obtener los archivos correspondientes a tu versión actual y utilizar esa versión de functions.php.

¿Puedo añadir JavaScript a mi archivo functions.php?

Sí, puedes añadir a tu archivo functions.php código que incorporará tu JavaScript personalizado a páginas o entradas específicas, o a todas las páginas y entradas de tu sitio. Este artículo sobre cómo añadir JavaScript a WordPress explica todas las formas de añadir JS a tu archivo functions.php.

¿Añadir demasiado código a functions.php puede ralentizar mi sitio web?

Sí, añadir una gran cantidad de código mal escrito o ineficiente a tu archivo functions.php puede ralentizar tu sitio web. Cada fragmento de código que añades se ejecuta cada vez que se carga una página, por lo que las funciones complejas o el código que realiza numerosas consultas a la base de datos aumentarán el tiempo de carga de tu sitio.

Aunque es poco probable que unas pocas funciones sencillas y bien optimizadas tengan un impacto apreciable, es importante prestar atención al rendimiento. Para funciones más grandes o complejas, un plugin desarrollado por profesionales suele ser una opción mejor, ya que se ha creado teniendo en cuenta el rendimiento.

¿Cuál es la diferencia entre functions.php y un plugin de fragmentos de código?

Un plugin de fragmentos de código ofrece una forma más segura y organizada de añadir pequeños fragmentos de código PHP a tu sitio sin editar directamente functions.php. La principal diferencia está en la gestión.

Con un plugin de fragmentos, cada función se guarda como un «fragmento» independiente que puedes activar o desactivar individualmente, igual que un plugin. Esto facilita la gestión del código y la resolución de problemas. Si un fragmento causa un error, puedes desactivarlo fácilmente. El código añadido a functions.php está todo en un único archivo, lo que dificulta identificar qué función está causando el problema. Además, los plugins de fragmentos funcionan independientemente del tema.

¿Es alguna vez seguro utilizar el editor de temas de WordPress para editar functions.php?

Se recomienda encarecidamente evitar el uso del editor de temas de WordPress para editar functions.php en un sitio web activo. La principal razón es que el editor no ofrece ninguna protección. Si cometes un error de sintaxis y haces clic en «Actualizar archivo», puedes provocar al instante un error fatal que deje fuera de servicio todo tu sitio. Entonces perderías el acceso al panel de administración y no podrías corregir el error desde el editor.

El método más seguro consiste en descargar el archivo mediante un cliente FTP, editarlo en tu ordenador con un editor de código adecuado y volver a subirlo al servidor.

¿Necesito utilizar functions.php con los temas de bloques modernos?

Con los temas de bloques modernos, la necesidad de utilizar functions.php se ha reducido, pero no ha desaparecido. Muchos aspectos de personalización del diseño y la maquetación, como la definición de paletas de colores, fuentes y espaciado, se gestionan ahora mediante el archivo theme.json. Esto ofrece una forma más estructurada y estandarizada de controlar la configuración del tema.

Sin embargo, functions.php sigue siendo necesario para añadir funcionalidades del backend. Esto incluye registrar tipos de contenido personalizados, crear taxonomías personalizadas o añadir nueva lógica basada en PHP que theme.json no puede gestionar. Por tanto, aunque su función ha cambiado, sigue siendo un archivo importante.

Explora las ventajas de Jetpack

Descubre cómo Jetpack puede ayudarte a proteger, acelerar y hacer crecer tu sitio de WordPress.

Explorar planes

¿Tienes alguna pregunta?

La sección de comentarios está cerrada para este artículo, pero seguimos aquí para ayudarte. ¡Visita el foro de soporte y estaremos encantados de responder a tus preguntas!

Ver foro de soporte