下書きを一括編集でまとめて公開したのに、トップページにもアーカイブにも出てこない。そういう報告が 9/8 に wp.org のフォーラムに上がり、同じ日に開発側が原因を特定しました。W3 Total Cache の Object Cache が、管理画面から公開したときの「一覧が変わった」という印を既定の設定では保存しないので、トップの一覧が古いまま残ります。報告者の環境は Redis でしたが、Redis の無い手元の Docker でも同じことが起きました。先に、やることだけ。
- W3 Total Cache の「パフォーマンス → オブジェクトキャッシュ」で「wp-admin リクエストのキャッシュを有効にする」をオンにする
- すぐに設定を触れないなら、一括編集や Classic Editor で公開したあとに、どれか 1 件をブロックエディターかクイック編集で保存し直す
- 公開したら、ログインしていないブラウザーでトップと一覧ページを見て、新しい記事が出ているか確認する
やることは設定を 1 つオンにするだけ
その設定をオンにすると、一括編集で公開した記事がそのままトップに出ます。Docker に WordPress 7.1 と W3 Total Cache 2.10.6 を入れ、Object Cache を既定のまま(エンジンは Disk、Redis なし)有効にして、投稿一覧の一括編集で下書き 3 件を「公開済み」に変えました。管理画面では 3 件とも公開済みになり、記事の URL を直接開けば表示されるのに、トップページの一覧は古いままでした。

| 設定 | 一括編集で公開したあとのトップページ |
|---|---|
| 既定のまま(wp-admin リクエストのキャッシュはオフ) | 古い一覧のまま |
| 「wp-admin リクエストのキャッシュを有効にする」をオン | 公開した記事がすぐ出る |
| Object Cache を無効にする | 公開した記事がすぐ出る |
Object Cache を切っても直りますが、それでは Object Cache を入れた意味が無くなります。設定を 1 つオンにする方が、他は変えずに済みました。この設定は開発側が issue で回避策として挙げているものと同じです。
対象は 2.7.6 以降で Object Cache を使うサイト
W3 Total Cache を入れていれば全部、という話ではありません。手元で条件を 1 つずつ外して確かめると、次の 3 つが揃ったときだけ起きました。
- W3 Total Cache が 2.7.6 以降
- Object Cache を有効にしていて、「wp-admin リクエストのキャッシュを有効にする」がオフ(既定)
- 投稿一覧の一括編集か、Classic Editor の「公開」ボタンで公開している
3 つ目で分かれます。ブロックエディターで公開した記事は、同じ設定のままでもすぐトップに出ました。クイック編集も同じ経路ではないと開発側が書いています。逆に言うと、ブロックエディターしか使っていないサイトはこの件に当たりません。Object Cache のエンジンは関係なく、報告者は Redis、手元は Disk で同じ症状でした。WordPress の版も関係ありません。

1 つ目の版について補足すると、2.7.5 に戻して同じ手順を踏むと、一括編集で公開した記事がすぐトップに出ました。8/20 の記事で 2.10.5 への更新をお伝えしましたが、あれは別件の脆弱性の話で、2.10.5 でも 2.10.6 でも今回の症状はそのまま起きます。
原因は開発元が特定済み
原因は、報告の当日に開発側のメンバーが GitHub の issue #1391 に書いています。要約すると、WordPress は一括編集でも投稿を更新するたびに「投稿一覧が変わった」という印を Object Cache に書き込むのですが、W3 Total Cache は既定で wp-admin のリクエストをキャッシュの対象外にしているので、この印が Redis や Disk まで届きません。ブロックエディターやクイック編集の保存は通常の管理画面のリクエストではない経路を通るので届き、一括編集は管理画面のフォーム送信なので届かない、というのが開発側の説明です。
issue には「WordPress 7.x の変更ではない」とも明記されています。フォーラムの報告者は WordPress 7 系の投稿一覧の刷新を疑っていましたが、手元でも 2.7.5 に戻すと出なくなったので、変わったのは W3 Total Cache の側です。2.7.6 の変更を入れた PR #865 には「不要になった Object Cache のパージを取り除く」とあります。
待つと、ページキャッシュに古い一覧が固定される
修正版はまだありません。issue には直し方の方針まで書かれていますが、9/9 の時点で修正の PR は無く、版の予告もありません。
待った場合に何が起きるかは、ページキャッシュを使っているかで変わりました。Object Cache だけのサイトでは、古い一覧は 3 分以内に消えます。Object Cache の保持時間が既定で 180 秒なので、期限が切れた時点で正しい一覧に戻りました。ところがページキャッシュも有効にしていると、公開の 40 秒後にページキャッシュが作り直された時点で古い一覧を読み込み、その HTML がページキャッシュに残ります。手元では 6 分待っても戻らず、ページキャッシュの保持時間は既定で 1 時間です。

その間に何か 1 件をブロックエディターで保存し直せば、印が届いてページキャッシュも消えるので、一覧は戻ります。フォーラムの報告者が「一括編集の直後に 1 記事を単体で更新すると反映される」と書いていたのはこの動きです。ただ、公開のたびに 1 件余計に保存するより、設定をオンにする方が早く終わります。
自分のサイトのプラグインがどの版で止まっているか知りたい方は、WordPress 年式診断に URL を入れてみてください。



