web-dev-qa-db-ja.com

テンプレートファイルを編集するために子テーマにコピーする必要がありますか?

Style.cssファイルは変更のために編集される前に子テーマにコピーされる必要があることを私は知っています。これはtemplate.phpファイルにも当てはまりますか?もしそうなら、私は単に特定のテンプレートファイルだけをコピーする必要がありますか、それとも私はすべてをコピーするべきですか?

更新:

includes/breadcrumbs.php:

<?php
if ( is_front_page() ) return;

if ( class_exists( 'woocommerce' ) && is_woocommerce() ) {
    woocommerce_breadcrumb();
    return;
}
?>

<div id="breadcrumbs"<?php if ( function_exists( 'bcn_display') ) echo ' class="bcn_breadcrumbs"'; ?>>
    <?php if(function_exists('bcn_display')) { bcn_display(); }
          else {
            $et_breadcrumbs_content_open = true;
    ?>
            <span class="et_breadcrumbs_content">
                <a href="<?php echo esc_url( home_url() ); ?>" class="breadcrumbs_home"><?php esc_html_e('Home','Nexus'
...
1
Sabuncu

通常、完全な親スタイルシートを子テーマにコピーする必要はありません。問題の特定のコードを子テーマのスタイルシートにコピーしてそれを変更するだけです。

functions.phpおよびその他の機能関連ファイルに関しては、これを子テーマにコピーすることはできません。これは致命的エラーを再宣言できないためです。これに関するいくつかの記事があるので、これのためにサイト検索を使うのを忘れないでください。

テンプレートはテーマ領域であるため、テンプレートファイルは常に子テーマ( あなたが親テーマの作者でない場合は )で変更する必要があります。影響を受けるテンプレートをコピーするだけです。ページテンプレートの場合は、親テーマと同じファイル構造を維持する必要があります。

本当の問題は、あなたがテンプレートをコピーしてそれを修正するべきかどうかです。テンプレートタグ、テンプレートパーツ、ループ自体、ポスト配列、ナビゲーションメニュー、ヘッダ、フッタなどをフィルタリングするために利用可能な大量のネイティブフィルタとアクションにより、カスタムプラグインを使用せずに何かを変更することがますます簡単になりました。テンプレートファイル自体を直接変更します。それぞれのフィルタを介してこれらの詳細を変更したり、プラグインを介してアクションを変更したりすることで、任意の時点で使用されているすべてのテーマでこれらの変更を利用できるようになります。テンプレートファイルを変更して変更するためにテンプレートファイルを子テーマにコピーする前にテーマを変更したときに、何を変更する必要があるのか​​、またその変更が必要かどうかを判断して決めておくと便利です。

大きな商用テーマの中には、テンプレート内の特定のものをフィルタリングするために使用できるテーマ固有のフィルタを追加したものがあります。ほとんどの場合、これらのフィルタだけでテンプレートを変更できます。その場合は、それに従って、親テーマの出力を変更するために、子テーマの関数ファイルでこれらのフィルタを使用します。

あなたの変更がフィルタやアクションを介して行うことができないならば、そう、正しい方法はその特定のテンプレートをあなたの子供のテーマにコピーしてそこで修正することでしょう。唯一の欠点は、手動でそれらのテンプレートを更新しておく必要があるということです。

3
Pieter Goosen

変更しようとしているファイルだけをコピーしてください。そうしないと、親テーマが更新されたときに、編集していない子テーマの古いファイルがロードされます。

このように考えると、子テーマのテンプレートは親テーマをオーバーライドします。 style.cssfunctions.phpなどはテンプレートではなく、このようには動作しません

3
Tom J Nowell

追加したいファイルをコピーする必要があります。たとえば、ファイルがthemes\abc\xyz\thefile.phpにある場合は、親テーマと同じパスを作成する必要があります。例えばchild-themes\abc\xyz\thefile.php

それが質問に答えることを願っています。

1
Ameen Khan