Ich bin ein neuer WordPress-Entwickler und hatte kürzlich (auf mehreren Websites) Probleme mit include_once
und require_once
für PHP -Dateien. Wenn ich (get_theme_directory_uri() . 'subdir/file')
einfüge, wird die angegebene Datei eingeschlossen (oder benötigt, was zu schwerwiegenden Fehlern führt), aber wenn WordPress-Funktionen in 'file' aufgerufen werden, erhalte ich etwas Ähnliches wie:
' Aufruf einer undefinierten Funktion
add_action()
in/full/path/to/file'.
Die offensichtliche Lösung, die ich gefunden habe, ist zu tun:
include(dirname(__FILE__) . "/subdir/filename");
Ist das richtig oder habe ich den WordPress-Weg verpasst, um Dateien irgendwo einzuschließen?
Wenn Sie https://codex.wordpress.org/Function_Reference/get_template_directory_uri überprüfen
Sie werden sehen, dass get_template_directory_uri()
eine URL zurückgibt, keinen Serverpfad.
Sie sollten stattdessen die Funktion get_template_directory()
verwenden:
include get_template_directory() . 'subdir/filename.php';
Für ein Plugin können Sie die Funktion plugin_dir_path()
verwenden:
include plugin_dir_path( __FILE__ ) . 'subdir/filename.php';
WordPress 4.7+ führt die Funktionen get_theme_file_path () ein, um Dateien in das WordPress-Theme aufzunehmen.
Schließen Sie so ein:
include get_theme_file_path( '/subdir/filename.php' );
Die Verwendung dieser Funktion hat den Vorteil, dass Sie bei untergeordneten Designs die übergeordnete Designdatei überschreiben können.
Referenz: https://developer.wordpress.org/reference/functions/get_theme_file_path/