Lazy BlocksのRepeater属性が空になる不具合の原因と対処法【開発元に確認済み】

LIVE DEMO — この枠も自作です このサイトの装飾パーツ、1つも買っていません 料金表・ボタン・ボックス…全部自作。同じものを自分のサイトでも再現できる実物デザイン集を公開中

実物デザイン集を見る

この記事は、当サイトの運営者が実際にlazyblocks.comへ問い合わせ、開発元からの回答を受けた上で執筆しています。開発元の発言として引用している部分と、当サイトが実機で確認した内容は本文中で区別しています。

Lazy Blocksでブロックを作るとき、コントロールの設定画面ではなく、記事本文に直接ブロックのJSONコメント(<!-- wp:lazyblock/xxx {...} /-->)を手で書くことがあります。その際、Repeater(繰り返し)系のコントロールを使うブロックで、値を正しく設定したはずなのにフロント表示が空になる、という現象に遭遇しました。実際に開発元(lazyblocks.com)に問い合わせて原因を確認できたので、症状・原因・正しい書き方をまとめます。

先に結論だけ書くと、これはLazy Blocks Pro本体の広範な不具合ではありません。通常どおりブロックエディタ(Gutenberg)でブロックを編集・保存している限り発生しません。この記事が対象にしているのは、ブロックのJSONを手作業で本文に埋め込んでいる人(このサイトで紹介しているような自作ブロックの運用をしている方)向けの注意点です。

Index

症状

Repeaterコントロール(コントロール一覧の詳細はLazy Blocks使い方完全ガイドを参照)を使ったブロックで、本文にこのようなブロックコメントを直接書いたとします。

動かない書き方(生のJSON配列をそのまま埋め込んだ例):

<!-- wp:lazyblock/my-block {"my_repeater":[{"text":"a"},{"text":"b"}]} /-->

この状態で保存・公開すると、ブロックのPHP側では$attributes['my_repeater']が空として扱われ、リピーターの中身が何も出力されません。エディタのプレビューでも実際のフロント表示でも同様に空になります。

原因(開発元に確認済み)

lazyblocks.comのサポートに問い合わせたところ、次のような回答をいただきました(要約)。

  • Repeater系のコントロールは、ブロックの属性スキーマ上type: "string"として登録されている
  • 本文のブロックコメントにその値を生のJSON配列として書くと、WordPress標準の属性バリデーションが型不一致とみなして値を破棄し、空のデフォルト値に置き換えてしまう
  • ブロックエディタで通常に作成・保存した場合は、エディタ側が正しくJSON文字列としてエンコードしてから保存するため、この問題は起きない

つまり原因は、Lazy Blocks Pro側の恒常的な不具合というより、Repeaterの値をブロックコメントに直接手書きする際のJSONの書式(生配列 vs エンコード済み文字列)にありました。

正しい書き方

Repeaterの値は、配列そのものではなく、JSONエンコードしてエスケープした文字列として書きます。

<!-- wp:lazyblock/my-block {"my_repeater":"[{\"text\":\"a\"},{\"text\":\"b\"}]"} /-->

my_repeaterの値がダブルクォートで囲まれた1つの文字列になっており、内部の"\"でエスケープされている点がポイントです。この形式であれば、通常のブロックエディタで保存した場合と同じ構造になり、正しくレンダリングされます。

すでに空表示になってしまったページがある場合

開発元によると、該当ページをブロックエディタで一度開いて再保存するだけで直るとのことです(エディタが正しい形式で保存し直してくれるため)。本サイトでは、検証用に作成したテストページのみでこの症状を確認しており、検証後にすべて削除済みです。本番公開中の記事でこの症状が出ているものは確認していません。

今後の修正予定

開発元は、エンコード済み文字列と生配列の両方を受け付けるよう、Repeaterコントロール側の受け入れ範囲を広げる修正を既に用意しており、テスト付きで次回リリースへの反映を予定しているとのことです(nk-crew/lazy-blocks PR #377)。リリースされ次第、本記事も更新します。

今回の内容は2026-07-22に開発元サポート窓口(lazyblocks.com/support/)へ報告し、同日中に回答をいただいた内容に基づいています。

💡 この記事で触れたLazy BlocksのRepeaterブロックも、実際にはすべてLazy Blocks(Pro)で自作できます。 作り方はこちら

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

この記事を書いた人

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

WordPress歴7年。近年はLazy Blocks(Pro)を使ったオリジナルブロックの自作・開発にも力を入れており、このブログで使っているダウンロードカードや料金表などの装飾パーツも、実際に自分でJSONを組んで実装したものです。

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

Index