Custom Field Suiteでセレクトボックスの選択肢を全て取得する
WordPressのプラグインでAdvanced Custom Fieldsを使用できなかったので、Custom Field Suiteを利用した案件があったのですが、絞り込みのシステムでチェックボックスやセレクトボックスで選択肢を全て表示する必要がでてきました。
CUSTOM FIELD SUITE で 選択肢 を全て取得する方法 では項目に決まった文字列をつけてデータベースから取り出すという方法でしたが、もっと効率の良い方法がないかと思い調べたところ、[Plugin: Custom Field Suite] Get Field's Type and Choices (for select)で答えを得られました。
使いやすいようにアレンジしましたので記載します。
functions.php に追記
/**
* Custom Field Suiteの選択肢を取得する
* @param {array} group_id - フィールドグループのID
* @param {string} field_name - フィールド名
* @param {string} field_type - フィールドタイプ
* @return {array} - 選択肢が配列で戻る
*/
function get_cfs_choices($group_id, $field_name, $field_type = 'select'){
global $cfs;
$choices = array();
$field_info = $cfs->api->get_input_fields($group_id);
foreach ($field_info as $field) {
if ($field_type == $field->type && $field_name == $field->name) {
$choices = $field->options['choices'];
}
}
return $choices;
}
テンプレートに記載
<ul>
<?php foreach(get_cfs_choices(array(51), "categories", "checkbox") as $category): ?>
<li><?php echo $category; ?></li>
<?php endforeach; ?>
</ul>
コメント