web-dev-qa-db-de.com

Schwerwiegender Fehler: Aufruf der undefinierten Funktion add_action () - ein unberührtes Problem

Die Frage wurde viele Male auf viele Arten gestellt, wird aber in den meisten Antworten leider nicht gut behandelt. Ich habe das gleiche Problem mit Include-Dateien.

In meinem TwentyFourteen-Kinderthema functions.php habe ich Folgendes verwendet:

require_once get_stylesheet_directory_uri() .'/admin-panel/theme-options.php';

Und ich verwende Ian Stewarts Sample Theme Options . Ich habe es in vielen meiner Projekte verwendet, so wie hier erwähnt, ohne den Fehler zu haben. Aber in letzter Zeit habe ich das Problem in mehreren meiner Projekte. Wenn ich den Code auf functions.php bringe, ist alles in Ordnung. Es tritt jedoch nur auf, wenn ich versuche, eine externe Datei einzuschließen/zu fordern.

Ich habe den Fehler:

Schwerwiegender Fehler: Aufruf der undefinierten Funktion add_action() in C:\xampp\htdocs\project\wp-inhalt\themes\mein-theme\admin-panel\theme-options.php in Zeile 2

In diesem Fall habe ich den Fehler bei der Verwendung eines untergeordneten Themas (von T14). Aber auch in einem meiner Elternthemen stehe ich dem Problem gegenüber. Aber in derselben Umgebung laufen meine anderen Projekte gut mit allen Includes und/oder Anforderungen (wobei mehrere add_action()s definiert sind). Ich habe Probleme mit ALL den add_action() Aufrufen , wie CPT zuweisen, benutzerdefinierte Taxonomie zuweisen usw. Aber ich entwickle erfolgreich zwei weitere Projekte mit externen Dateien aus dem Ordner inc/, denen alle meine CPTs zugewiesen sind, sowie deren Meta-Boxen.

Ich habe versucht, WordPress neu zu installieren, alle meine Plugins zu deaktivieren, habe versucht, untergeordnetes Design zu verwenden, habe nur dasselbe versucht, indem ich TwentyFifteen geändert habe (Standarddesign anwenden), habe versucht, require(), require_once(), include(), include, require_once und require nacheinander mit Fehler. Und ich benutze WP 4.1.1 in allen guten und problematischen Installationen.

Die Mehrzahl der vorherigen Fragen wird mit einer einfachen Zeile beantwortet:

Wie die Meldung besagt, haben Sie die Funktion add_action() definiert, und dennoch versuchen Sie, sie zu verwenden.

Aber,

  • wie kommt es (ist es nicht bereits von WordPress definiert)? und
  • warum unterscheidet sich das Projekt von Projekt zu Projekt in derselben Umgebung (Wie kommt es, dass es jetzt nur in bestimmten Projekten außerhalb des Geltungsbereichs liegt?)
1
Mayeenul Islam

get_stylesheet_directory_uri() gibt eine URL zurück. Die angeforderte Datei wird wie jede andere öffentlich verfügbare Ressource aufgerufen: ohne den Kontext der Anweisung include. Dies entspricht dem direkten Öffnen der Datei PHP in einem Browser. Es gibt keinen WordPress-Kontext und die Funktionen add_action() oder add_filter() sind nicht definiert.

Verwenden Sie get_template_directory() in übergeordneten Designs und get_stylesheet_directory() in untergeordneten Designs.

Deaktivieren Sie allow_url_fopen UND allow_url_include in Ihrer Entwicklungsumgebung, um solche Fehler frühzeitig und mit besseren Fehlermeldungen abzufangen.

3
fuxia