Du bist der Lenzさん
ありがとうございます。
すみません。慣れていなくてこのフォーラムに投稿するときにコードが改行して表示されてしまったようです。
実際にfanctions.phpに追加した時は改行していませんでした。
require_once( get_stylesheet_directory() . '/inc/widgets/widgets.php' );
よろしくお願いいたします。
やはり改行してコードが表示されてしまいますね。不慣れですみません。
こんにちは
エラーになるのは、widgets.php の読み込みに失敗(パーミッションかな?)しているか、PHP コードでエラーが発生しているからだと思います。
いづれにしても何かしらのエラーメッセージが出力されると思いますので、下記ページを参考にエラーメッセージを確認してみてはどうでしょう。
https://wpdocs.osdn.jp/WordPressでのデバッグ
あと、念のため確認ですが、子テーマのテンプレートは子テーマが優先されますが、functions.php は子テーマと親テーマの両方が読み込まれるので、そのように widgets.php を作成されているということで OK でしょうか?
こんにちは
親のfunctions.phpではオリジナルのwidgets.phpが読み込まれ、子テーマのfunctions.phpが読み込まれていると思います。
そうすると、両方のwidgets.phpにcolormag_widgets_init
という関数や、colormag_featured_posts_slider_widget
など多数のクラス名が重複してしまってエラーになっている気がします。
エラーの原因はサーバーのエラーログを参照可能であれば判明すると思います。
上記が原因と仮定すると、対応は以下のような感じかと思います。
1.カスタマイズしたwidgets.phpではcolormag_widgets_initという関数名を任意のユニークな名前に変更する。
2.カスタマイズしたwidgets.phpで、colormag_featured_posts_slider_widget
などのクラス名を任意のユニークな名前に変更する。
カスタマイズしていないクラスについては削除する。
3.1で変更した関数末尾のregister_widget
のうち、カスタマイズしていないクラスのものを削除する。
4.残した行をコピペし、上側のregister_widget
関数をunregister widget
関数に変更する。
もう一方の引数のクラス名を2で変更したクラス名に変更する。
要点は名前の衝突を避けることです。
実際にやっていないのでこのままの変更でうまく行くかどうかはわからないことをご了承ください。
ishitakaさん
ありがとうございます。
おそらく、widgets.phpが重複していたことが原因のエラーなのだと思います。functions.phpにルートを指定したら子テーマの方のwidgets.phpだけを読みに行くのだと思っていました。
ありがとうございます。
munyaguさん
ありがとうございます。
とても詳しく解説していただいて感謝です。
教えていただいた方法で試してみます。
colormag_widgets_initの名前を変更したら、どこかから呼び出さないといけないですよね・・・抜けています。
親テーマでcolormag_widgets_initを呼び出している箇所を探し、子テーマで同様に新しい名前の関数を呼び出せばいいと思います。
ご参考まで。
munyaguさん
ありがとうございます!できました。
教えていただいたとおりに試してみたら無事にカスタマイズできました。
呼び出しの件もfunctions.phpにrequire_once
でurlを指定したら読み込めました。
ありがとうございます。思い通りのカスタマイズができて感激です。
返信いただいた皆様もありがとうございました。