WordPress
子テーマの基礎
サーチ…
構文
- テンプレート - メインの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' );