フルサイトエディタ

最近の WordPress はブロックエディタに続き、フルサイトエディタも(おそらく)標準にするようです。
これまでのテーマ編集には専門知識が必要でしたが、少しずつ一般ユーザにも解放されています。

とは言ってもまだ過渡期にあるため専門知識がある方が有利だと思います。ただテーマを選ぶだけでは制作者としてはもの足りないのでカスタマイズしていきましょう。

制作にあたり下記サイトをターゲットにします。
※クライアントさんに掲載許可をいただいています

写真はカメラマンさんの著作物なので使用不可。
また、JavaScript を使用していますがまだ学んでいないということで除外します。
完全再現ではなく、テーマとして雰囲気を再現するのを目標にします。

カラースキーム

サイト全体の印象を決めるカラースキームを設定してみましょう。

管理画面「外観 → エディタ 」
「テンプレート」に移動
新規テンプレートを追加
フロントページ(サイトのトップページ)を選択
Web サイトのトップページになりそうな左端のパターンを選択、いったん保存
テーマエディタに戻ってから「スタイル」に移動
いったん「デフォルト」を選択、これをベースに編集
右の設定パネルから「色」を選択、設定パネルがない場合は右上の「スタイル」ボタンで表示
カラーパレットを編集
ベースカラー(背景色)を変更、同様に他もいくつか変更します

サンプルでの指定色 (コピペ用)

ベース: EDEBE6
コントラスト: 1E1E1E
アクセント: 9DA300
アクセント / 2: 8E9302

設定したパレットからテーマに適用していきます。

カラーパレットからそれぞれ反映していく

サンプルの設定例

  • テキスト → コントラスト
  • 背景 → ベース
  • リンク → デフォルト: アクセント, ホバー: アクセント / 2
  • ボタン → テキスト: Base/Two, 背景: アクセント
  • 見出し → テキスト: アクセント

これで全体的なカラースキームが設定完了、保存します。
この状態で一度サイトを確認してみましょう。

タイポグラフィ

つぎは文字フォントを設定します。
ひとつ前のバージョンからフォントの管理ができるようになりました。(今年の4月)

日本語の場合、フリーで使える Noto Sans JP がよく使われます。
Noto Sans Japanese – Google Fonts

基本的に装飾的な文字以外はゴシック系が読みやすいため採用されます。

※参考サイトでは印象優先で明朝系フォントを採用しており、Noto Serif JP を例に進めます

テーマエディタから「スタイル」を選択
スタイルを編集
タイポグラフィへ
フォントの管理
「フォントをインストール」タブを開きます
Noto Serif JP を検索
400 と 700 を選択、インストール (時間がかかります)

日本語フォントはデータが大きいので入れすぎないように

インストールが終わったらフォントライブラリを閉じます。

各要素のフォントを変えます
Noto Serif JP を指定、他も同様

保存してサイトを確認します。
細かい設定はとりあえずここでは置いときます。

ヘッダロゴ

次にヘッダやフッタなどの共通パーツの設定をしていきます。
サイト全体を通して繰り返し使用するものは「パターン」を利用します。

パターンを変更すればサイト全体で使用しているパーツが一括更新されます。

テーマエディタから「パターン」を選択
「ヘッダ」へ移動、画面右のテンプレートを選択

ヘッダをロゴのみの表示に変更してみます。

サイト名のテキスト部分を削除、こういうときは「ドキュメント概観」が確実
ロゴをアップロードします

サンプルで使用したロゴ (ダウンロード用)

Drag & Drop でメディアライブラリにアップロード
ロゴが設定されました
右の設定パネルから画像の幅を 90 px に指定、表示されていない場合は右上の「設定」ボタンで表示

いったん保存、確認します。

グローバルナビゲーション

グローバルナビゲーション(メインとなるメニュー)を変更します。
今度はテーマエディタから「ナビゲーション」へ移動します。

「テーマエディタ → ナビゲーション」へ移動
「⋮」から編集へ移動
ナビゲーション右の余白をクリックしてナビ全体を選択します
「+」ボタンからメニューを追加
すべてを表示
「ホームへのリンク」を追加
ナビゲーションに追加されたら位置を調整して左に移動

現時点ではページが他にないのでグローバルナビゲーションはいったん保存。
変更をサイトで確認しましょう。

キービジュアル

スライドは JavaScript 必須なので簡易的に固定のビジュアルを入れてみます。
ページの一番上になるようにブロックを追加します。

ドキュメント概観から最初のグルーブの一番上になるようにブロックを追加

段落ブロックに /cover と入力して「カバー画像」ブロックに変換します。

