Tenを元に改造していました。「人気のWordPressをとりあえず試してみよう」という軽い気持ちで使っていたので、子テーマも使わず、wp-includesのファイルを編集してしまったりと、ひと通りやりがちな過ちをしながら勉強していました。カスタマイズするなら子テーマを導入しよう仕事でWordPressのテーマをいくつも編集していて思うことは「公式の言うとおりに親テーマを公式のものにして、子テーマを作成して編集したほうが管理が楽」ということです。以下のようなメリットがあります。1.親テーマをアップデートできるこれが子テーマを導入する一番大きなメリットです。WordPressの進化のスピードはとどまることを知らず、続々と新機能が追加されます。アップデートに伴い、廃止・非推奨になる関数・テンプレートタグの数も膨大です。大型アップデートのたびにそうした変更点を反映させるというのは、現実的ではありません。なると動作の検証をするまでアップデートができません。公式テーマはそうした変更を織り込んで安全にアップデートしてくれます。(それでも1度ローカルで検証しますが)2.脆弱性やバグへの対応が早いこれは親テーマに公式のものを導入するメリットです。WordPressは決してセキュリティの甘いCMSではありませんが、その人気からハッカーの標的になることが多く、有象無象が新しい手法で攻撃を試みます。そのため、脆弱性が発見されることも多く、多くのサイトで改変や乗っ取られるという被害にあっています。WordPressのコアはこうしたセキュリティ上の脅威に対して素早く対応します。それに合わせる形で公式のテーマもアップデートされます。自動アップデートを有効にしておけば、脆弱性が見つかるごとにWordPress案件の間を右往左往する必要はありません。非公式のテーマは更新頻度が低く、その殆どで脆弱性が放置されています。googleで検索のトップ10に表示されるテーマの全てがセキュリティに問題があったという報告もあります。(さらにそのうちの幾つかには配布されている時点でスパムウエアが仕掛けられていました)最も危険なのは、人気のあるテーマで、更新がされていないものです。人気のテーマは標的になる事が多く、更新されていなければ過去の脆弱性が放置されている可能性が高まります。3.変更点を把握しやすい配布されているテーマを部分的に修正していると「どこに、どんなカスタマイズをしたのかわからない」という状態になります。この関数の意味がいまいちわからん」と成りがちです。その点、子テーマは修正したファイルだけがまとまっているので、変更点の把握は容易です。他にも公式の良い部分は流用できる。公式テーマはほとんどの人が把握しているため学習コストを抑えることができる。メリットがたくさんあります。Tenに子テーマを導入してみます。Theme」をクリック。Ten」と入力して「検索」。Tenが出てくると思うので「今すぐインストール」をクリックします。インストールが完了したら「有効化」をクリックしてください。1.6」になりました。サイトのアドレスにアクセスしてテーマが有効になっているか確認して下さい。なんとも懐かしい外観です。Tenに子テーマを作成このサイトでは初めて子テーマを作成する方でも理解しやすいよう、簡単な構成で子テーマを作成していきます。1.子テーマ用のディレクトリを作成WordPressでテーマを追加すると「/wp-content/themes」にテーマごとのディレクトリが作成されます。今回の例で言えば「twentyten」という名前でディレクトリが作成されていると思います。それでは子テーマ用のディレクトリ「/wp-content/themes/twentyten-child」を作成してください。子テーマを構成する上で必要最低限のファイルは「style.css」のみです。「twentyten-child」ディレクトリに「style.css」を作成してください。続いてスタイルシートを編集します。子テーマとして機能させるにはファイルの先頭に決まった形式で記述をする必要があります。子テーマのタイトルは自由です。今回は「twentyten-child」としました。←親テーマのディレクトリ名*/これだけで、準備は完了です。WordPressの編集画面に移動して「外観>テーマ」をクリックしてください。すると以下のようなテーマが作成されていると思います。親テーマの時と同じように「有効化」をクリックしてください。Webページを表示してみてください。なにもCSSで装飾されていないプレーンな状態で表示されれば、正しく子テーマが導入できています。親テーマのスタイルを踏襲しつつ、自分オリジナルのCSSを編集したいという場合は、「@import」でcssを読み込んでください。url('../twentyten/style.css');これで子テーマの導入は完了です。わからないことがあったら以下のページを参照してください。子テーマを編集するにあたり、気をつけないと行けないのはオーバーライド(上書き)についてです。ホームのデザインを変更ために「子テーマのディレクトリ」に「home.php」というファイルを作ったとします。すると「親テーマのディレクトリ」にある「home.php」は子テーマのファイルに上書きされるため無効になります。なんでもオーバーライドされるかというと、そうでもなく、1つだけ例外があります。関数などを記述する「functions.php」は上書きされません。親テーマの関数に追加する形で読み込まれます。同じ関数名を記述した場合は、後に記述した関数が有効になります。関数名の重複には注意してください。子テーマを編集してレスポンシブWebデザインにするレスポンシブWebデザインの詳細は「以前の投稿」をご覧ください。Tenは2カラムなので、今回は1000pxでメニューが下に移動するタイプに変更します。編集するファイルは2つだけです。auto;display:block;}}続いてヘッダーに表示されている何の景色だかわからないデフォルトの画像をウィンドウサイズに合わせて変形できるようにします。この指定は親テーマの「header.php」で行っているので、子テーマのディレクトリにコピーして編集します。95行目あたりにある以下の記述を削除してください。/>これで編集作業は終わりです。レスポンシブWebデザインに対応できました。Tenをカスタマイズする上で押さえておいたほうがよいポイント子テーマを導入すると公式の機能が利用できるのが利点ですが、「公式テーマの構造を理解しなくてはならない」という難点もあります。Tenの癖を紹介します。Tenは公式テーマだけあって、WordPressの機能を余すところなく堪能できる優等生と言えます。反面、特定の要件に特化したサイトを作ろうと思うと、要らない機能もてんこ盛りです。これは新機能をサポートしなくてはならない公式テーマにとって避けられない命題です。Elevenは、そうした公式テーマの宿命と対峙すべく、編集画面でのカスタマイズを売りに作られましたが、テンプレートを直接編集するユーザーにとっては、余計な記述の多い見通しの悪い(カスタマイズしにくい)テーマとなってしまいました。これは万人向けのCMSとしては避けられない問題のため、今後も同様の進化(深化?)が続いていくと思います。個人的にはブログ用テーマ、ギャラリー用テーマなどに細分化される時期に来ていると思います。header.phpサイトの幅一杯に表示されるヘッダー画像をサポートするために、必ず本文やサイドバーの上に表示される仕様になっています。サイドバーを上部まで持ってくるにはheader.phpの以下の部分を各テンプレートに移動してレイアウトし直す必要があります。id="main">index.php投稿一覧を表示するためのテンプレート。基本的に個別の投稿ページはsingle-{post_type}.php、固定ページはpage-slug.phpなどが適用されます。表示設定」の「投稿ページ」で指定した投稿一覧を表示するテンプレートは、「home.php」、なければ「index.php」が適用されます。このようなルールがあるため子テーマにpage-slug.phpというテンプレートを作成したとしても、親テーマのディレクトリにindex.phpがあるので、そちらが優先して適用されます。そのため投稿一覧のテンプレートを変更する場合は子テーマのディレクトリに「index.php」を作成してオーバーライドする必要があります。Tenの鬼門、複雑なループページ。アサイド、ギャラリー、検索結果、タグ、カテゴリーなど、ループ表示に関する部分を一手に担うテンプレート。大枠のレイアウト要素はそれぞれのテンプレート。各投稿を表示するループ部分はloop.phpと言った具合にまとめることで、役割としての分割を行ったのだと思いますが、初めてWordPressのテンプレートに触れた方にとっては見通しが悪く「変更点がわからない」という状態に陥りやすい。ファイル数が抑えられる反面、投稿ページや固定ページに自動でテンプレートが適用されるテンプレート階層という仕組みと相反する設計となっている。本来page.phpであれば、ループはloop-page.php。single.phpであれば、ループはloop-single.phpとしたいところ。loop.phpを読み込んでいるテンプレートは以下のとおり。archive.phpauthor.phpcategory.phpindex.phpsearch.phptag.phpこれらのページはloop-archive.php等を作成しても親テーマのloop.phpが適用されてしまう。そのため子テーマにloop.phpを作成してオーバーライドする必要がある。functions.php上で解説した通り、オーバーライドされずに、親テーマの関数に追加する形で記述する。親テーマの関数を変更したい場合は、子テーマのfunctions.phpで関数名を同じにして上書きする。投稿のメタ情報などは複雑な構造をしているので、新しく作って、各テンプレートで読み込んだほうが早く済むことが多い。page.php固定ページ用テンプレート。page-home.phphomeに固定ページを選択した場合に利用するhome用のテンプレート。(homeにした固定ページでテンプレートファイルを選べばどんな名前のテンプレートでも適用できます。)single.php投稿ページ用のテンプレート。sidebar.phpサイドバー用テンプレート。ウィジェットエリアはprimaryとsecondaryに分かれている。両方使いつつ要素を追加する場合は挿入する場所に気をつける。駆け足で解説しまいしたが、以上のポイントを押さえれば、後は普通にテーマを作成するのと同じようにカスタマイズできるはずです。Tenを公式推奨の形でカスタマイズするのに必要な知識としてはこんなところだと思います。カスタマイズに必要なテンプレートタグや関数は、必要になった時にCodexで探さば大抵見つかります。それでは素敵なWordPressライフをお送りください。Chromeのブックマークを復元する方法Linuxの基本の基本。コメントをキャンセルコメントは認証制のため、すぐには反映されません。sukegra」をご利用ください。Share)Linuxの基本の基本。Share)他に運営しているサイトGOいけん世間を騒がせている、あの話題について言いたい。そんなあなたの「ご意見」を世に問うサイト。SUKEGRA「スケグラ」は日本語でプログラミングの悩みを解決するQ&Aサイトです。アクアリウムWikiアクアリウムに関することをみんなでまとめるWikiです。