WordPressプラグイン「Lazy Blocks」でフロー(ステップ)用のカスタムブロックを作成

WordPressプラグイン「Lazy Blocks」でフロー(ステップ)用のカスタムブロックを作成

ブログを運用していると、割とフロー(ステップ)デザインを使用するケースが多いなと感じていました。

現在、記事の編集作業はブロックエディタを使用しているので、カスタムHTMLブロックに直接HTMLを書き込んでCSSで見栄えを整えればいいかとも考えました。

あとは、ブロックエディタを自作するという方法も考えたのですが、正直ちょっと面倒だなとも思ったので、拡張性なども含め、今回は管理画面内でブロックエディタを作成できるLazy Blocksというプラグインを利用することにしました。

目次

Lazy Blocksのインストール

まず、管理画面のプラグインページにあるプラグインを追加をクリックし、「プラグインを追加」ページを開きます。そして、プラグインの検索に「Lazy Blocks」と入力します。

プラグインの検索

「Custom Block Builder – Lazy Blocks」が検索結果に表示されますので今すぐインストールをクリックします。

Lazy Blocksのインストール

インストール完了後、有効化をクリックします。

カスタムブロックの作成

有効化ができれば、管理画面の左メニューにLazy Blocksが追加されるのでクリックして移動します。その後、Add Blockをクリックします。

カスタムブロックの追加

テンプレートの選択

初めに、あらかじめ用意されている4つのテンプレートから1つを選択します。

Basic
基本的なコントロール機能が揃っているシンプルなブロックテンプレートで、以下のテンプレートを使用しないのであればこれを選択しれば問題ないと思われます。
Hero
いわゆる「ヒーローセクション」と言われるものを作成するためのテンプレートで、Webサイトのトップ部分やLPの最上部に配置されるバナーやメッセージエリア用のテンプレートです。
Testimonials
「お客様の声」を作成するためのテンプレートです。
Alert
アラートや通知といったブロックを作成するためのテンプレートです。

今回はフロー(ステップ)用のブロックを作成するということで「Basic」テンプレートを使用します。

Basicテンプレートを選択

タイトル入力とアイコン選択

タイトル入力とアイコンの選択を行います。アイコンに関しては、お好きなものを選択してください。タイトルは「lazyblock/〇〇〇」といった形でスラッグになるようなので、ここは英語で「Flow」と入力しています。

タイトルとアイコンの選択

タイトル入力とアイコンの選択が完了したら、画面下のContinueをクリックします。

カテゴリー選択

作成したブロックエディタをどのカテゴリーに含めるかを選択します。絶対にこれはこのカテゴリーにしなければいけないという決まりもありませんので、デフォルトで選択されている「テキスト」を選択しました。

今後、カスタムブロックを増やしていく予定があるのであれば、作業しやすいようにカテゴライズした方が楽かもしれませんので、その時は適宜選択してください。

カテゴリーの選択

また、このページでは「KEYWORD(キーワード)」と「DESCRIPTION(説明文)」を入力する欄がありますが、ここでは特に何も入力せずに進めていきます。

使用する機能の選択

今回はフロー(ステップ)用のブロックを作成するということなので、繰り返し入力可能なコントロールを使用します。

機能の選択と設定

