サーチ…


構文

  • テンプレート - メインのWordPressテーマの名前で、親です。
  • child-theme - テンプレートをオーバーライドするパッケージです。

備考

私は、子供のテーマの使用は常に良いことだと宣伝してきましたが、常にButがあります...

テンプレートの上書きの例では、テーマの作成者がサイドバーテンプレートに独自の改善点を追加していることを想像してみましょう。

/themes/template/sidebar.php

<?php
/**
 * The template for the sidebar containing the main widget area
 *
 * @link https://developer.wordpress.org/themes/basics/template-files/#template-partials
 */

if ( is_active_sidebar( 'sidebar-1' )  ) : ?>
    <aside id="secondary" class="sidebar widget-area" role="complementary">
        <?php dynamic_sidebar( 'sidebar-1' ); ?>
    </aside><!-- .sidebar .widget-area -->
<?php endif; ?>

私たちの子供のテーマは/themes/child-theme/sidebar.php独自のファイルでテンプレートを上書きしているので、私たちのウェブサイトは新しいrole="complementary"仕様の恩恵を受けません

アップデートの差し迫ったケースでは、changelogを注意深く見て、必要に応じて子供のテーマファイルを更新するように、テンプレートを上書きするかどうかを追跡するのはウェブサイトの管理者としての私たちの責務です。

2)目的

子テーマは、メインテンプレートのカスタマイズをテーマ更新時に失うことなく心配することなく安全な方法で行うことを目的としています。

基本的には、あなたのウェブサイトからアクティブなテンプレートの中のファイルを編集したいときは、自分自身に質問しなければなりません。「 テーマを更新するとどうなりますか?

答えはシンプルです。 更新によって完全に新しいテーマフォルダが作成されるため、あなたはそれらを失います

そこで、子テーマを、親テーマの同じパスで上書きするファイルを含むフォルダとして見てみましょう。さあ、実際の例を挙げましょう:

定義と要件

/wp-content/themes/に次のファイルを含むディレクトリ(たとえば、 child-theme )がある場合、WordPressによって子テーマが識別されます。

  • style.css

    このファイルは次のようなコメントテンプレートで始まる必要があります:

     /*
     Theme Name: Example Child
     Author: Me
     Author URI: https://example.com/
     Template: example
     Text Domain: example-child-theme
     Domain Path: /languages/
     */
    

    ここで考慮すべき最も重要なことは次のとおりです。

    • Template名前は、親のテーマ(別名親テーマのスラッグ)を保持するフォルダ名と正確に一致する必要があります。

    • Dashboardで簡単に識別できるように、あなたの子供のテーマに名前を付けてください(通常、 Example Childように、親の名前にChildを追加するだけです)

  • index.php

  • functions.php

3)テンプレートの上書き

子テーマの最も一般的な使用法は、テンプレートパーツをオーバーライドすることです。たとえば、次のファイルのテーマがある場合はサイドバー

/themes/template/sidebar.php

<?php
/**
 * The sidebar containing the main widget area.
 *
 * @link https://developer.wordpress.org/themes/basics/template-files/#template-partials
 */ 

if ( ! is_active_sidebar( 'sidebar-1' ) ) {
    return;
}?>
<div id="sidebar" class="widget-area">
    <?php dynamic_sidebar( 'sidebar-1' ); ?>
</div>

私たちは間違いなく、独自のファイルを子テーマ(最初の例の仕様を含む)に次のファイルで追加することができます

/themes/child-theme/sidebar.php

<?php
/**
 * The sidebar containing the main widget area.
 */ 

if ( ! is_active_sidebar( 'sidebar-1' ) ) {
    return;
}?>
<div id="my-sidebar" class="my-own-awesome-class widget-area">
    <div class="my-wrapper">
        <?php dynamic_sidebar( 'sidebar-1' ); ?>
    </div>
</div>

今ではmy-own-awesome-class子供のテーマでは安全で、テーマの更新時には削除されず、同じパスでWordPressが子供のテーマからテンプレートを選択します。

資産の交換

たとえベストプラクティスではない場合でも、CSSやJSファイルやライブラリなどのアセットを置き換える必要があることがあります。

WordPressのテンプレート上書きシステムは.phpファイル以外のものでは機能しないことに注意してください。そのため、私たちが資産について話すときには、 登録された資産

1つの例は、jQueryライブラリーを希望のバージョンに置き換えることです。私たちの子テーマのfunctions.phpファイルでは、現在のjQueryバージョンを削除し、CDNから独自の関数を追加する関数を追加する必要があります(覚えているのは単なる例です)。

/**
 * Dequeue the jQuery script and add our own version.
 *
 * Hooked to the wp_print_scripts action, with a late priority (100),
 * so that it is after the script was enqueued.
 */
function my_own_theme_scripts() {
    // remove the current version
    wp_dequeue_script( 'jquery' );
    // register my desired version
    wp_register_script( 'jquery', 'https://code.jquery.com/jquery-3.1.0.min.js', false, '3.1.0' );
    // load my version, here or somewhere else
    wp_enqueue_script( 'jquery' );
}
add_action( 'wp_print_scripts', 'my_own_theme_scripts' );


Modified text is an extract of the original Stack Overflow Documentation
ライセンスを受けた CC BY-SA 3.0
所属していない Stack Overflow