カバーブロックを使います

キービジュアル (ダウンロード用)

キービジュアルをアップロードします
カバー画像を左寄せにします(選択するブロックに注意)
スタイル設定からオーバーレイの色を変更します
あとでスタイル適用しやすいようにクラス属性を設定しておきます
キャッチフレーズを入力します

とりあえず講座名を入れてみます。

群馬県フロントエンドエンジニア育成講座
MAITSURU project 2024
ボタンを追加
ボタンラベルとリンクを設定(URL は入力後エンターか↵ボタンを必ず押すこと)
リンクは外部リンク(target=”_blank”)にします

外部リンク URL (コピペ用)

https://digijyo.gunma.jp/

いったん保存してページを確認します。

CSS

いよいよ学んだことを活かしていきましょう。

注意

提供した環境では追加 CSS が使えませんでした。
プラグインを導入していますので、そちらを利用してください。

テーマエディタに戻って「スタイル」に移動します
編集へ
追加CSSへ
ここに CSS を記述していきます

ここに直接記述していくのはさすがに不安なので、Visual Studio Code などのテキストエディタで制作していくのがいいと思います。
(うっかりブラウザを閉じたらと考えると…)

画面共有の都合上、講座ではブラウザに直接追記していきます

ヘッダを重ねる (CSS)

キービジュアルにヘッダを重ねます。
サイトを検証して、<header> タグ、カバー画像に z-index: 1 が指定されていることを確認。

プレビュー画面で検証しないように注意(タグの構造が変わるため)

header {
    position: fixed;
    left: 0;
    right: 0;
    z-index: 100;
}

ヘッダの背景色はテーマで指定してあるようなので「パターン」から編集します。

パターンへ
ヘッダを編集
最上位のグループを選択
背景色をクリア
テキストも白く
リンクをホバーしたときはアクセントカラー(グリーン)にします

ヘッダについてはここまででいったん保存して確認。

グローバルナビゲーション (CSS)

グローバルナビゲーションのリンクについては他のスタイルが優先されてしまうようなので、上書きする。
ついでにホバーの時に下線を消す指定も入れておきます。
ここでの header のスタイルは下記のようになりました。

header {
    position: fixed;
    left: 0;
    right: 0;
    z-index: 2;

    .wp-block-navigation .wp-block-navigation-item a {
        color: white;

        &:hover {
            color: var(--wp--preset--color--accent);
            text-decoration: none;
        }
    }
}

スクロールで背景を黒くするのは JavaScript が必要
mix-blend-mode: difference; でアレンジしてもよいかも

キービジュアルのサイズ (CSS)

常時画面いっぱいにしたいので先ほど指定したクラスを使って vw, vh で指定。

.key-visual {
    width: 100vw;
    height: 100vh;
}

保存して確認。

文字サイズ

既にテーマでスタイルが設定してあるので、スタイルの優先度に注意しながら上書きしていきます。
(既存のテーマをベースにするので試行錯誤が必要)

大きい見出しは important 指定されてるので、CSS から上書きせずにテーマの設定を使います。
(公式のテーマだからといってお行儀が良いとは限らない)

大きな見出しを選択した状態でブロックの設定パネルから文字サイズを設定

参考サイトのキャッチは font-size: 2.6rem で指定、root の font-size は 16px、今回のベーステーマの twenty twenty-four の root のフォントも 16px なので、rem なら同じ指定で良さそうです

大きな見出しの部分はセンタリング指定になっているので左寄せにしておく。

テキスト左寄せ

小さい方のテキストは参考サイトでは下記のようなスタイルが指定してあります。
CSS から指定しやすいようにクラス属性をつけておきます。

font-family: "Libre Baskerville", serif;
font-size: 1.3rem;
font-style:italic
color: #f3f0f0;
「設定パネル」に切り替えてからクラス属性を追記

小さいテキストの見出しを選択した状態で設定パネル(歯車アイコン)を開き、下部にある高度な設定でクラス属性が指定できます

「スタイル」の管理画面へ移動して「タイポグラフィ」から小さい見出し用のフォントを追加インストールします。

フォントを追加

Libre baskerville で検索

装飾用にイタリックのみインストール (英語のフォントは文字数少ないので軽い)

リードテキスト (CSS)

WordPress 管理画面からはこの部分だけピンポイントでフォント指定できないので、CSS でスタイルを指定します。
(先の CSS に追記)

あわせてテキストが折り返さないようにします。

