TCD のテーマのページビルダーで記事を直していて、更新を続けて 2 回押したところ、公開ページから本文がすべて消えました。タイトルと説明文は新しくなっているのに、ページビルダーで作った見出し・本文・画像がありません。編集画面を開き直しても、ページビルダーは空でした。
調べると、保存のしくみと、リビジョンに中身が残っていることが分かったので、原因と戻し方をまとめます。
なぜ消えたか
TCD のページビルダーは、保存のときに、編集画面から送られてきたページビルダーの値をそのまま保存します(テーマの pagebuilder/pagebuilder.php の save_page_builder_metabox)。中身が空でも、送られてきた値で上書きします。
更新を続けて 2 回押すと、次の順で本文が消えます。
- 1 回目の更新で、正しい中身が保存される。
- 保存のあと、編集画面を読み込み直す。
- 読み込みの途中(ページビルダーの部品がまだ画面に出ていない)で、2 回目の更新が効く。
- 空のページビルダーが送られて、そのまま保存される。これで本文が消える。
更新を押したら、「投稿を更新しました」が出るまで待ちます。画面が切り替わる途中で、もう一度押さないようにします。
リビジョンには中身が残っている
WordPress は、更新のたびにリビジョン(それまでの版)を残します。TCD のページビルダーは、保存のときにリビジョンにもページビルダーの値を書きます。そのため、消える前の版のリビジョンに、ページビルダーの中身が残っています。
ただし、管理画面の「リビジョン」の画面で「このリビジョンを復元」を押しても、戻るのはタイトルと本文の欄だけで、ページビルダーの中身は戻りません(ページビルダーは本文の欄ではなく、カスタムフィールド page_builder に入っているため)。そこで、データベースでコピーします。
戻し方(phpMyAdmin で)
データベースを直接書き換えるので、レンタルサーバーの管理画面などで、必ずバックアップを取ってから行います。
リビジョンを探す
記事の ID(例:1246)は、編集画面の URL の post= の後ろの数字です。
-- 記事(ID 1246)のリビジョンと、ページビルダーの値の長さを見る SELECT p.ID, p.post_date, LENGTH(m.meta_value) AS page_builder_length FROM wp_posts AS p LEFT JOIN wp_postmeta AS m ON m.post_id = p.ID AND m.meta_key = 'page_builder' WHERE p.post_parent = 1246 AND p.post_type = 'revision' ORDER BY p.ID DESC;
結果の見方(例)です。page_builder_length が入っていて、消える前の日時のリビジョンを選びます。
| ID | post_date | page_builder_length | 見方 |
|---|---|---|---|
| 1402 | 2026-10-11 08:31 | 812 | 消えたあと(中身が空で保存された版) |
| 1400 | 2026-10-11 08:31 | 8092 | これを選ぶ(消える直前の版) |
| 1399 | 2026-10-11 08:30 | (空) | ページビルダーの値がない版(使えない) |
新しいほうから見て、長さが急に小さくなる手前のものが、消える前のバージョンです。
リビジョンの値を記事にコピーする
-- リビジョン(ID 1400)のページビルダーの値を、記事(ID 1246)にコピーする UPDATE wp_postmeta AS pm JOIN wp_postmeta AS src ON src.post_id = 1400 AND src.meta_key = 'page_builder' SET pm.meta_value = src.meta_value WHERE pm.post_id = 1246 AND pm.meta_key = 'page_builder';
| SQL の中 | 変えるもの |
|---|---|
| 1400 | 上で選んだリビジョンの ID |
| 1246 | 記事の ID |
| wp_ | データベースの表の頭の文字(wp-config.php の $table_prefix) |
値は PHP のシリアライズの形なので、手で書き換えずに、このように丸ごとコピーします。
確かめる
公開ページを開いて、見出し・本文・画像が戻っているかを見ます。キャッシュのプラグインを使っているときは、キャッシュを消してから見ます。
確かめた結果
作業環境(WordPress 7.1・TCD のテーマ)で、リビジョンの値と記事の値が違う記事を選び、上の UPDATE を試しました。1 行が書き換わり、記事の値はリビジョンの値と同じになり、PHP で読める形(unserialize できる)のままでした(試したあとは元に戻しました)。
リビジョンの中には、ページビルダーの値を持たないものもありました(自動保存などで作られたもの)。
まとめ
- TCD のページビルダーは、送られた値をそのまま保存するので、読み込み中に更新すると中身が空になることがある。更新は 1 回だけ押す。
- 消えても、リビジョンにページビルダーの値が残っていることが多い。「リビジョンを復元」では戻らないので、データベースで page_builder をコピーする。
- データベースを触る前に、必ずバックアップを取る。