Content Controlsをクリック
②すぐ下の「+」ボタンをクリック
③ここをクリックしてLABELに「フロー」と入力
NAMEに「flow-wrap」と入力
TYPEで「繰り返し」を選択
ROW LABELに「step{{#}}」と入力

これで、繰り返し入力するための準備ができました。注意点としては④で入力する内容ですが、ここはphpで表示するという観点から英語で入力しています。また、ここの入力内容は他と同じものにならないように注意してください。

フローで入力する項目の選択と設定

次に各フローで入力する項目を設定していきます。入力する項目は「タイトル」「コンテンツ」「画像」を入れようと思います。

まず、Show Child Controlsをクリックします。

Show Child Controlsをクリック

Show Child Controlsをクリックすると、「+」のボタンが表示されるのでクリックをしてタイトルを入力する項目を設定します。

タイトルの入力欄の設定

追加した項目をクリックしてLABEL NAME TYPEをそれぞれ設定または選択をします。

タイトル入力欄の設定

LABELに「タイトル」と入力
NAMEに「flow-title」と入力
TYPEは「テキスト」を選択

コンテンツ入力欄の設定

次に、説明や解説などのテキスト情報を入力する欄の設定を行ないます。先ほどのタイトル欄の作成と同じように「+」ボタンをクリックします。

コンテンツ入力欄の設定

LABELに「コンテンツ」と入力
NAMEに「flow-contents」と入力
TYPEは「クラシックエディター(WYSIWYG)」を選択

ここの部分は、コンテンツを入力するだけの設定にし、この後に画像を挿入する欄を作成する予定でした。ただ、そうすると「画像のあとに説明文などを付け足したい」といったケースに対応がしづらくなると考えました。

そこで、比較的以前からWordpressを利用している人にも馴染みがあるクラシックエディタースタイルを選択しておけば、画像だけ・説明文だけ・画像と説明文の両方といったケースにも対応ができるので、よりフレキシブルなフローの作成ができるかと思います。

フロー用ブロックの表示設定

フロー表示用のブロックで何を入力するかまでの設定ができました。ここからは入力した内容を表示する際の設定になります。Lazy Blocksプラグインでは作成したブロックの内容を表示させる方法は以下の3種類です。

HTML + Handlebars構文
HandlebarsとはJavaScriptの値を参照にしてHTMLを生成するテンプレートエンジンです。Lazy Blocksでは{{control_name}}のような形で表示することができます。
php
phpに関してはおそらく説明の必要はないかと思います。Wordpressをカスタマイズした経験があるのであれば、最初からphpで表示・出力するための内容を書いた方が早いかもしれません。
テーマテンプレート
これはテーマファイル内にblocksというフォルダを作成し、そのフォルダ内にblock.phpファイルを配置し、そこで表示・出力のためのソースを書き込んでいくという方法です。

上記3つの方法があるのですが、今回は管理画面内でphpを直接入力する方法で進めていきます。

ブロックの表示設定

PHPを選択
②エディタ部分にphpを入力

エディタ部分に入力したphpは以下のとおりです。

<php?
if(isset($attributes['flow-wrap']) && is_array($attributes['flow-wrap'])){
  $repeat = '';
  $num = 1;
  foreach($attributes['flow-wrap'] as $item){
    $title = $item['flow-title'];
    $contents = $item['flow-contents'];

    $repeat .= <<<EOF
  <div class="flow-box">
    <div class="step-num"><span>{$num}</span></div>
    <dl class="flow-inner">
      <dt>{$title}</dt>
      <dd>{$contents}</dd>
    </dl>
  </div>
EOF
;
    $num++;
  }

  $html = <<<EOF
<div class="flow">
  {$repeat}
</div>
EOF
;
  echo $html;
}

CSSで見た目を整える

次に、CSSで見た目を整えていきます。Lazy BlocksのPro版であれば、管理画面内にCSSを直接書き込めばいいのですが、無料版ではテンプレートファイルのstyle.cssなどのファイルにCSSを書き込んでやる必要があります。

今回はCSSファイルへ以下のように追記しました。

.flow{
  margin: 25px 0 45px;
  .flow-box{    
    display: flex;
    justify-content: center;
    padding: 0;
    border-bottom: solid 1px #e1e8ed;
    margin-bottom: 20px;
    .step-num{
      color: #f26522;
      font-weight: bold;
      text-align: center;
      width: 70px;
      position: relative;
      margin-top: 0;
      >span{
        font-size: 1.8em;
        line-height: 0.9;
      }
      &::before{
        content: "STEP";
        display: block;
        font-size: 0.75em;
        margin-bottom: 1px;
        letter-spacing: 1px;
      }
      &::after{
        content: "";
        display: block;
        width: 1px;
        height: calc(100% - 100px);
        background-color: #bfbfbf;
        position: absolute;
        left: 0;
        right: 0;
        top: 75px;
        margin: auto;
      }
    }
    .flow-inner{
      width: calc(100% - 70px);
      margin-top: 0.8em;
      dt{
        font-size: 1.125rem;
        font-weight: bold;
        line-height: 2;
        margin-bottom: 10px;
      }
      dd{
        margin: 0;
      }
    }   
  }
}

ひとまず、これでフロー用のカスタムブロックが出来上がりました。あとは見た目の調整などを行なえば完成です。

フロー用カスタムブロックの表示

画像やテキストは適当に入れたものですが、デザイン的に狙った形になったのでこれで良しとします。

今回は、Lazy Blocksプラグインを使ってフロー用のカスタムブロックを作成するという内容でしたが、これを応用して「リスト(ul li)用」であったり「商品詳細リスト」など色々作成できるかと思います。

カスタムブロックを作成したいけど、わざわざNode.jsをインストールして開発環境を整えてまではちょっと…という方であればLazy Blocksプラグインはおすすめです。無料版でもアイデア次第でいろいろなブロックが作成できるので、ぜひチャレンジしてみてください。

Related posts