私は新しいWordPressの開発者で、最近[PHPファイルのinclude_once
とrequire_once
に問題が(複数のサイトで)発生しています。 (get_theme_directory_uri() . 'subdir/file')
をインクルードすると指定されたファイルがインクルードされます(または必須となり、致命的なエラーが発生します)が、 'file'内でWordPress関数が呼び出されると、次のようになります。
' /full/path/to/file内の未定義関数
add_action()
への呼び出し'。
私が見つけた明白な解決策は以下のとおりです。
include(dirname(__FILE__) . "/subdir/filename");
これは正しいですか、それともどこかにファイルを含めるための 'WordPressの方法'を見逃していませんか?
/をチェックすると https://codex.wordpress.org/Function_Reference/get_template_directory_uri
get_template_directory_uri()
はサーバーパスではなくURIを返します。
代わりにget_template_directory()
関数を使うべきです:
include get_template_directory() . 'subdir/filename.php';
プラグインにはplugin_dir_path()
関数を使うことができます。
include plugin_dir_path( __FILE__ ) . 'subdir/filename.php';
WordPress 4.7以降では、WordPressテーマにファイルを含めるためのget_theme_file_path()関数が導入されました。
このように含める:
include get_theme_file_path( '/subdir/filename.php' );
この機能を使用する利点は、子テーマにあり、親テーマファイルをオーバーライドできます。
参照: https://developer.wordpress.org/reference/functions/get_theme_file_path/