web-dev-qa-db-ja.com

チャイルズ PHP 親のファイルを上書きしないファイル PHP ファイル

次の場所にphpファイルがあります。

.../wp-content/themes/kallyas-child/pagebuilder/elements/TH_TeamBox/TH_TeamBox.php

私は上記のファイルを使って親の TH_TeamBox.php ファイルを上書きしようとしています。

.../wp-content/themes/kallyas/pagebuilder/elements/TH_TeamBox/TH_TeamBox.php

私の子供のテーマはアクティブです、私は私の親のテーマを模倣するために私の子供のテーマでファイルパスを作成しました。自分の親テーマを更新しても変更を失うことなく、自分の好みに合わせてPHPファイルを編集できるという印象を受けました。

私はしばらく開発してきました、しかしあなたが見ることができるように私はWordpressに新しいです。なぜ私の子供の.phpファイルがその親の.phpファイルを上書きしないのかについてのどんな洞察も大いに感謝されるでしょう。あなたが私を手助けする必要があるかもしれないという、もう情報をくれたらうれしいです、ありがとう! :)

3
domdambrogia

子テーマは、単に任意のPHPファイルではなく、 templates を上書きすることができます。

WordPressでは、テーマはテンプレートとして使用されるたくさんのPHPファイルで構成されています。これらのファイルのリストは テンプレート階層 にあります。

これらの特定のテンプレートファイルは新しいものでオーバーライドできますが、親テーマが他のファイルをオーバーライドするための特別な手段を持っていない限り、サポート構造の一部またはpagebuilderコードのライブラリとして単に親によって含まれるファイル単にそのように上書きされるだけです。

11
Otto

解決策は、必要な変更をあなたの子供のテーマ functions.php fileに移動することです。

それが関数であれば、通常、それが既に宣言されているかどうかをチェックするif文があります。この場合、同じ名前でfunctions.phpに関数をコピーして必要な変更を加えることができます。テーマファイルの残り。関数がif文なしで宣言された場合は、 functions.php で名前を変更し、その関数が呼び出されるテンプレートファイルを見つけ、それをあなたの子テーマにコピーし、その中の関数呼び出しを変更する必要があります。

ウィジェットの場合は、クラス宣言全体を functions.php にコピーし、名前を変更してその他の変更を加えます。必ず新しいウィジェットも登録してください。そうすれば、ウィジェットエリアに新しい名前と変更内容が表示されます。

1
Patriot

親のテーマファイルに変更を書き込むよりも優れている可能性がありますが、これはOttoが述べた理由から望ましくありません。

次の2行のPHPを、子テーマのディレクトリ構造の中での修正コピーを使用したいファイルの先頭に追加すると、

<?php
    $filepath = str_replace(get_option('template'), get_option('stylesheet'), __FILE__);
    if (file_exists($filepath)) {include($filepath); return;}
?>

テーマのアップグレード後にこれを実行する各ファイルに対しても、これをもう一度実行する必要があるので、これらのファイルに注意してくださいをお勧めします。それを、これらの行をローカルに追加し直し、更新されたコピーをFTPでアップロードしてください。

面倒なことには思えないかもしれませんが、カスタムの変更済みファイルを子テーマの構造にまとめて、テーマの更新によって上書きされないようにすることができます。繰り返しになりますが、上書きしたい親ファイルの先頭にこれらの行を追加し直すだけです。

それはまたあなたのサイトを壊すことなく修正された子関数ファイルのコピーをremoveすることができることを意味します(例:更新されたテーマファイルに対してテストするため)見つかりました。

(CEM Typo Edit:最初のget_options呼び出しをget_optionに置き換えました。)

0
majick