Search Regexで変換した文字列が巻き戻ったらpost_content_filteredが怪しい

2017-10-23

このサイトではなく、別のとあるサイトのssl対応を行った際のこと。

元々ある程度長く運営されていたサイトであったため、Search Regexを使ってhttpをhttpsに置換したところ、「しばらくすると一部の記事のみ、httpに戻る」という謎現象が発生。

発生原因をしっかり追及してはいませんが、一応なおせたので、その際の対応について共有します。

原因:Search Regexの置換が、編集画面には反映されていなかった

Search Regexは、post_contentや、post_excerptなどの値を直接書き換えます。しかし、編集画面では「post_content_filteredに値が入っている場合に限り、post_content_filteredを編集対象として表示する」仕様になっているようです。

post_content_filteredがそもそも何のためにあるカラムなのかよくわかりませんが、結論としては、post_content_filteredの値はSearch Regexでは置換できず、その値が編集画面に表示されていたというものでした。

それに気づかず、既存の記事を編集画面から保存してしまうと、その時表示されていたhttp~のURLが、wp_contentのhttpsを上書きしてしまい、巻き戻りが発生するというわけです。

対応:post_content_filteredを空にする

post_content_filteredは何に使われているのかよくわからない謎カラムですが(編集画面表示の際に使われていることはわかりましたが)、空にしておいて問題になるカラムではありません。

ということで、post_content_filteredを空にしてしまえば、この問題は解決します。

なお、post_content_filtered自体の意味は、公式リファレンスにも書かれておらず、世界的によくわからないカラムとして認識されているようです。

※マークダウン系のプラグインなどを利用している場合、post_content_filteredにはwp_contentと同じ値が保存される場合があります。