WebDesign Dackel

WordPressカスタムフィールドテンプレートのプラグインで設定値(value)を取得する方法

Hatena0
Google+0
Pocket0
Feedly0

WordPressのカスタムフィールドを作るためのプラグインで、よく使われているのが「Custom Field Template」ですね。
普通に使う分にはあまり必要ないかもしれませんが、セレクトボックスの設定などに使う「value」の値が最近必要になりました。
ただ、ネットで調べてみてもあまり目的に沿うものが出てこなかったので、取得方法を書いてみます。(無理矢理な感じがしなくもないですが…)

以下、今回functions.phpに書いたコード。

// Custom Field Templateのvalue値を配列形式で取得します
function get_ctf_user_value()
{
  $values = array();
  $cft = new custom_field_template();
  $options = $cft->get_custom_field_template_data();
  $data = parse_ini_string($options["custom_fields"][0]["content"], true);
  foreach($data as $key => $array){
    $values[$key] = convert_ctf_value_to_array($array["value"]);
  }
  return $values;
}

// ctfのvalueを配列に変換します (#区切り)
function convert_ctf_value_to_array($value)
{
  if(!strstr($value,"#")) return $value;
  $array = explode("#",$value);
  foreach($array as =>$val) $val = trim($val);
  return $array;
}

get_ctf_user_value()で、value値を配列形式で取得出来るかと思います。
Custom Field Templateでは、以下の様にiniファイルと同じ形式で設定されていますね。

[果物]
type=select
value=りんご # ばなな # オレンジ # いちご # ぶどう # ドラゴンフルーツ
label=好きな果物を選択して下さい
default=りんご

それらを、セクション([○○])毎にparse_ini_string()で配列に変換します。
出来上がった配列をさらに、value値のみ#区切りで分割して配列にする、といった感じの流れになっています。

なんだかもっと標準の関数とかで取れない気がしなくもありませんが、とりあえずこれで取得出来たのでよしとしました。
もっといい方法があるよ! という方はコメントから教えていただければと思います!