web-dev-qa-db-de.com

functions.php wird zweimal eingefügt und erstellt PHP schwerwiegende Fehler

Ich habe ein benutzerdefiniertes PHP -Skript (das Wordpress über wp-load.php importiert), das ich in der Vergangenheit auf vielen Websites erfolgreich verwendet habe, aber es verhält sich auf einer bestimmten Website scheinbar nach ein paar Wordpress-Vorgängen nicht mehr richtig Updates (aktuell Version 4.7.1).

Die Situation ist folgende:

  • Das Script PHP, das wp-load.php benötigt, wird über Javascript aufgerufen, um Formulardaten zu verarbeiten.
  • Die Formularverarbeitung hat bis vor wenigen Wochen einwandfrei funktioniert. Jetzt wird ein interner Serverfehler von 500 ausgegeben.
  • Die PHP -Protokolle zeigen Fehler wie diesen an:

    Schwerwiegender PHP-Fehler: my_wp_nav_menu_args () kann nicht erneut deklariert werden (zuvor in /path/to/site/wp-content/themes/uc/functions.php:15 deklariert) in/path/to/site/wp-content/themes/uc/functions.php in Zeile 18

  • Der Fehler scheint darauf hinzudeuten, dass functions.php zweimal aufgerufen wird. Um das zu testen, habe ich alle Funktionen in functions.php auskommentiert und, voila, mein PHP Skript hat einwandfrei funktioniert.

  • Trotzdem funktioniert der Rest der Site einwandfrei ... obwohl sie verdammt langsam geladen wird und ich sie auf meinem lokalen Computer ausführe. Hmmm.

  • Zu Ihrer Information, es gibt wirklich nichts Besonderes oder Außergewöhnliches am Rest der Site. Ich benutze ACF für viele Dinge, hatte aber noch nie Probleme damit.

Könnte es wahr sein, dass functions.php irgendwie zweimal aufgerufen wird? Wenn das so ist, wie? Hat jemand anderes ein ähnliches Problem mit kürzlich durchgeführten WP Core-Updates gehabt? Werden Mary Beth und Victor jemals wahre Liebe finden?

Finden Sie all dies und mehr in der nächsten Folge von "Burning Money the Wordpress Way" heraus!

Jede Hilfe wäre SOOO dankbar.

1
Mark Kanning

Ah, meine Güte: Die alte Routine, alle Plugins zuerst zu überprüfen, hätte mir einige Zeit gespart.

Anscheinend war ein ACF-Plugin eines Drittanbieters, https://wordpress.org/plugins/acf-google-font-selector-field/ , die Ursache des Problems. Das von mir erwähnte langsame Laden der Seite wurde ebenfalls behoben.

Das ist sehr schade. Ich brauche dieses blöde Plugin.

2
Mark Kanning

1) Ich denke, das Problem sollte gelöst werden, wenn Sie in Ihrem benutzerdefinierten PHP-Skript nach der Ausführung Ihrer gewünschten Aktionen exit; ausführen.

2) Sie können auch so etwas am Anfang Ihrer functions.php benutzen:

if (in_array(__FILE__, get_included_files())) return;
0
T.Todua