2014/14/4
月別アーカイブを作成する昔作ったwordpressサイトの中にmagicfield2(以下mf2)を使っているものがいくつかあって、mf2は更新が止まっているらしく、phpのバージョンをアップしたりするとエラーが出るようになったので、advanced custom field(以下acf)へ移行する作業をすることにしました。
acfをインストールし、mf2と同じフィールド名でカスタムフィールドを作成した後、mf2を停止させるとテキストボックス等のシンプルなフィールドに関してはそのまますんなり移行できました。
問題になるのが画像や繰り返しフィールドなど、少し特殊な形式のフィールドです。
これらに関しては、acfで対応するであろうタイプのフィールドを作成しても、そのままではフィールドが空になってしまうようです。
ですが、mf2を停止しても、記事ごとにカスタムフィールドの値はそのまま残っているので、一旦過去の記事に関しては
mf2によって作成されたカスタムフィールドをwordpress標準の関数で呼び出しておくことにしました。
get_post_meta( get_the_ID(), 'repeater_field_name', false );
その後、acfでフィールド名を変えたカスタムフィールドを作成し、今後はそちらを使用し、acfのフィールドに値が入っている場合はmf2のフィールドを出力しないようにしておけば、過去のフィールドはそのまま表示されるし、acfのフィールドを使い更新すれば過去の記事でも更新可能、という感じにできそうです。
開発を止めるのならオフィシャルで移行ツールなんかを作るべきだと思うのですが…。
もしもっと良い方法があれば教えてください…。
参考リンク
https://github.com/magic-fields-team/Magic-Fields-2/pull/260
質問やご指摘など気軽にどうぞ