カスタムフィールド管理系プラグイン「Custom Field Suite」を使用していると、たまに、画像フィールドの返り値の設定で「URL」を指定しているのに、IDしか取得できねぇ!という状況に陥ることがありまして、対処法を調べてみました。
実はこれ、バグなどではなく私が単に「Custom Field Suite」を正しく扱えていなかったことが原因でした。
返り値がIDでしか取得できない原因
まず、この現象が起こる原因についてです。
結論から言うと、「Custom Field Suite」で追加した画像フィールドの値を、いつも「通常のカスタムフィールドの値を取得する関数」であるpost_custom()
やget_post_meta()
で取得していたことが原因でした。
このプラグイン本来のカスタムフィールドの値の取得方法はCFS->get('key')
という形式なんですよね。
WordPressがデフォルトで保存するpostmetaテーブルとは別に、「Custom Field Suite」専用のテーブルに保存している値を取得できるのがこの形式です。
post_custom()
などの関数でも基本的に値は取得できるものの、「Custom Field Suite」で追加した画像フィールドに関してはpostmetaテーブルにはIDしか保存されていない、ということなのでしょう。
対処法
画像フィールドの返り値をURLで取得したい場合は、必ずプラグイン本来の使い方であるCFS->get('key')
で取得する。
ただこれだけで、画像フィールドの値を問題なくURLで取得できました。(もちろん返り値の設定をURLにしている時。)
同様の現象に悩まされている人がいらっしゃれば、値の取得方法を確認してみてください!
おまけ:post_custom()とCFS()->get()のその他の違い
両者の違いは、他にもあります。
フィールドの値が空の場合、取得した値が異なるのです。
post_custom()
は false、CFS()->get()
は NULL を返す仕組みになっています。