0
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

WordPressの親テーマ・子テーマを活用して、Web制作を効率化する5つのTips

0
Posted at

はじめに

株式会社Soleilというデザイン会社を経営しています。

普段は広告デザインやWeb制作を中心に仕事をしていますが、最近ではWordPressのテーマを自分で開発したり、AIと一緒にプログラムを作ったりもしています。

そんな中で、WordPressを使ったWeb制作について、以前から気になっていたことがありました。

「デザインは毎回違うのに、なんで構造まで毎回作り直してるんだろう?」

もちろん、お客様によって必要な機能やサイトの構成は異なります。

でも、ヘッダーやフッター、投稿一覧、サービス紹介、お問い合わせへの導線など、共通している部分も結構あります。

僕はデザイナーなので、デザインを使い回したいわけではありません。

むしろ、デザインは毎回自由に作りたい。

そこで、WordPressの親テーマ・子テーマという仕組みを、少し違う視点で活用するようになりました。

今回は、その考え方と制作時に意識している5つのポイントをご紹介します。

1. 親テーマには「共通構造」を持たせる

WordPressの親テーマ・子テーマというと、一般的にはこんな使い方をイメージすると思います。

  • 既存のテーマを選ぶ
  • 子テーマを作成する
  • 子テーマでデザインや機能をカスタマイズする

もちろん、これは正しい使い方です。

ただ、複数のWebサイトを制作する立場からすると、もう少し違う使い方もできます。

親テーマを、デザイン済みの完成品ではなく、制作のための共通基盤として考える。

例えば、こんなディレクトリ構成です。

wp-content/themes/
├── variable/
│   ├── style.css
│   ├── theme.json
│   ├── functions.php
│   ├── templates/
│   │   ├── index.html
│   │   ├── page.html
│   │   └── single.html
│   ├── parts/
│   │   ├── header.html
│   │   └── footer.html
│   └── patterns/
│
├── project-a/
│   ├── style.css
│   └── theme.json
│
└── project-b/
    ├── style.css
    └── theme.json

※説明用に簡略化したブロックテーマの構成例です。

親テーマに基本的なテンプレートや共通処理を持たせ、個別のサイトは子テーマで作っていきます。

こうすることで、サイトを新しく制作するたびに、共通部分をゼロから考える必要がなくなります。

大事なのは、何でも親テーマに入れることではなく、複数のサイトで共通して使えるものを見極めることです。

2. 子テーマは「デザインのための領域」にする

親テーマに共通構造を持たせたら、子テーマではサイトごとのデザインを作っていきます。

子テーマを作成するには、まず style.css に以下のような記述をします。

/*
Theme Name: Project A
Template: variable
Version: 1.0.0
*/

Template には、親テーマのディレクトリ名を指定します。

これによって、WordPressはこのテーマが variable の子テーマであることを認識します。

あとは、必要に応じて子テーマ側にファイルを追加していきます。

project-a/
├── style.css
├── theme.json
├── templates/
│   └── front-page.html
├── parts/
│   └── header.html
└── assets/
    ├── css/
    ├── js/
    └── images/

例えば、子テーマの parts/header.html に独自のヘッダーを用意すれば、親テーマのヘッダーとは異なるデザインを構築できます。

もちろん、CSSだけでデザインを変更しても構いません。

ここで僕が意識しているのは、

親テーマのデザインを変更するのではなく、親テーマの構造を利用してデザインを作る。

ということです。

この違い、デザイナーとしては結構大きいです。

既存のデザインを修正していくのと、共通基盤の上で自由にデザインしていくのとでは、制作時の考え方が変わってきます。

3. theme.jsonでデザインの基礎を管理する

ブロックテーマを使った制作では、theme.json が非常に便利です。

カラーパレットやフォント、余白、コンテンツの幅などを定義できます。

例えば、子テーマの theme.json を以下のように設定します。

{
  "$schema": "https://schemas.wp.org/trunk/theme.json",
  "version": 3,
  "settings": {
    "layout": {
      "contentSize": "800px",
      "wideSize": "1200px"
    },
    "color": {
      "palette": [
        {
          "slug": "primary",
          "name": "Primary",
          "color": "#3b5eff"
        },
        {
          "slug": "background",
          "name": "Background",
          "color": "#ffffff"
        },
        {
          "slug": "text",
          "name": "Text",
          "color": "#222222"
        }
      ]
    }
  },
  "styles": {
    "color": {
      "background": "var:preset|color|background",
      "text": "var:preset|color|text"
    },
    "typography": {
      "fontSize": "16px",
      "lineHeight": "1.8"
    }
  }
}

※ theme.json version 3に対応したWordPressを前提としています。

このように設定することで、サイトの基本的なデザインルールを定義できます。

定義したカラーパレットは、WordPressのブロックエディターでも利用できます。

個人的に面白いと思っているのは、CSSだけで完結させるのではなく、WordPress標準の編集環境とデザインルールを共有できることです。

制作会社がサイトを納品した後、お客様が記事を追加したり、ページを編集したりすることもあります。

そんな時に、制作側が用意したデザインルールを編集環境でも利用できるのは便利です。

デザインする人と、運用する人が同じルールを使える。