.key-visual {
    width: 100vw;
    height: 100vh;
    text-wrap: nowrap;

    .sub-lead-text {
        font-family: 'Libre Baskerville', serif;
        font-size: 1.3rem;
        font-style: italic;
        color: #f3f0f0;
    }
}

ただ、このままだとモバイルではみ出てしまいます。

デベロッパーツールでモバイルでの見た目を確認

参考サイトと文字数も異なり、フォントサイズを小さくしても読みにくい。

画面幅に合わせると文字サイズが小さい

本来はデザイン段階で検討されているはずですが、今回は実装で対応します。
モバイルのときは改行をいれることで位置調整することにします。

対応方法は諸説あるので参考までに

テーマエディタに戻りテンプレートから大きい見出しを HTML に切り替えて修正します。

キャッチを HTML として編集します
<span> でテキストを3分割します

大きい見出しをビジュアル編集に戻して記事を保存します。

テキスト折り返し (CSS)

CSS に下記を追加します。
先ほど追記した <span> タグを display: block; にすることで意図した位置に改行を入れます。

ついでにサブリードのテキストを少し小さくします。

.key-visual {
    width: 100vw;
    height: 100vh;
    text-wrap: nowrap;

    .wp-block-cover__inner-container p:first-child span {
        display: block;
    }

    .sub-lead-text {
        font-family: 'Libre Baskerville', serif;
        font-size: 1rem;
        font-style: italic;
        color: #f3f0f0;
    }
}

p:first-child よりも管理画面からクラス属性を追加したほうがわかりやすい場合はそれでもOKです

パソコンのときは元の見栄えのほうが良いという場合はブレイクポイントで分けてもよいです。
(このために inline 要素である <span> を使用しました)

Twenty twnety-four のブレイクポイントが謎の 600px になっているので、それに合わせてみます。

ブレイクポイントは 640px, 766px, 1200px といった数値のほうがよく見かけます

.key-visual {
    width: 100vw;
    height: 100vh;
    text-wrap: nowrap;

    .wp-block-cover__inner-container p:first-child span {
        display: block;

        @media screen and (min-width: 600px) {
            display: inline;
        }
    }

    .sub-lead-text {
        font-family: 'Libre Baskerville', serif;
        font-size: 1rem;
        font-style: italic;
        color: #f3f0f0;

        @media screen and (min-width: 600px) {
            font-size: 1.3rem;
        }
    }
}

こんな感じで WordPress にスタイルを適用して、テーマだけでは実現できない独自デザインのサイトを構築していきます。

テンプレートと投稿の使い分け

ここまではテンプレートを編集してきました。
できればクライアントさんにはさわってほしくないものや特殊な構成でレイアウトが崩れてしまいそうなものはこちらに入れておいても良いと思います。

頻繁に更新する内容やクライアントさんが更新したい項目は、WordPress の投稿や固定ページにある方がお互いに都合が良いです。

テンプレートと投稿の棲み分けを少しだけふれておきます。

「テンプレート」に移動
さきほどつくったフロントページのテンプレートを選択
キービジュアルの下にブロックを追加

狙った場所にブロックを追加するのは難しいので「ドキュメント概観」やフッタの「パンくずリスト」をうまく使ってください

つかされた段落ブロックで /content と入力、または「+」ボタンから「コンテンツブロック」を追加します。

/content でコンテンツブロックを検索して追加
「+」ボタンから「テーマ →コンテンツブロック」を追加でも OK

いったんテンプレートは保存して固定ページに移動します。

固定ページに移動
フロントページを編集

固定ページはダッシュボードからも編集できます。
運用時はこちらから操作するほうがメインになります。

管理画面から固定ページを編集

固定ページにもテンプレートと同じ内容が登録されているので、調整していきます。
投稿のリスト表示はお知らせなどに使えるのでこれだけ残してあとは削除します。

下から2番目のブロックだけ残してあとは削除します。

複数選択してまとめて削除できます
残した部分のクエリループは投稿一覧を表示する設定にします (チェックを外すだけで OK)

お知らせの上に YouTube 動画を貼り付けてみます。

ブロックを追加
YouTube ブロックを検索
YouTube から共有リンクを選択
URL をコピー

YouTube URL (コピペ用)

サンプルで使用した URL はこちら。

https://youtu.be/b0I62zVZwL4?si=4lFyNqEL1FCGnpLr
ブロックにペースト、「埋め込み」ボタンを押します

URL はボタンを押して確定してから情報を取りに行くことに注意。
リンクなども確定しないと保存できないことがよくあります。

中央寄せにしておきます

パソコンサイズでは大きくなりがちなので CSS で調整します。

