Avaluació inicial sense contrasenyes Pressupost abans d’intervenir Un especialista responsable de principi a fi

Errors & Diagnosis

Error fatal “Cannot redeclare function” en WordPress: com resoldre-ho

Rastreja declaracions duplicades i càrregues repetides a WordPress. Compara la correcció, verifica la funció original i prepara una avaluació de recuperació.

“Cannot redeclare function” indica que PHP ha trobat una altra declaració d’un nom de funció ja definit. L’error pot aturar la petició i deixar WordPress amb la pantalla d’error crític. Comença pel missatge complet i les dues ubicacions de codi, en lloc d’afegir una comprovació a totes les funcions.

Si el problema va començar després d’una actualització, el nostre servei de recuperació de WordPress després d’actualitzar un plugin revisa l’error, la funció afectada i les opcions de recuperació. Que el web torni a ser visible és només una part de la reparació.

Què cal conservar abans de modificar codi

Guarda el missatge, la data i l’hora, l’URL o acció afectada i les versions canviades just abans de l’error. Un missatge com Cannot redeclare example_helper() pot identificar la segona declaració i un fitxer i una línia declarats anteriorment. És un nom de funció il·lustratiu, no una instrucció per executar al teu web.

Un fitxer esmentat en l’error és una pista, no una prova que tot el plugin sigui defectuós. Revisa les dues declaracions i com s’han carregat. Si només apareix una ubicació, comprova el recorregut de càrrega i el primer error fatal relacionat.

On cal buscar el duplicat

  • El mateix snippet al tema i en un plugin de snippets.
  • Una funció auxiliar aportada per dos components diferents.
  • Un fitxer inclòs dues vegades durant una petició.
  • Un tema fill que declara la mateixa funció que el pare.
  • Una declaració de funció dins d’una rutina que es crida més d’una vegada.

Utilitza la guia per aïllar conflictes entre plugins de WordPress si l’error depèn d’una combinació de components. “El web carrega quan desactivo aquest plugin” no explica per si sol tota la causa.

Consultar registres sense mostrar errors als visitants

Demana al hosting el registre d’errors PHP pertinent si ja existeix. Per depurar WordPress, segueix la documentació oficial de registre d’errors: registrar i mostrar errors són ajustos diferents, i el registre pot contenir informació que ha de continuar sent privada. No enganxis un registre complet sense revisar en una sol·licitud pública.

En una còpia de staging, reprodueix la ruta que falla i anota quina declaració es troba primer. Si no hi ha entorn de proves, acorda una intervenció limitada i una via de recuperació abans de canviar un component utilitzat per pagaments, formularis o accés a comptes.

Triar la correcció segons la causa

Snippet propi duplicat: conserva una sola còpia mantinguda i retira la segona de la ubicació identificada després de preservar-la. Comprova registres i crides per conservar el comportament necessari.

El mateix fitxer carregat dues vegades: revisa el codi que l’inclou. La construcció require_once de PHP evita tornar a incloure un fitxer ja carregat. No resol dos fitxers diferents que declaren la mateixa funció auxiliar.

Dos components diferents: compara versions compatibles i demana una correcció a l’autor. En codi propi, un prefix o espai de noms adequat pot separar responsabilitats; canviar el nom d’una funció també exigeix actualitzar-ne les crides. No canviïs un nom dins de codi de tercers sense valorar actualitzacions i dependències.

Per què function_exists no és una reparació universal

Una comprovació condicional amb function_exists() pot encaixar quan una funció està dissenyada perquè l’aporti un altre component. També pot silenciar una col·lisió mentre continua activa la implementació equivocada. Compara entrades, sortides i crides abans d’adoptar aquesta solució.

La referència de funcions de PHP explica les regles de declaració. Una petició reparada ha de produir el resultat que espera l’aplicació; evitar l’error fatal no és suficient.

Verificar la funció original i la pròxima actualització

Prova l’URL o acció que fallava, l’accés a l’administrador i la funció que cridava el codi. Inclou el formulari, reserva o checkout corresponent amb una prova controlada si pot crear una transacció. Confirma que el mateix error no reapareix en registres nous.

Documenta la ubicació modificada, la implementació conservada, la versió provada i la via de retorn. Si calia desactivar temporalment un plugin, deixa clar quina funció continua indisponible i com es recuperarà. Una reversió de fitxers també ha de tenir en compte els canvis de dades de l’actualització.

Quan cal sol·licitar una avaluació de recuperació

Demana ajuda si el web no està disponible, hi ha conflicte entre dos components de pagament, l’error prové de codi mantingut per tercers o la recuperació pot afectar comandes o enviaments actuals. Prepara versions, error revisat, ruta afectada i còpia disponible.

Sol·licita una avaluació de l’actualització o del conflicte, o revisa com es delimita i verifica la recuperació de WordPress. L’avaluació determina la reparació; aquesta guia no garanteix una causa o termini concret.

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.

WP RepairModel de diagnòstic
1Petició2PHP / servidor3WordPress4Component
Segueix la cadena fins a trobar el primer punt que deixa de comportar-se com hauria de fer-ho.
01

Anota nom de funció i ambdues rutes/ línies.

02

Determina si està duplicada, inclosa per dos plugins o carregada dues vegades.

03

Retira la còpia no desitjada o aplica namespace/ prefix al codi propi.

04

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.

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.

ABANS D’ENVIAR LA SOL·LICITUD

Preguntes freqüents.

Demaneu contrasenyes al formulari?+

No. El formulari públic no demana mai accessos. Les dades segures es demanen només després d’aprovar l’abast i el pressupost.

Qui revisa la incidència?+

La sol·licitud arriba a Jordi Ensenyat, fundador de Code Barcelona i especialista en WordPress amb més de 15 anys d’experiència.

Es canvia res abans del pressupost?+

No. Primer es revisen els símptomes visibles i es defineix l’abast. La intervenció comença després de l’aprovació i amb una via de recuperació preparada.

Treballeu amb webs en anglès i fora d’Espanya?+

Sí. WP Repair atén incidències de WordPress i WooCommerce en català, castellà i anglès mitjançant un servei remot.

Avaluar la meva incidència↗