関連記事の表示を、ACFのRelationshipフィールドでカード表示する仕組みに移行してから、しばらく経っていました。
「今後は本文に静的HTMLを書かず、ACFフィールドから選ぶだけでいい」という運用ルールまで確立していたはずでした。
それなのに、その後に公開した新規記事4本を見返したら、全部で移行前の古い形式がこっそり復活していました。
サムネなし・タグなし・1件だけのリストが復活していた
見つかった古い形式は、サムネイル・カテゴリタグが一切無く、関連記事も1件だけの箇条書きというシンプルなものでした。
CSS・SVG加工のTipsを紹介した記事に、内容が全く違う動画編集ツール比較の記事がリンクされているなど、紐付け先も内容的にちぐはぐでした。
残りの3本も、テーマが噛み合わない組み合わせが多く、意図的に選んだ関連記事というより、たまたま残っていた古いリンクだったことがうかがえました。
仕組みを移行した意味が、この4本にはまるごと及んでいなかったわけです。
get_field()はNULLなのに、画面には表示されてる矛盾
発覚したきっかけは、ちょっとした違和感でした。
ACFのget_field('related_articles')を確認すると、この4本ではNULLが返ってきます。
つまりACFフィールドとしては未設定のはずなのに、実際のブラウザには関連記事がちゃんと表示されている。
この矛盾から、本文に直書きされたHTMLが残っているのでは、と疑って調べ始めました。
実際にpost_contentを直接見たら、案の定、古い形式の<div class="c-related-articles">がそのまま埋まっていました。
DB横断で、他に同じ問題を抱えた記事がないか確認
疑いが当たっていたので、他にも同じ問題を抱えた記事がないか、範囲を広げて確認しました。
post_content LIKE '%class="c-related-articles"%'で全69記事を横断スキャンし、本文に直書きの古い形式が残っている記事を洗い出しました。
1本ずつ個別に探すより、この一手間を挟んだ方が確実に全件を把握できます。
結果、対象は最初に見つけた4本だけで、他の65本はACFフィールドに正しく移行済みだったことも確認できました。
修正後は、実際の見た目まで見比べて確認した
修正して終わりにせず、修正前と修正後のスクリーンショットを並べて見比べました。
古い形式は文字だけのリストでしたが、正しいACFフィールドに切り替えると、サムネイル・カテゴリタグ付きのカードが3件並ぶ表示に戻ります。
コードとして直っていても、見た目まで確認しないと「本当に元の仕組みに戻ったか」が分からないので、この一手間は毎回外していません。
本番はスラッグ基準で特定、過去の教訓が活きた
本番環境の対象記事を特定する際は、投稿IDをそのまま使わず、スラッグを基準に探しました。
以前「ローカルと本番で投稿IDがズレる」罠を記事にしたときの教訓を、今回も実際に活かせた場面です。
案の定、4記事ともローカルと本番でIDは全部違う数字でした。
スラッグ基準に決めていなければ、また余計な確認作業が発生していたはずです。
修正自体は、本文中の古いHTMLを削除して、代わりに正しいACFフィールドへ関連記事IDを設定するだけで済みました。
結局、原因は特定できなかった
正直に書くと、なぜこの4本だけ古い形式に戻ったのか、はっきりした原因は特定できませんでした。
テンプレートや下書きの流用、コピー元の選び間違いなど、いくつか候補はありますが、決定的な証拠は残っていませんでした。
ただ、原因不明のまま終わっても、実害のある4本を直せたこと自体には意味があったと思っています。
分からないことは分からないと書いておく方が、あとで読み返したときに変な期待をしないで済みます。
💡 Tips: 「移行した」は一度の作業では終わらない
既存記事のリライトや仕組みの移行は、その時点の記事には反映されても、その後の新規記事に自動で適用されるわけではありません。
移行後しばらくは、新規記事を公開するたびに「新しい仕組みで書けているか」を一度チェックする工程を挟むと、こうした先祖返りに早く気づけます。
まとめ
一度決めたルールが、知らないうちに元に戻っていた、というのは今回が初めてではありません。
文字数がじわじわ短くなっていた件や、外部リンクを省略するようになっていた件と、根っこは同じ現象です。
「移行した」「決めた」で安心せず、定期的に新しい記事が本当にルール通りに書けているか点検する習慣を、これからも続けていきます。