これは制作効率だけでなく、運用面でもメリットがあります。

4. ブロックパターンで繰り返す制作を減らす

Webサイトを作っていると、似たような構成のコンテンツを何度も作ることがあります。

例えば、

  • お問い合わせへのCTA
  • サービス紹介
  • 会社概要
  • よくある質問
  • 画像と文章を組み合わせたセクション

こういったものは、ブロックパターンとして用意しておくと便利です。

例えば、テーマの patterns/cta.php に以下のようなファイルを作成します。

<?php
/**
 * Title: お問い合わせCTA
 * Slug: variable/contact-cta
 * Categories: call-to-action
 */
?>

<!-- wp:group {"layout":{"type":"constrained"}} -->
<div class="wp-block-group">

    <!-- wp:heading {"textAlign":"center"} -->
    <h2 class="wp-block-heading has-text-align-center">
        お問い合わせ
    </h2>
    <!-- /wp:heading -->

    <!-- wp:paragraph {"align":"center"} -->
    <p class="has-text-align-center">
        お気軽にご相談ください。
    </p>
    <!-- /wp:paragraph -->

    <!-- wp:buttons {"layout":{"type":"flex","justifyContent":"center"}} -->
    <div class="wp-block-buttons">

        <!-- wp:button -->
        <div class="wp-block-button">
            <a class="wp-block-button__link wp-element-button"
               href="/contact/">
                お問い合わせはこちら
            </a>
        </div>
        <!-- /wp:button -->

    </div>
    <!-- /wp:buttons -->

</div>
<!-- /wp:group -->

※説明用のサンプルです。リンク先は実際のサイト構成に合わせて変更してください。

このようなパターンを用意しておけば、ブロックエディターから繰り返し利用できます。

もちろん、すべてのサイトで同じCTAを使う必要はありません。

共通のパターンを出発点として、サイトごとにデザインや内容を変更していけばいいわけです。

なお、通常のブロックパターンは、ページに挿入するとそのページのコンテンツになります。

元のパターンを変更しても、すでに挿入した内容が自動的に変更されるわけではありません。

複数のページで内容を同期したい場合は、同期パターンやテンプレートパーツなど、目的に応じて使い分ける必要があります。

ここでも考え方は同じです。

完成品を使い回すのではなく、作り始めるための材料を用意しておく。

デザインの自由を残しながら、繰り返す作業を減らせます。

5. 親テーマの更新と個別サイトの改修を分離する

複数のWordPressサイトを制作・運用していると、制作時だけでなく、公開後の保守も重要になってきます。

例えば、共通して使用しているテンプレートや処理に改善が必要になった場合。

サイトごとに独立したテーマを使っていると、それぞれのテーマを確認し、個別に修正する必要が出てきます。

親テーマに共通部分を集約しておけば、改善する場所を一つにまとめられます。

共通の改善
    ↓
親テーマを更新
    ↓
各サイトで動作確認
    ↓
問題がなければ適用

ただし、親テーマを更新すればすべてのサイトが安全に更新できる、というわけではありません。

子テーマでテンプレートを上書きしていたり、親テーマの処理に依存していたりする場合、更新によって影響を受ける可能性があります。

また、サイトエディターで保存したテンプレートのカスタマイズが、テーマのファイルより優先される場合もあります。

そのため、僕は以下のような考え方を大切にしています。

  • 親テーマと子テーマの責務を明確にする
  • 個別サイトのデザインは子テーマに持たせる
  • 親テーマの変更内容を記録する
  • 更新前に影響範囲を確認する
  • テスト環境で検証してから本番に適用する

また、サイト固有の業務データや、テーマを変更しても維持すべき機能については、テーマではなくプラグイン側に持たせることも重要です。

親テーマ・子テーマの分離は、保守の作業をなくす仕組みではありません。

保守する場所と、確認すべき範囲を整理するための仕組みだと考えています。

まとめ

今回は、WordPressの親テーマ・子テーマを活用したWeb制作について、5つのポイントをご紹介しました。

  1. 親テーマには共通構造を持たせる
  2. 子テーマはデザインのための領域にする
  3. theme.jsonでデザインの基礎を管理する
  4. ブロックパターンで繰り返す制作を減らす
  5. 親テーマの更新と個別サイトの改修を分離する

どれもWordPressに元々備わっている仕組みです。

特別な技術を新しく作る必要はありません。

僕はこれらを組み合わせて、Web制作のための共通基盤を作れないかと考えました。

デザインは毎回ゼロから。構造は二度とゼロから作らない。

この考え方をもとに開発したのが、WordPressテーマ「Variable」です。

Variableは、親テーマを制作の共通基盤として利用し、子テーマで自由にデザインを作っていくことを目指しています。

現在は実際のクライアント案件でも使用しており、WordPressの公式テーマディレクトリでも公開しています。

今後は、実際のテーマ開発や子テーマを使った制作方法、AIと一緒にWordPressを開発する方法などについても書いていこうと思います。

僕自身、デザイナーとしてWeb制作を続けてきた中で、WordPressの仕組みを少し違う視点で捉えることで、制作の自由度を広げられると感じています。

同じように、複数のWebサイトを制作・運用している方の参考になれば嬉しいです。

0
0
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
0
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?