Lazy Blocks使い方完全ガイド【日本語決定版】インストールからPro機能まで

この記事について
断片化した情報、ここに全部集約しました

公式ドキュメントは英語のみ。ネット上の日本語記事の多くは古い実装方法のまま止まっています。

  • 全コントロールタイプを網羅
  • 2025年6月アップデート(useBlockProps)対応済み
  • エラー対処法まで掲載
無料版から始められます
Index

1. インストールと初回ブロック作成

インストール

まずはLazy Blocks公式サイトで最新の機能・料金プランを確認しておきましょう。無料版・Pro版の違いもここで一通り把握できます。

確認したら、WordPress管理画面の「プラグイン」→「新規追加」で「Lazy Blocks」を検索し、インストール・有効化します。有効化すると、左メニューに「Lazy Blocks」という項目が追加されます。

なお、条件分岐やPosts/Taxonomy/Users連携などPro版の機能が最初から必要だと分かっている場合は、無料版を入れる前に公式サイトのPro版ページから直接申し込む方が二度手間になりません。

初めてのブロックを作る

STEP 01
「Lazy Blocks」→「Add New」をクリック
「Lazy Blocks」→「Add New」をクリック
STEP 02
テンプレート選択
テンプレート選択
STEP 03
ブロックのタイトルを入力(例:お知らせボックス)
ブロックのタイトルを入力(例:お知らせボックス)
STEP 04
追加オプションを設定する
追加オプションを設定する
STEP 05
Slugを確認・編集
(半角英数字。PHP側で呼び出す際のキーになります)
Slugを確認・編集
STEP 06
「Controls」タブでフィールドを追加
ここで入力フィールド条件などの設定を行います。
「Controls」タブでフィールドを追加

この時点で保存すれば、投稿画面の「+」ブロック追加メニューに、作成したブロックが表示されるようになります。

2. コントロールの種類一覧

Lazy Blocksには複数のコントロール(入力フィールドの種類)が用意されています。主なものは以下の通りです。

スクロールできます
コントロール用途備考
Text一行テキスト見出しや短い文言
Textarea複数行テキスト概要文など
Rich Textリッチテキスト(WYSIWYG)太字・リンクなどの装飾が可能。無料版で使用可
Number数値
Checkbox / Toggleチェックボックス・トグル表示/非表示の切り替え等
Radio / Select単一選択
Image / Gallery画像・複数画像メディアライブラリ連携
URLリンクURL
Color Pickerカラーピッカー
Date / Time日付・時刻
Rangeスライダー
Repeater繰り返しフィールド無料版で使用可能。詳細は次章
Posts / Taxonomy / Users投稿・タクソノミー・ユーザー選択Pro版限定
Message / Code Editor説明メッセージ・シンタックスハイライト付きコード欄Pro版限定

無料版とPro版の境界で特に重要なのは、Repeater(繰り返しフィールド)が無料版で使えることです。ACFではこの機能はPro版限定のため、ここがLazy Blocksを選ぶ大きな理由になります。

3. Repeater Controlの使い方

基本設定

Controlsタブで「Repeater」を追加し、その中にサブフィールド(Text、Image など)を好きなだけ追加します。フロントエンド側では、追加したサブフィールドの数だけ繰り返し出力されます。

注意点:ネストされたリピーターは非対応

リピーターの中にさらにリピーターを入れる「入れ子構造」は公式に非対応とされています。
複数の独立したリピーターに分割する設計を検討してください。

4. 出力方法の使い分け(PHP/Handlebars/テーマテンプレート)

Lazy Blocksでは、ブロックの出力方法を3種類から選べます。

方法向いているケース
PHP条件分岐やエスケープ処理など、柔軟な制御が必要な場合。本サイトのサンプルコードもこの形式
HTML + Handlebarsシンプルな出力で、テンプレートエンジン的な書き方をしたい場合
テーマテンプレートファイルを指定既存のテーマ内のPHPファイルとしてブロックコードを管理したい場合。バージョン管理(Git)と相性が良い

重要な注意点
Lazy BlocksのPHP出力コードはeval()によって実行される仕様です。そのため、名前付きの関数宣言(function my_func(){}のような書き方)をコード内に含めることはできません。無名関数や直接処理を書く形にしてください。

5. ラッパーdiv制御の最新方法

Lazy Blocksは初期状態で、出力したブロックを自動的に<div>で囲みます。このラッパーdivを削除・制御したい場合の方法が、2025年にアップデートされました。

古い方法(非推奨)
PHP
add_filter('lzb/block_render/allow_wrapper', '__return_false');

このフィルターは2025年6月リリースのv4.0.0で一度削除されました。
既存ブロックが壊れるのを防ぐためv4.0.1で復活していますが、現在は非推奨扱いで、管理画面に移行を促す通知が表示されます

ネット上の解説記事の多くは、いまだにこの方法を「正解」として紹介していますが、情報が古いので注意してください。

現在の推奨方法

ブロックコード側でuseBlockProps()相当の仕組みを使い、自分でラッパー要素を制御する方式に移行することが推奨されています。新規にブロックを作る場合は、この最新の方式に沿って設計することをおすすめします。

