Resposta breu: “ Cannot redeclare function…” és un error fatal de PHP que significa que el mateix nom de funció es va definir dues vegades. PHP es nega a executar, així que la web (i sovint l’administració) cau. El registre assenyala directament ambdues ubicacions.
Llegeix les dues ubicacions
Activa WP_DEBUG_LOG i obre /wp-content/debug.log.L’error nomena la funció i el fitxer/línia on va passar la segona declaració, i normalment referència la primera. Aquestes dues rutes són la teva resposta: només has d’eliminar o reanomenar una.
Causes habituals
- Un snippet enganxat dues vegades: en
functions.phpi també en un plugin de xippets. - Copia una funció d’un tutorial que ja existeix en el teu tema.
- Dos plugins que inclouen un ajudant amb el mateix nom genèric (per exemple una funció d’utilitat comuna sense prefix).
- Un tema fill redevenint una funció del pare sense una guarda
function_exists().
Corrigelo per SFTP
- Obre el fitxer anomenat en la línia de la segona declaració i elimina el duplicat, o torneu- lo en
if (! Function_exists('nombre')) { ... }. - Si pollancan dos plugins, desactiva un reanomenant la vostra carpeta en
/wp-content/pluginsi decideix si neceswebs tots dos. - Si un snippet es va enganxar dues vegades, esborreu la còpia duplicada.
Verifica
Recarrega la web i l’administració, i confirma que la funció que utilitzava aquesta funció segueix operativa. Si el xoc era entre dos plugins, comprova si el que vas conservar cobreix el que aportava l’altre, per no quedar- te sense una funció després d’eliminar el conflicte.
CRITERI D’INCIDENT WP REPAIR
Com acotar l’error sense endevinar
Cannot redeclareix identifica dues definicions amb el mateix nom. Les rutes del registre mostren on es va carregar cada còpia, més segur que afegir una guarda sense entendre el duplicat.
Anota nom de funció i ambdues rutes/ línies.
Determina si està duplicada, inclosa per dos plugins o carregada dues vegades.
Retira la còpia no desitjada o aplica namespace/ prefix al codi propi.
Usa function_ exists només si es pretén realment un override opcional.
Què ha de quedar verificat
- Només carrega una definició prevista.
- La funció dependent opera amb l’ordre final.
- Vaig caure, opcode memòria cau i reinicio no fan tornar el fatal.
Fonts tècniques oficials
Continua el diagnòstic
Aquesta guia explica el diagnòstic. Si la web està afectada ara mateix, la intervenció ha de preservar una via de recuperació i verificar el recorregut real del negoci.
Veure el servei de reparació urgent →SOBRE ESTE SÍNTOMA
Preguntes freqüents d'aquesta guia.
Puc corregir un error de "no es pot redeclarar la funció" només netejant el meu cau?+
No. Aquest és un error fatal PHP que succeeix abans que WordPress renderitzi qualsevol cosa, de manera que el cau no hi juga cap part. L’única solució és editar el fitxer que conté la definició de funció duplicada, sobre SFTP o un gestor de fitxers.
Per què el registre d’errors només mostra un fitxer, quan dos fitxers en realitat xocen?+
La línia de registre apunta en la segona declaració, la que PHP estava processant quan va colpejar el nom duplicat, i generalment fa referència a la primera ocurrència en el mateix missatge. Llegiu el text d’error complet en comptes de només la ruta del fitxer a l’inici de la mateixa.
És segur eliminar una de les dues funcions?+
Només si saps quina còpia s'usa realment i confirmen que l’altra és un cert duplicat, no una versió lleugerament diferent. Si les dues definicions difereixen, eliminar la incorrecta pot canviar silenciosament el comportament en comptes de simplement eliminar redundància.
Retornar una funció en function_ exists () sempre ho resoldrà permanentment?+
Atura l’error fatal, però només si les dues versions de la funció són funcionalment intercanviables. Retornar un ajudant de plugin en un guàrdia mentre confia en una versió diferent de theme del mateix nom pot emmascarar una incompatibilitat real en lloc de resoldre' l.