Evaluación inicial sin contraseñas Presupuesto antes de intervenir Especialista responsable de principio a fin

Errores y diagnóstico

Error fatal «Cannot redeclare function» en WordPress: cómo resolverlo

Este error fatal significa que el mismo nombre de función se definió dos veces. Suele ser un snippet duplicado o dos plugins en conflicto. Cómo rastrearlo.

Respuesta breve: “Cannot redeclare function …” es un error fatal de PHP que significa que el mismo nombre de función se definió dos veces. PHP se niega a ejecutar, así que la web (y a menudo el administrador) cae. El registro señala directamente ambas ubicaciones.

Lee las dos ubicaciones

Activa WP_DEBUG_LOG y abre /wp-content/debug.log. El error nombra la función y el archivo/línea donde ocurrió la segunda declaración, y normalmente referencia la primera. Esas dos rutas son tu respuesta: solo tienes que eliminar o renombrar una.

Causas habituales

  • Un snippet pegado dos veces: en functions.php y también en un plugin de snippets.
  • Copiar una función de un tutorial que ya existe en tu tema.
  • Dos plugins que incluyen un ayudante con el mismo nombre genérico (por ejemplo una función de utilidad común sin prefijo).
  • Un tema hijo redeclarando una función del padre sin una guarda function_exists().

Corrígelo por SFTP

  1. Abre el archivo nombrado en la línea de la segunda declaración y elimina el duplicado, o envuélvelo en if (! function_exists('nombre')) { ... }.
  2. Si chocan dos plugins, desactiva uno renombrando su carpeta en /wp-content/plugins y decide si necesitas ambos.
  3. Si un snippet se pegó dos veces, borra la copia duplicada.

Verifica

Recarga la web y el administrador, y confirma que la función que usaba esa función sigue operativa. Si el choque era entre dos plugins, comprueba si el que conservaste cubre lo que aportaba el otro, para no quedarte sin una función tras eliminar el conflicto.

CRITERIO DE INCIDENTE WP REPAIR

Cómo acotar el fallo sin adivinar

Cannot redeclare identifica dos definiciones con el mismo nombre. Las rutas del log muestran dónde se cargó cada copia, más seguro que añadir una guarda sin entender el duplicado.

WP RepairModelo de diagnóstico
1Petición2PHP / servidor3WordPress4Componente
Sigue la cadena hasta encontrar el primer punto que deja de comportarse como debería.
01

Anota nombre de función y ambas rutas/líneas.

02

Determina si está duplicada, incluida por dos plugins o cargada dos veces.

03

Retira la copia no deseada o aplica namespace/prefijo al código propio.

04

Usa function_exists solo si se pretende realmente un override opcional.

Qué debe quedar verificado

  • Solo carga una definición prevista.
  • La función dependiente opera con el orden final.
  • Caché, opcode cache y reinicio no hacen volver el fatal.

SOBRE ESTE SÍNTOMA

Preguntas frecuentes de esta guía.

¿Puedo corregir un error de "no se puede redeclarar la función" solo limpiando mi caché?+

No. Este es un error fatal PHP que ocurre antes de que WordPress renderice cualquier cosa, por lo que el caché no juega ninguna parte en él. La única solución es editar el archivo que contiene la definición de función duplicada, sobre SFTP o un gestor de archivos.

¿Por qué el registro de errores sólo muestra un archivo, cuando dos archivos en realidad chocan?+

La línea de registro apunta en la segunda declaración, la que PHP estaba procesando cuando golpeó el nombre duplicado, y generalmente hace referencia a la primera ocurrencia en el mismo mensaje. Lea el texto de error completo en lugar de sólo la ruta del archivo al inicio de la misma.

¿Es seguro eliminar una de las dos funciones?+

Sólo si sabes qué copia se utiliza realmente y confirmas que la otra es un verdadero duplicado, no una versión ligeramente diferente. Si las dos definiciones difieren, eliminar la incorrecta puede cambiar silenciosamente el comportamiento en lugar de simplemente eliminar redundancia.

¿Envolver una función en function_exists() siempre resolverá esto permanentemente?+

Detiene el error fatal, pero sólo si las dos versiones de la función son funcionalmente intercambiables. Envolver un ayudante de plugin en un guardia mientras confía en una versión diferente de theme del mismo nombre puede enmascarar una incompatibilidad real en lugar de resolverlo.

ANTES DE ENVIAR LA SOLICITUD

Preguntas frecuentes.

¿Pedís contraseñas en el formulario?+

No. El formulario público nunca solicita accesos. Los datos seguros se piden únicamente después de aprobar el alcance y el presupuesto.

¿Quién revisa la incidencia?+

La solicitud llega a Jordi Ensenyat, fundador de Code Barcelona y especialista WordPress con más de 15 años de experiencia.

¿Se cambia algo antes del presupuesto?+

No. Primero se revisan los síntomas visibles y se define el alcance. La intervención empieza tras la aprobación y con una vía de vuelta preparada.

¿Trabajáis con webs en inglés y fuera de España?+

Sí. WP Repair atiende incidencias WordPress y WooCommerce en inglés y español, con servicio remoto.

Evaluar mi incidencia