wordpress:ダウンロードしたテーマは絶対カスタマイズしちゃダメ!カスタマイズは子テーマを使え!
wordrepssにはめちゃくちゃたくさんのテーマがあって、ブログ書いてる人の中には頻繁に変えてる人もいるかと思います。
テーマに関する注意なのですが、公式で配布されているテーマを直接カスタマイズするのは絶対ダメです!
wordrepssの利点にカスタマイズに自由度が高いというのがありますが、配布されてるテーマはやっちゃだめです。
趣味でやってる分には仕方ないかもしれませんし、自分が理解して気をつければいいのですが、以前仕事でそれをやってた人がいたのでなんだかなぁと思ってしましました。
なぜ公式で配布されているテーマを直接カスタマイズするのはダメなのか
この理由は唯一つ!
アップデートするとカスタマイズしたものが消えてしまうから
です。
配布されているテーマはよくアップデートされますが、カスタマイズをしてるとアップデートやっちゃダメなんです。
アップデートを行うと、一度そのテーマファイルを全部消して新しいファイルをダウンロードしてるみたいなんですよね。
例としてテーマ「Twenty Seventeen」にpage-test.phpというページ用のテンプレートを作成します。
この状態でアップデートを行うと…
消えてる!
更新日時も全てのファイルが変わってますよね。
なので
- 公式で配布されているテーマは直接カスタマイズしない
- カスタマイズした場合はアップデートを行わない
です。
カスタマイズしたい場合は子テーマを使え!
じゃカスタマイズできないの?と言われればそうではなくて、ちゃんと安全にカスタマイズする方法が用意されています。
それは子テーマを作成するという方法です。
子テーマは、親テーマと呼ばれる別のテーマの機能とスタイルを継承したテーマです。既存のテーマを変更する方法として、子テーマが推奨されています。
子テーマを作って有効にすると、子テーマ内にあるファイルはそれを、ない場合は親テーマのファイルを読み込むようになります。
作り方
ここではこのような仕様で子テーマを作っていきます。
- 親テーマはTwenty Seventeen
- 子テーマをTwenty Seventeen Childとする
- カスタマイズはpage-test.phpを作成する
まずは子テーマ用ディレクトリ「twentyseventeen-child」を作成します。
このに子テーマのファイルを入れていきます。
子テーマに最低限必要なファイル
子テーマに最低限必要なファイルはstyle.cssとfunctions.phpです。
style.cssにこう書くだけです。
/* Theme Name: Twenty Seventeen Child Template: twentyseventeen */
Theme Nameは子テーマの名前、Templateは親テーマのディレクトリ名です。
テーマ名ではないので間違えないように。
つぎにfunctions.phpで親テーマのスタイルシートを読み込ませます。
add_action( 'wp_enqueue_scripts', 'theme_enqueue_styles' ); function theme_enqueue_styles() { wp_enqueue_style( 'parent-style', get_template_directory_uri() . '/style.css' ); }
この状態で管理画面の外観を見てみるとこうなってると思うので、Twenty Seventeen Childを有効にしましょう。
子テーマのカスタマイズ
固定ページに「テスト(スラッグはtest)」というページを作り、ページ用テンプレートpage-test.phpを子テーマのディレクトリに入れてみます。
テストページアクセスするとちゃんと表示されました。
「これは子テーマ用テストページファイルです。」の文字が子テーマのpage-test.phpに追加したものです。
テーマを親テーマのTwenty Seventeenに変えて見てみるともちろんその部分の表示はありません。
それほど手間のかからない工程で安全にカスタマイズができるので、テーマをカスタマイズしたい場合は極力子テーマを作成するようにしてください。
親テーマが変わっても、style.cssのTemplate部分を変えるだけで基本的にはOKです。
親テーマのcssがガラッと変わるのでかなりのカスタマイズをかけてる場合は多分崩れますが…