「Custom Field Suite」と「Duplicate Post」を併用した時に起こる問題について

WordPress

カスタムフィールドの管理にとても便利な「Custom Field Suite」。またお客様からほぼ必ずと言って良いほどご要望の多い『記事を複製する』機能を提供する「Duplicate Post」。WordPressにおいてどちらも使用頻度は高いのですが、これを共存させようとすると問題が。それもかなり「深刻な」問題です。。

具体的には、「Duplicate Post」を使用して生成(複製)された記事を編集し、登録すると、複製前のカスタムフィールド値がDB上に残るというもの。しかも、それ以降更新をすればするほどカスタムフィールドの重複データが増えていくという。。

それでも、CFS()->getで取得・表示する分には問題は発生しません。なぜか?データ(カスタムフィールド値)は最新のものがちゃんと表示されます。問題は、カスタムフィールド値を検索対象にしたクエリを実行した場合に発生します。例えば、「都道府県」というカスタムフィールドに「東京都」とあるものを一覧表示する、という場合、最新データが「東京都」ではなくても(例えば、「千葉県」)、複製元のデータが「東京都」だった場合には「千葉県」のものもヒットしてしまいます。

この問題、結構古くから認識されていて、一部情報では「Custom Field Suite」側で対応(解決)した、なんてのも検索でヒットするのですが、実は解決していないように思います(2020.01現在)。

たまたま他の問題でWordPressをいじっている時に、「強引だけどこうすれば…」と思いつき、実際にテストして問題を解決したのが以下の方法。

下記ソースをfunctions.phpに追記します。

もし既に運用していて、問題が発生しているページがある場合には、それらのページを全て更新してみてください。多分、直る筈。あまりにも問題のある件数が多い場合には、、それも、上記を参考に全件同じ処理を行えば、きっと解決できる筈。(※くれぐれも自己責任でお願いします!)

タイトルとURLをコピーしました