サポート » テーマ » 親テーマのincludeを子テーマで上書きする方法はありませんか?

  • 解決済 takuya

    (@takuya)


    親テーマのfunctions.phpでincludeされたファイルを翻訳に対応していないため日本語化すべく様々な方法を試みていますがCannot redeclare・・・エラーを中々解消出来ず困っております。

    parent
    -functions.php
    –functions/widget-contact.php

    child
    -functions.php
    –functions/widget-contact.php

    子テーマでディレクトリ構成を同じにしてみましたが日本語化した子テーマ上のファイルが読み込まれずに親テーマのオリジナルが読み込まれています。不思議に思い親テーマのfunctions.phpを確認したらwidget-contact.phpがincludeで読み込まれておりました。

    include_once(‘functions/widget-contact.php’);

    これが原因かもしれないと思い、親テーマのincludeを真似て子テーマのfunctions.phpにも同じ記載をしたところ、Cannot redeclareエラーが表示されテーマが正常に機能しなくなりました。同じファイルが二度読み込まれているのかもしれません。

    exclude_onceと単純に読み込みを子テーマで制御できれば楽ですが、PHPにその様な記載は見当たらず。更新の容易性を犠牲にして親テーマ自体を編集する方法も残ってますが、もし子テーマで制御する方法がございましたらアドバイスいただけないでしょうか。

4件の返信を表示中 - 1 - 4件目 (全4件中)
  • モデレーター gatespace

    (@gatespace)

    http://firegoby.jp/archives/3099

    翻訳ファイルだけならこの記事が参考になりませんか?

    トピック投稿者 takuya

    (@takuya)

    問題なのは翻訳に対応していないのでテーマファイルに直接日本語訳を記入しなければならない状況下にあります。最も翻訳出来ればちょちょっとpoeditでやってしまうのですが・・・。

    あくまで今回はincludeされている部分が翻訳未対応という事です。他の部分は和訳作って対応しています。

    http://firegoby.jp/archives/3099
    翻訳ファイルだけならこの記事が参考になりませんか?

    ご紹介いただいたURLに関しては3.5以上からlanguagesディレクトリーにthemesディレクトリを作成し、textdomain-ja.moをアップロードすれば子テーマに翻訳ファイルを保存しなくても使用できます。

    nobita

    (@nobita)

    こんにちは、
    現物がないので、見当がつきませんが、

    ファイル名からするとウィジェットですかね?

    gettext関数が書かれていなくて、アクションもフィルタもないということでしたら、

    親テーマのウィジェット設定をオーバーライドして子テーマで新しい設定するとかといった方法も検討してみるといいのではないかと思います。

    極端な方法だと、親のfunctions.phpを空にして、子テーマにコピペするとかでも動作するとは思います。(アップデートの時に、自動的に空にする場合は、フックを探していただくことになると思いますが、)

    公式テーマでしたら、テーマ名をお知らせいただくと回答がつきやすいと思います。

    トピック投稿者 takuya

    (@takuya)

    今回のは有料テーマです。

    極端な方法だと、親のfunctions.phpを空にして、子テーマにコピペするとかでも動作するとは思います。(アップデートの時に、自動的に空にする場合は、フックを探していただくことになると思いますが、)

    これは盲点でした。確かにこの方法もありますね。ありがとうございます。ひとまずこれにて解決済みとさせていただきます。

4件の返信を表示中 - 1 - 4件目 (全4件中)
  • トピック「親テーマのincludeを子テーマで上書きする方法はありませんか?」には新たに返信することはできません。