- CentOS7
- PHP7.x
- WordPress5.x
デザインをカスタマイズしたい時は子テーマを使う。
適用しているテーマのCSSなどを直接修正してしまうと、
テーマの更新を行う度にテーマに関わる全てのファイルが書き変わるので書き直さないといけない。
子テーマとは
適用しているテーマを直接いじらず、
主に上書きという形で上書きしたいファイルのみ生成して適用させる方法
「twentynineteen」の子テーマを作成する
- 「twentynineteen-child」という名前で子テーマを作成してみる
$ cd /path/to/your/project
$ cd wordpress/wp-content/themes
# 子テーマ用のディレクトリの作成
$ mkdir twentynineteen-child
$ cd twentynineteen-child
# 必須ファイル1の作成
$ touch style.css
# 必須ファイル2の作成
$ touch functions.php
style.css
style.css の下記コメントアウトの内容が重要
重要なパラメータ
- Theme Name: 子テーマ名
- 「外観」→「テーマ」に表示される名前
- Template: 親のテンプレートのディレクトリ名
- wordpress/wp-content/themes/twentynineteen
- 今回の親のテンプレート名は「twentynineteen」
- wordpress/wp-content/themes/twentynineteen
- 残りパラメータは適当に
$ vi style.css
/*
Theme Name: Twenty Nineteen Child
Theme URI: http://example.com/twenty-nineteen-child/
Description: Twenty Nineteen Child Theme
Author: John Doe
Author URI: http://example.com
Template: twentynineteen
Version: 1.0.0
License: GNU General Public License v2 or later
License URI: http://www.gnu.org/licenses/gpl-2.0.html
Tags: light, dark, two-columns, right-sidebar, responsive-layout, accessibility-ready
Text Domain: twenty-fifteen-child
*/
↑ 上記コピーして Template と Theme Name を環境に合わせる
↓ css のカスタマイズする場合はここから記述
body {
color: #444;
}
functions.php
$ vi functions.php
/**
* wp_enqueue_scripts() の実行内容が
* wp_enqueue_scripts_override() の内容になる設定
*/
add_action( 'wp_enqueue_scripts', 'wp_enqueue_scripts_override' );
/**
* 親テーマの style.css が先に読み込まれ、
* 子テーマの style.css が後に読み込まれるようになる設定
*/
function wp_enqueue_scripts_override() {
wp_enqueue_style( 'parent-style', get_template_directory_uri() . '/style.css' );
wp_enqueue_style( 'child-style',
get_stylesheet_directory_uri() . '/style.css',
array('parent-style')
);
}
子テーマ適用
「外観」→「テーマ」に子テーマが表示されているので子テーマを「有効化」
テンプレートファイルのカスタマイズ
- 親テーマ
- wordpress/wp-content/themes/twentynineteen
- 子テーマ
- wordpress/wp-content/themes/twentynineteen-child
twentynineteen/footer.php をカスタマイズしたい時は
twentynineteen-child/footer.php を作成する。
twentynineteen/template-parts/header/entry-header.php をカスタマイズしたい時は
twentynineteen-child/template-parts/header/entry-header.php を作成する。
子テーマにテンプレートファイルがあると、
親テーマのテンプレートファイルが呼ばれず、
子テーマのテンプレートファイルが呼ばれるようになる。