6. InnerBlocksの正しい使い方

子ブロックを内包できる「InnerBlocks」機能には、2つの実装方法があります。

旧方式:Inner Blocksコントロール(非推奨)

以前はControlsタブから「Inner Blocks」という項目を追加するだけで使えましたが、2023年6月リリースのv3.4.0で非推奨になり、将来のアップデートで削除される予定です。新規に作るブロックでは使わないでください。

現行の推奨方式:<InnerBlocks />コンポーネント

Controlsタブでは追加しません。代わりに、ブロックの出力コード(PHP/HTML+Handlebars/テーマテンプレート)内に直接<InnerBlocks />というタグを書き込みます。

PHP
<div class="custom-layout">
  <h3>Content Section</h3>
  <InnerBlocks allowedBlocks="[ 'core/paragraph', 'core/image' ]" />
</div>

allowedBlocks:中に配置できるブロックの種類を制限

template:あらかじめ決まった構成をテンプレートとして用意

1つのブロックにつき<InnerBlocks />は1つだけ使用可能

移行手順
①ブロックの出力コード(フロントエンド・エディタ両方)に<InnerBlocks />を追加
②Controlsタブから旧「Inner Blocks」コントロールを削除、の2ステップです。

ラッパーdivの制御:InnerBlocksエリアにも自動でラッパーdivが付きます。消したい場合は次のフィルターを使います(第5章で紹介したブロック全体用のallow_wrapperフィルターとは別物です)。

PHP
add_filter( 'lazyblock/あなたのブロックslug/allow_inner_blocks_wrapper', '__return_false' );
つまずきやすいポイント

PHP/テーマテンプレートで<InnerBlocks />を使う場合、ブロック設定の「Code output in editor」を「Display always」にしないと、エディタ上で子ブロックを追加する操作欄が表示されません。ここでつまずく例が公式サポートフォーラムでも複数見られます。

7. エクスポート・インポート

作成したブロックは、Lazy Blocksの管理画面から個別に、あるいはまとめてJSON/PHP形式でエクスポートできます。

  • JSON形式:他のサイトへ同じブロックを移植したいときに便利。管理画面からインポート可能
  • PHP形式:テーマやプラグインのコードとして直接組み込みたいときに使用

案件ごとに同じようなブロック(お知らせボックス、スタッフ紹介など)を使い回すことが多い制作者にとって、このエクスポート機能は特に有用です。

自分専用の「ブロック部品ライブラリ」を育てていくような使い方ができます。

ここまでは無料版だけで完結
実は、ここから先が本当に効いてきます

条件分岐・投稿連携・CSS個別管理。実務で「あったらいいな」が揃うのが次に紹介するPro版です。

  • 条件分岐で編集画面がスッキリ整理される
  • 投稿・カテゴリ・ユーザーとの連携が可能に
  • ブロックごとにCSS/JSを持ち歩ける
年額$49〜、1サイトから

8. Pro版でできること

無料版だけでも実務レベルのブロックは十分作れます。ただ、いくつか実際に使ってみると「これは地味に効く」と感じるPro限定機能があるので、具体的な場面とあわせて紹介します。

Controls Conditions:入力欄を出したり隠したりできる

例えば「CTAボックス」ブロックを作ったとします。
「セール中かどうか」のトグルを用意して、オンのときだけ「割引率」の入力欄を表示する——こういう条件分岐が無料版だと組めません。

結果、使わない設定項目まで常にズラッと並ぶ、少し不親切な編集画面になりがちです。

Controls Conditionsを使うと、必要なときだけ必要な項目が現れる、まるで市販のプラグインのような編集画面が作れます。自分だけが使うならまだしも、クライアントやチームメンバーに編集を任せる場面では、この差はかなり大きいです。

一番人気
料金表サンプル
¥2,200 /月
¥1,500 /月
年間契約で32%節約 ¥18,000/年

Posts / Taxonomy / Users Control:サイトの中身と直接つながる

無料版のフィールドは基本的に「その場でテキストや画像を入力する」ものですが、Pro版ではサイト内にすでにある投稿・カテゴリ・ユーザーを選んでフィールドに入れられます。

「関連記事」ブロックで実際の投稿から3つ選ぶ、「執筆者紹介」ブロックでユーザー一覧から選ぶ——ACFの投稿オブジェクト・ユーザーフィールドに相当する機能で、ここが使えるようになると、ACF・SCFからの乗り換えでも機能面の不満がほぼなくなります。

Styles & Scripts:ブロックごとにCSS/JSを持ち歩ける

ブロックのビルダー画面内で、そのブロック専用のCSS・JSを直接書いて管理できる機能です。通常、ブロックの見た目を整えるにはテーマのfunctions.phpやスタイルシートに別途コードを追記する必要がありますが、この機能を使うとブロック自体が「見た目込みで完結したパーツ」になります。

案件をまたいで同じブロックを使い回したい人にとっては特に相性が良く、エクスポートした1つのJSONファイルの中にCSS/JSも含まれるので、次の案件でインポートするだけですぐ同じ見た目で使えます。