特に動画は画面いっぱいだと圧迫感があります (それがよい場合もあります)
ふたたび「スタイル」に移動
スタイルを編集へ
追加CSSへ

YouTube の幅を調整 (CSS)

埋め込みにはちょうど is-provider-youtube クラス属性がついているので、それを利用します。

.is-provider-youtube {
    max-width: 800px;
}

このような感じでもとからあるブロックをうまく使いながら、ポイントでカスタマイズしてサイトを構築していきます。

今回使用した CSS はこちらからダウンロードできます。(参考程度に)

完成したサイトの参考はこちら

他にも色んな機能がありますが、今回の講座ではここまでとします。

おまけ

途中まで用意していたので、スライドの参考までに。
JavaScript はできることが増えるのでぜひ習得してください!
プログラムはルールが全く異なるのでみんな習得に時間がかかります、しぶとく続けましょう。

スライドショー (ライブラリとサンプル画像)

動きを入れるには JavaScript が必要になりますが、ライブラリを使って簡略化します。
プログラマであれば違うアプローチになりますが、PHP を使用しない方法で実現してみます。(多少強引ではありますが)

Getting Started With Swiper

スライド用画像をダウンロード

制作したフロントページのテンプレートを選択
ドキュメント概観から最初のグルーブの一番上になるようにブロックを追加

デフォルトで段落ブロックになります。
ズレた場合はドキュメント概観から Drag & Drop で移動可能です。

段落ブロック右の「+」ボタンから「すべて表示」
検索窓に「html」と入力して「カスタムHTML」ブロックを追加

Swiper の設定をカスタムHTMLブロックへコピペします。
まずは CSS と JavaScript の読み込み。

<link
  rel="stylesheet"
  href="https://cdn.jsdelivr.net/npm/swiper@11/swiper-bundle.min.css"
/>
<script src="https://cdn.jsdelivr.net/npm/swiper@11/swiper-bundle.min.js"></script>

つづいてスライド本体となる画像を Swiper の指定に従い記述。
カスタム HTML ブロックへ先程の続きに追記。

div.swiper > div.swiper-wrapper > div.swiper-slide の階層構造になるように記述

<div class="swiper">
  <div class="swiper-wrapper">
    <div class="swiper-slide"><img src="https://sp-hp.com/wp-content/uploads/2024/10/slide-01.jpg"></div>
    <div class="swiper-slide"><img src="https://sp-hp.com/wp-content/uploads/2024/10/slide-02.jpg"></div>
    <div class="swiper-slide"><img src="https://sp-hp.com/wp-content/uploads/2024/10/slide-03.jpg"></div>
    <div class="swiper-slide"><img src="https://sp-hp.com/wp-content/uploads/2024/10/slide-04.jpg"></div>
    <div class="swiper-slide"><img src="https://sp-hp.com/wp-content/uploads/2024/10/slide-05.jpg"></div>
  </div>
</div>

画像は各自アップロードした URL に変えます。

URL はメディアから画像の詳細画面からコピーできます

最後に Swiper を実行する JavaScript を追記します。

<script>
const swiper = new Swiper('.swiper', {
  loop: true,
  effect: 'fade',
  speed: 2000,
  allowTouchMove: false,
  autoplay: {
    delay: 2500,
  },
});
</script>

loop: true → 最後のスライドのあとに1枚目に戻り無限ループさせる
effect: ‘fade’ → スライドの切り替えをフェードイン・アウト (省略すると横スライド)
speed: 2000 → 変化する時間 (transition) この場合フェードする時間をミリ秒で指定
allowTouchMove → スワイプ・ドラッグで移動させない
autoplay → 自動再生
delay: 2500 → スライドが停止している時間をミリ秒で指定 (autoplay とセットで指定する)

もう少し凝った動き
<script>
const swiper = new Swiper('.swiper', {
  loop: true,
  effect: 'creative',
  speed: 2000,
  allowTouchMove: false,
  autoplay: {
    delay: 2500,
  },
  creativeEffect: {
    prev: {
      opacity: 0,
      scale: 1.2,
    },
    next: {
      opacity: 0,
    },
  }
});
</script>

effect: ‘creative’ → 動きをカスタマイズ
creativeEffect → カスタマイズ指定
prev, next → 変化の前後で指定
translate: [x, y, z]
rotate: [x, y, z]
opacity: number
scale: number

サンプルは前のスライドは拡大しながら透明に、次のスライドは透明から不透明に。
prev → current, current → next の変化と考えると理解しやすい。
current は opacity: 1, scale: 1.0

参考

WordPressフルサイト編集の使用方法(徹底解説) | Kinsta