WordPressのCustom Feild GUI Utilityから他へ移行する方法

#目次
[はじめに](#はじめに)
[やりたいこと](#やりたいこと)
[Custom Field GUI Utilityのフィールド情報を入手](#Custom Field GUI Utilityのフィールド情報を入手)
[Advanced Custom Fieldsでフィールドを用意](#Advanced Custom Fieldsでフィールドを用意)
[Search Regexで正規表現を使って置換](#Search Regexで正規表現を使って置換)

#はじめに
先日WordPressのリニューアル案件で、「**Custom Field GUI Utility**」を「**ACF（Advanced Custom Fields）**」に移行したので、その時にやった方法を備忘録として残します。

#Custom Field GUI Utitlityとは
Custom Field GUI Utility（以下、CF GUI　<font color="red">※CLIやGUIのことじゃないからね！</font>）とは、今で言うところのACFやSCF（Smart Custom Field）など、カスタムフィールドを拡張してくれる便利プラグインで、最終更新が2013年3月頃（[こちらより確認](https://tinybeans.net/blog/2013/03/04-120518)）でストップしてます。
※執筆当時が2021年3月なので、まるっと８年は更新されてません。

もともとはCustom Field GUIというプラグインがあり、それをカスタムしたのがCF GUIのようです。
まあ８年も更新されていないプラグインなんて、さっさと切り替えてしまいましょう！

#手順
CF GUIからSCFへ移行する方法は検索すれば簡単にヒットするので割愛します。（気が向けば書くかも？）

さて、ACFだろうがSCFだろうが結局の所、WordPress標準のカスタムフィールドに最終的な値は格納されており、カスタムフィールドとCF系プラグインは**フィールド名**で結びついてます。（もしかしたら厳密には違うのかも？）

ということは、「CF系プラグインのフィールド名」と「標準カスタムフィールドのフィールド名」を揃えてしまえば、勝手に連携してくれるというわけです。

そこで今回の移行手順は、大きくまとめると以下の３つです。

- CF GUIのフィールド名などを入手
- 入手した情報を元にACFで項目を用意
- [Search Regex](https://ja.wordpress.org/plugins/search-regex/)で値を置換

それではやっていきましょう！
※バックアップは必須なので割愛します。
※Search Regexについてはまた後で説明します。コレは便利！

#Custom Field GUI Utilityのフィールド情報を入手
まずは管理画面に入って「設定＞カスタムフィールド設定」でCF GUIの設定画面に移動します。
すると「Custom Field GUI Utility Extender」という見出しのページに来ました。そこのテキストエリアにある中身をすべてコピーし、適当なエディタでもなんでもいいので、複製しておいてください。
中身を複製したらプラグイン一覧よりCF GUIは停止しておいてください。

#Advanced Custom Fieldsでフィールドを用意
ACFをインストールし、好きな名前でフィールドグループを新しく用意してください。
そうしたら、先程複製した内容を元に、フィールドをつくってください。

以下は今回の移行作業で複製した内容から、ACFで使う項目だけ残したものです。

```
[main_photo]
fieldname = メイン画像
type = imagefield

[works_title]
fieldname = タイトル
type = textarea
sample = 作品名を記述

[works_day]
fieldname = 施工日
type = textarea
sample = ▲▲▲市　施工／平成ｘｘ年ｘｘ月
```

[◯◯◯] => フィールド名
fieldname => フィールドラベル
type => フィールドタイプ
sample => プレースホルダー（多分）

↑の規則に則ってフィールドを用意してください。
フィールドができたら、管理画面の記事編集画面でACFのフィールドに値がちゃんと入っているか確認してください。
もともとテキストとかばかりならこれで問題ないのですが、今回の移行作業で面倒だったのが、画像項目のフィールド値でした。

#Search Regexで正規表現を使って置換
↑の最後で言った画像項目のフィールド値ですが、CF GUIとACFU(SCFも）では、どちらも画像アップロードの機能があるのですが、画像を選択した際のフィールド値がそれぞれで異なる仕様となっていたのです。

CF GUIの場合、`[画像ID]画像URL`。
ACFの場合、`画像ID`。

つまり、ACFで一々画像を再選択しなくても勝手に反映してくれるようにするには、CF GUIのフィールド値から、`[`、`]画像URL`を取り除いて`画像ID`だけを残す必要があるのです。

そこで今回の作業で使ったプラグインが、[Search Regex](https://ja.wordpress.org/plugins/search-regex/)。

Search Regexとは投稿記事などのタイトル、本文、カスタムフィールドなどを一括でまとめて置換してくれる便利なプラグインなので、これの一番良いところは、**正規表現**での置換ができるということ！。

やり方は簡単ですが、正規表現をほとんど使ったことのない人なんかは、この記事を読み終わった後ででも調べてみてください。

まずは管理画面の「ツール＞Search Regex」に移動してください。

下の画像は英語版ですが、探せば日本語化の方法もあるのかな？
![スクリーンショット 2021-03-26 17.24.45.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/222230/ab96289b-f0e4-b967-cf4f-df68720c8ec7.png)

上から項目の説明をすると、
「**Source**」…記事タイトルや記事本文、カスタムフィールドなど、置換対象を選択します。（今回はカスタムフィールドなので**Post meta value**を選択）
「**Limit to**」…一回の検索、置換でヒットする件数。全部の記事をやりたかったのでNo limitのままです。
「**Order By**」…検索時のソート（Descending：降順 / Ascending：昇順）を選べます。どっちでもいいです。
「**Search pattern**」…正規表現を使わない文字置換であればそのまま置換対象を入力してください。今回は`[`、`]画像URL`を取り除かないといけないので、`/\[([0-9]{1,9})\](.+)/`と入力。
「**Replace pattern**」…置換後の文字を入力します。正規表現を使って置換するので、`$1`と入力。
「**Regex**」にだけチェックを入れて、`Search`、`Replace`、`Replace & Save`の順で確認しながら押してください。
※最後のReplace&Saveを押すまでは保存されません。

最後に記事編集画面のACFを確認し、画像が反映されていたら成功です。
失敗したらバックアップから復元してやり直してください。

以上！

またねーﾉｼ