web-dev-qa-db-ja.com

含める/要求する正しい方法 PHP WordPressのファイル

私は新しいWordPressの開発者で、最近[PHPファイルのinclude_oncerequire_onceに問題が(複数のサイトで)発生しています。 (get_theme_directory_uri() . 'subdir/file')をインクルードすると指定されたファイルがインクルードされます(または必須となり、致命的なエラーが発生します)が、 'file'内でWordPress関数が呼び出されると、次のようになります。

' /full/path/to/file内の未定義関数 add_action()への呼び出し'。

私が見つけた明白な解決策は以下のとおりです。

include(dirname(__FILE__) . "/subdir/filename");

これは正しいですか、それともどこかにファイルを含めるための 'WordPressの方法'を見逃していませんか?

3
caffeine

/をチェックすると 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';
9
thomascharbit

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/

0
Maidul