質問: ### 前提・実現したいこと WordPress 初心者です。子テーマを知らずに親テーマを少し触ってしまったので あわてて子テーマを作っています。 style.css はなんとか子テーマのものが反映されているようですが、 phpがうまく反映されません。いろいろ調べてみましたがどうにもならないので お分かりになる方、何がいけないのか教えていただけると助かります。 宜しくお願いいたします。 ### 発生している問題・エラーメッセージ テーマはSydney 親テーマと並列に子テーマを作成 子テーマには、以下を格納 ・style.css ・function.php ・widgets フォルダ その配下に fp-latest-news.php(←親テーマと同じ階層構造) ### 該当のソースコード function.phpの中身は以下 ーーーーーーーーーーーーーーーーーーーーーーーー ーーーーーーーーーーーーーーーーーーーーーーーーー fp-latest-news.php は、親のファイルをそのままコピー ### 試したこと 親テーマの fp-latest-news.php を触るとサイトに反映されますが、 子テーマの fp-latest-news.php の同じ個所を触っても反映されません。 (つまり、子テーマのphpファイルが反映されない)
回答: ファイルの階層は375さんが書かれているままで、子テーマのfunctions.phpに親テーマのfunctions.phpから以下をコードを持ってきて一部書き換えてください。 ``` function sydney_widgets_initx() { //関数名を変更 register_sidebar( array( 'name' => __( 'Sidebar', 'sydney' ), 'id' => 'sidebar-1', 'description' => '', 'before_widget' => '', 'after_widget' => '', 'before_title' => '', 'after_title' => '', ) ); //Footer widget areas $widget_areas = get_theme_mod('footer_widget_areas', '3'); for ($i=1; $i<=$widget_areas; $i++) { register_sidebar( array( 'name' => __( 'Footer ', 'sydney' ) . $i, 'id' => 'footer-' . $i, 'description' => '', 'before_widget' => '', 'after_widget' => '', 'before_title' => '', 'after_title' => '', ) ); } //Register the front page widgets if ( defined( 'SITEORIGIN_PANELS_VERSION' ) ) { register_widget( 'Sydney_Latest_Newsx' ); //クラス名を変更 } } add_action( 'widgets_init', 'sydney_widgets_initx' ); if ( defined( 'SITEORIGIN_PANELS_VERSION' ) ) { require get_stylesheet_directory() . "/widgets/fp-latest-news.php"; //表示したいファイル } ``` 変更したい子テーマのfp-latest-news.phpのファイルのクラス名をfunctions.phpで書き換えたクラス名に変更 ``` class Sydney_Latest_Newsx extends WP_Widget { //クラス名を変更 ``` 参考: 親テーマの上書きではなく、新たに同じ関数を付け加える形ですが......。 参考まで。