私は多くのテーマを開発しましたが、私は子供のテーマを構築すること、そして特に子供のテーマにクラスを実装することを試みることは初めてです。だから私は見つけました...
子テーマにWPカスタマイザクラスをロードすることは可能ですか?私の場合、これが私の子供のテーマでやっていることです:
functions.php
// Setup the Child Theme URL
define('child_template_directory', dirname( get_bloginfo('stylesheet_url')) );
// Get the files in the inc folder
$files_to_require = array( 'theme-customizer', );
foreach( $files_to_require as $file ) {
locate_template ( "inc/{$file}.php", true, true );
}
inc/theme-customizer.php
if ( ! function_exists( 'my_customizer_frontend' ) && ! class_exists( 'My_Customizer_Frontend' ) ) {
function my_customizer_frontend() {
load_template( child_template_directory . '/inc/customizer/class-my-customize-frontend.php' );
new My_Customizer_Frontend(); //This is line 34
}
add_action( 'init', 'my_customizer_frontend' );
}
inc /カスタマイザ/ class-my-customizer-frontend.php
class My_Customizer_Frontend {
/* Do some stuff */
}
上記のコード例を使用すると、次のエラーを乗り越えることができません。
致命的なエラー:34行目の/var/www/html/mydomain.com/wp-content/themes/child-theme/inc/theme-customizer.phpにクラス 'My_Customizer_Frontend'が見つかりません
私は丸一日これを克服しようとしていて、そして今私の車輪を回転させているだけです。
私はすべてのコーデックスを見てきましたが、これはどこに書かれたものも対象外です。
何かアドバイスは大歓迎です。
宜しくお願いします、
私はエラーメッセージが十分に明白であると思います:クラスは見つかりませんでした。最初にすべきことは、クラスが定義されているファイルをロードするために使用しているパスを確認することです。
これを実行してchild_template_directory
定数の値を確認すると、末尾にスラッシュが付いていないことがわかります。
load_template( child_template_directory . 'inc/customizer/class-my-customize-frontend.php' );
する必要があります:
load_template( child_template_directory . '/inc/customizer/class-my-customize-frontend.php' );
とにかく、子テーマのdirectoyパスを取得するより良い方法があります。 get_stylesheet_directory()
function 。
私はします:
load_template( get_stylesheet_directory() . '/inc/customizer/class-my-customize-frontend.php' );
または、少なくとも次のように定数を定義します。
define('child_template_directory', get_stylesheet_directory() );
PD:あなたの問題それはWPカスタマイザ致命的エラーではありません。