WordPressサイトデータのリニューアルの際に、旧サイトから新サイトへ記事データの移行を行った際にデータは移行出来ているのに対象ページを表示すると表示されない現象がありました。
以下、その際の原因と対処法のメモです。
確認・原因
該当記事の状態をデータベースから直接確認してみたところ wp_posts テーブルの post_content フィールドに
<![CDATA[表示されないテキスト1。表示されないテキスト1。表示されないテキスト1。]]>
や
<!--[CDATA[表示されないテキスト2。表示されないテキスト2。表示されないテキスト2。]]-->
といった形で、CDATAセクションで括られた状態で入ってることが確認できました。
SELECT * FROM `wp_posts` WHERE `post_content` LIKE '%<![CDATA[%' AND post_type='news';
改めてブラウザで表示された該当エリアをデバッグツールで確認したところソースは出力されておりコメントとCDATAセクションで括られているため表示されないようになっていました。
対処法
原因のCDATAセクションのコードを除去すれば表示出来そうでしたので、開始・終了タグをMySQLのREPLACE関数で置換することにしました。
開始タグ置換
UPDATE wp_posts SET post_content=REPLACE(post_content, "<![CDATA[", "") WHERE post_type='news';
UPDATE wp_posts SET post_content=REPLACE(post_content, "<!--[CDATA[", "") WHERE post_type='news';
終了タグ置換
UPDATE wp_posts SET post_content=REPLACE(post_content, "]]>", "") WHERE post_type='news';
UPDATE wp_posts SET post_content=REPLACE(post_content, "]]-->", "") WHERE post_type='news';
動作環境情報
"エックスサーバー" スタンダード(旧X10) "PHP" 7.4.28 ▼旧サイト: "WordPress" 4.8.20 ▼新サイト: "WordPress" 6.0.2
コメント