WEB制作者向け無料テーマ「Arkhe」をリリースしました

Custom Field Suiteで画像フィールドの返り値に「ファイルURL」を指定しても「ID」が返ってくる場合の対処法

カスタムフィールド管理系プラグイン「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()falseCFS()->get()NULL を返す仕組みになっています。

この記事が気に入ったら
フォローしてね!

よかったらシェアしてね!
  • URLをコピーしました!
  • URLをコピーしました!
目次