子テーマを作成した。
<head>
内にGoogle Analytics
のスクリプトを埋め込むため。
環境
- WordPress 5.2.1
- Docker version 18.09.0, build 4d60db4
- docker-compose version 1.23.1, build b02f1306
- docker-machine version 0.16.0, build 702c267f
テーマを直に編集してもいいのだが、更新すると消えてしまう問題がある。
子テーマの作り方は、子テーマ - WordPress Codex 日本語版に従えばOKだが、ここに自分が行ったことをまとめておく。
自分の場合、子テーマのディレクトリは、最後にまとめてscp
というかdocker cp
で移動させた。(後述)
準備
- ローカル環境内に、子テーマ用のディレクトリを作成する。
- その中に
style.css
とfunctions.php
を作成する。 functions.php
以外のファイルは上書きとなるので、必要であれば作成する。自分の場合はheader.php
を作成した。
style.cssの内容
スタイルシートヘッダを記述するだけでいい。Theme Name
, Theme URI
, Description
, Template
, Tags
,Text Domain
などを必要に応じて書き換える。なお、公開などは考えていない。
/*
Theme Name: Twenty Fifteen Child // 書き換える
Theme URI: http://example.com/twenty-fifteen-child/ // 書き換える
Description: Twenty Fifteen Child Theme // 書き換える
Author: John Doe // 放置
Author URI: http://example.com // 放置
Template: twentyfifteen // ディレクトリ名にする
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 // 親テーマのTagsを参考にする
Text Domain: twenty-fifteen-child // 書き換える
*/
Template
は親テーマのwp-content/theme/
ディレクトリ内でのディレクトリ名を指定する。
functions.phpの内容
スタイルシートを正しく読み込めるようにする。
<?php
add_action( 'wp_enqueue_scripts', 'theme_enqueue_styles' );
function theme_enqueue_styles() {
wp_enqueue_style( 'parent-style', get_template_directory_uri() . '/style.css');
}
なお、親テーマのファイル構成は、次のようになっている。
parent-theme
├── functions.php
├── header.php // これは上書きするので無視される。
├── style.css
├── ...
└── css
└── ie.css
css/ie.css
があるが、おそらく気にしなくていい。親テーマのfunctions.php
の実行時に読み込まれると思う。
header.phpの拡張
拡張といっても、タグを追加するだけ。親テーマのheader.php
の中身を子テーマのheader.php
にコピーして、<head>
タグの中に設置する。
子テーマの配置
docker
でwordpress
を動かしているので、コピー方法は工夫する。docker
にはcp
コマンドがあるので、あまり困らない。テーマをローカルに移すのも逆にするだけでOK。
docker cp my-theme-child/ <container_name>:/var/www/html/wp-content/themes/
子テーマをテーマとして設定
外観 > テーマ
から移した子テーマを選択して有効化すればOK。
その他
一応docker-compose
のサービスに接続してvim
で作業もできなくはない。
この場合は、docker-compose exec wordpress sh
でできる。
ie.css
はよくわかってない。あとでIEで確かめてみたい。
コメント