例えば、私が私のテーマのfunctions.phpに何らかのコードを書く(例えばカスタム投稿タイプを追加するか何か)なら、それはうまく機能します。私がそれを新しいファイルに移動して、それから私のテーマのfunctions.phpファイルの中のinclude()
ファイルを動かしても、それはもはや機能しません(しかしerror_log()
を使ったデバッグコードはまだ機能します)。
例えば.
これはfunctions.phpです:
<?php
// ###### functions.php ######
error_log("fu_debug: Including the post type.");
add_action('init', 'fu_create_project_post_type');
function fu_create_project_post_type() {
error_log("fu_debug: create project post type");
register_post_type( 'fu_project',
array(
'labels' => array(
'name' => __( 'Projects' ),
'singular_name' => __( 'Project' )
),
'public' => true,
'has_archive' => true,
'rewrite' => array('slug' => 'projects'),
)
);
}
?>
それはうまくいきます。では、functions.phpをこれに変更すると、
<?php
// ###### functions.php ######
include "newfile.php";
?>
そして、このようにnewfile.phpの中にコードを置きます。
<?php
// ###### newfile.php ######
error_log("fu_debug: Including the post type.");
add_action('init', 'fu_create_project_post_type');
function fu_create_project_post_type() {
error_log("fu_debug: create project post type");
register_post_type( 'fu_project',
array(
'labels' => array(
'name' => __( 'Projects' ),
'singular_name' => __( 'Project' )
),
'public' => true,
'has_archive' => true,
'rewrite' => array('slug' => 'projects'),
)
);
}
?>
コードは機能しなくなりましたが、error_log()メッセージはログに表示されたままです。
エラーメッセージはまだ機能しますが、ワードプレスコードは機能しません。
functions.php
にファイルを含めるときは、get_template_directory()
を使用して正しいファイルパスを参照する必要があります。
include( get_template_directory() . '/newfile.php' );
これは、PARENTテーマに戻ります。require_once( get_template_directory() . '/include/myscript.php' );
CHILDテーマを使うなら(そしてあなたはそうすべきです!)、これを使います:require_once( get_stylesheet_directory() . '/include/myscript.php' );