Custom Field Suiteのカスタムフィールドをフィールドグループで表示

カスタムポストタイプの一覧と個別ページにカスタムフィールドを表示するために、
Custom Field Suiteでカスタムフィールドを作成した。

フィールドグループに「基本グループ」と「詳細グループ」を作成し
一覧には「基本グループ」、個別ページには「基本グループ」と「詳細グループ」を表示させるために独自の関数を作成して対応した。
以下は、その備忘録です。

フィールドグループとカスタムフィールドを紐づけるための関数

function cfs_get_fieldgroup($group_name=null) {

    $field_info = CFS()->field_group->load_field_groups();

    if(!is_null($group_name)) {
        $cfs_group_fields_args = array(
            'post_type' =>'cfs',
            'orderby'   => 'ID',
            'order'     => 'ASC',
            'name'      => $group_name
        );
        $cfs_group_fields = new WP_Query($cfs_group_fields_args);
        wp_reset_postdata();
        if($cfs_group_fields->found_posts>0) {
            $return_group = array($field_info[$cfs_group_fields->post->ID]);
        }else{
            $return_group = $field_info;
        }
    }else{
        $return_group = $field_info;
    }
    return $return_group;
}

これを固定ページなどで使用する場合は、

// フィールドグループ"parent_group"を表示させる

$field_lists = cfs_get_fieldgroup('parent_group');

$query_args = array(
'post_type'     => 'custom',
);
$query = new WP_Query($query_args);

if($query->found_posts > 0) {
    $posts = $query->posts;
    foreach ($posts as $post) {
        echo '<div>'$post->$post->post_title.'</div>';
        foreach ($field_lists as $field_list) {
            echo  '<div>'.$field_list['title'].'<div>';
            foreach ($field_list['fields'] as $field) {
                echo  '<div>';
                echo  $field['label'];
                echo  CFS()->get($field['name'], $post->ID);
                echo  '<div>';
            }
        }
   }
}

すべてのフィールドグループを表示させたい場合は、引数を指定しなければ取得可能です。「cfs_get_fieldgroup()」

ご覧になった方でお気づきの点がございましたらご指摘頂ければ幸いです。

コメントを残す

メールアドレスが公開されることはありません。