Yuu

PHPの中に直接<style>タグでCSSを書くと、ブラウザにキャッシュされないし、 同じブロックを1ページで何回も使うとCSSが毎回重複して出力されちゃうんですよね。 地味に表示速度に響くので、サイトを軽く保つ意味でもこの機能は結構ありです。

Panels & Dividers:編集画面をグループ分けして整理できる

入力項目が10個、20個と増えてくると、編集画面は縦に長くなり見づらくなります。Panels & Dividersを使うと、「基本設定」「デザイン設定」「上級者向け設定」のように項目をグループ化し、パネルごとに折りたたんで表示できます。

複雑なブロックほど恩恵が大きく、特にクライアントに納品するようなブロックでは、必要な項目だけをパッと見つけられる画面にできるかどうかで、後々の「使い方がわからない」という問い合わせの数が変わってきます。

SEO Enhancements:Yoast・Rank Mathとの相性問題を解消

意外と見落とされがちですが、独自ブロックの中に書いた文章は、Yoast SEOやRank Mathのコンテンツ解析(キーワード出現率や読みやすさのチェックなど)にうまく認識されないことがあります。SEO Enhancementsは、この解析対象にカスタムブロックの内容もきちんと含められるようにする機能です。SEOを意識した記事作りをしている人には地味に重要なポイントです。


こうして並べてみると、Pro版は「無料版でできないことを無理やり足す」というより、自分やクライアントが毎日触る編集画面そのものを快適にする方向の機能が中心だと分かります。無料版でリピーターまで使えることを考えると、コスパは十分に見合っていると思います。

料金プラン

プラン料金(年額)対象サイト数
Personal$491サイト
Freelancer$16920サイト
Agency$299無制限

参考までに、ACF Proは$49(1サイト)〜$249(無制限)という価格帯です。Lazy Blocksは無料版の時点でリピーター機能を含んでいるため、「まず無料で試して、条件分岐や投稿連携が必要になったらPro版を検討する」という進め方が現実的です。

Pro版の申し込みは、プラグイン管理画面内の「Upgrade」ボタンからでも可能ですが、こちらの公式サイトのPro版ページから直接申し込んでいただくと、当サイトの検証・記事作成の励みになります。機能は同じなので、お手数でなければご協力いただけると嬉しいです。

9. よくあるエラーと対処法

ブロックのプレビューで「重大なエラーが発生しました」と表示される

PHP出力コードの構文エラーが原因であることがほとんどです。wp-config.phpに以下を追記してデバッグログを有効化し、/wp-content/debug.logFatal error:から始まる行を確認してください。

PHP
define( 'WP_DEBUG', true );
define( 'WP_DEBUG_LOG', true );
特によくある原因
  • コード内に名前付き関数を宣言してしまっている(eval()実行の制約に抵触)
  • <?phpタグの開始・終了位置がずれている
  • Repeaterのスラッグ名と、PHPコード内で参照している配列キーが一致していない
保存したのに投稿画面にブロックが表示されない

ブロックのCategory設定が正しいか、ブラウザのキャッシュが残っていないかをまず確認してください。

それでも解決しない場合、レンタルサーバーのWAF(Webアプリケーションファイアウォール)設定が原因になっているケースがあります。 ConoHa WINGやエックスサーバーなど、管理画面からWAFを有効化できるサーバーでは、PHPコードを編集・保存する際にWAFが「不正な操作」と誤検知し、正常に保存できないことが確認されています。

PHPコントロールの内容を編集する際は、一時的にサーバー管理画面からWAFをオフにしてから保存し、完了後に再度オンに戻す、という手順で解決するケースが多いです。保存がうまくいかない・保存したはずの内容が反映されないという場合は、まずこれを疑ってみてください。

無料プレゼント
プロ品質ブロックのJSONテンプレート、無料配布中

この記事で解説した内容を、インポートするだけで使える形にまとめました。

  • コピペ不要、インポートするだけ
  • Panel・Repeaterなど実装済みブロックが手に入る
  • メールアドレス登録も不要
メールアドレス登録不要

まとめ

Lazy Blocksは無料版だけでもリピーター機能を含む実務レベルのブロックが作成できる、数少ない選択肢です。ラッパーdiv制御やInnerBlocksの仕様は今後もアップデートされていく可能性があるため、このページも随時更新していく予定です。

よかったらシェアしてね!
  • URLをコピーしました!
  • URLをコピーしました!

この記事を書いた人

はじめまして。当ブログでは、毎日の作業や生活に「+α(プラスアルファ)」の価値を提供する、実用的なツールや手法を研究・発信し、その中から本当に効果のあったものを厳選してご紹介。成功事例だけでなく、失敗から学んだ教訓も率直にシェアすることで、読者の皆様が最短ルートで「使える知識」を得られることを目指しています。

「実践者の視点」を大切にしながら、根拠に基づいた情報をお届けします。私自身の検証プロセスを通じて得た、リアルな知見と具体的な活用法をぜひご活用ください。

Index