サポート » テーマ » 子テーマのウィジェット編集について

  • 解決済 layperson

    (@layperson)


    無料テーマcolormagを使用しています。
    子テーマを作ってカスタマイズしているのですが、ウィジェットのカスタマイズがうまくいきません。

    colormagのオリジナルウィジェットである『TG: Featured Posts (Style 1)』で呼び出す最新記事(または指定カテゴリー記事)の抜粋文の下に「続きを読む」ボタンを追加したいので、親テーマの/inc/widgets/widgets.phpをダウンロードして編集し、子テーマに同じディレクトリを作成しアップしたのですが反映されません。

    それで、いろいろ調べて、子テーマのfanctions.phpにrequire_once( get_stylesheet_directory() . '/inc/widgets/widgets.php' );と追加したところ、HTTP ERROR 500となりました。

    colormagテーマのwidgets.phpを子テーマを使ってカスタマイズする方法をご教示お願いいたします。

9件の返信を表示中 - 1 - 9件目 (全9件中)
  • CG

    (@du-bist-der-lenz)

    改行してて大丈夫なのかな

    トピック投稿者 layperson

    (@layperson)

    Du bist der Lenzさん
    ありがとうございます。

    すみません。慣れていなくてこのフォーラムに投稿するときにコードが改行して表示されてしまったようです。
    実際にfanctions.phpに追加した時は改行していませんでした。

    require_once( get_stylesheet_directory() . '/inc/widgets/widgets.php' );

    よろしくお願いいたします。

    トピック投稿者 layperson

    (@layperson)

    やはり改行してコードが表示されてしまいますね。不慣れですみません。

    ishitaka

    (@ishitaka)

    こんにちは

    エラーになるのは、widgets.php の読み込みに失敗(パーミッションかな?)しているか、PHP コードでエラーが発生しているからだと思います。
    いづれにしても何かしらのエラーメッセージが出力されると思いますので、下記ページを参考にエラーメッセージを確認してみてはどうでしょう。
    https://wpdocs.osdn.jp/WordPressでのデバッグ

    あと、念のため確認ですが、子テーマのテンプレートは子テーマが優先されますが、functions.php は子テーマと親テーマの両方が読み込まれるので、そのように widgets.php を作成されているということで OK でしょうか?

    munyagu

    (@munyagu)

    こんにちは

    親の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で変更したクラス名に変更する。

    要点は名前の衝突を避けることです。
    実際にやっていないのでこのままの変更でうまく行くかどうかはわからないことをご了承ください。

    トピック投稿者 layperson

    (@layperson)

    ishitakaさん
    ありがとうございます。

    おそらく、widgets.phpが重複していたことが原因のエラーなのだと思います。functions.phpにルートを指定したら子テーマの方のwidgets.phpだけを読みに行くのだと思っていました。

    ありがとうございます。

    トピック投稿者 layperson

    (@layperson)

    munyaguさん

    ありがとうございます。
    とても詳しく解説していただいて感謝です。
    教えていただいた方法で試してみます。

    munyagu

    (@munyagu)

    colormag_widgets_initの名前を変更したら、どこかから呼び出さないといけないですよね・・・抜けています。
    親テーマでcolormag_widgets_initを呼び出している箇所を探し、子テーマで同様に新しい名前の関数を呼び出せばいいと思います。

    ご参考まで。

    トピック投稿者 layperson

    (@layperson)

    munyaguさん

    ありがとうございます!できました。
    教えていただいたとおりに試してみたら無事にカスタマイズできました。
    呼び出しの件もfunctions.phpにrequire_onceでurlを指定したら読み込めました。

    ありがとうございます。思い通りのカスタマイズができて感激です。

    返信いただいた皆様もありがとうございました。

9件の返信を表示中 - 1 - 9件目 (全9件中)
  • トピック「子テーマのウィジェット編集について」には新たに返信することはできません。