在ACF中检索字段组(选项卡)标签名称

时间:2016-06-24 08:26:25

标签: wordpress advanced-custom-fields

我在Wordpress中运行高级自定义字段。在ACF中,您可以在选项卡中对项目进行分组,从而更容易导航以创建帖子/页面内容。

我想要以编程方式检索选项卡的名称,它是内容。

有可能吗?我找不到任何关于此的文件。

2 个答案:

答案 0 :(得分:0)

不确定您是否得到了问题的答案,

没有办法通过php代码获取字段/子字段数据,因为选项卡和它们下面的字段之间没有关系。

ACF选项卡仅用于管理布局以组织字段(隐藏/显示等),并且完全通过JS / CSS完成。如果你有ACF PRO检查这个文件夹中的函数 - plugins / advanced-custom-fields-pro / assets / js / acf-input.js,它解释了标签在ACF中的工作方式

如果你想获得一个不在数组中的转发器/灵活布局的字段,那么你可以得到一整套字段数据,这在[{3}}

中有解释。

答案 1 :(得分:0)

我今天遇到了这个问题,以为我会发布解决方案。根据我的研究,除了在字段组中找到它并向后迭代直到找到类型为tab的字段外,无法直接访问tab字段。

Class ACFHelper {
    /**
    *  get_field_group_by_name: gets the first matching field group for a given title
    *
    *  @param $title the title of the acf field group
    *  @return Array the fields of the field group or false if not found
    *
    */
    public static function get_field_group_by_name($title) {
        $field_group_post = get_posts([
            'numberposts'   => 1,
            'post_type'     => 'acf-field-group',
            's'             => $title
        ]);

        return ( !empty($field_group_post[0]) ? acf_get_fields( $field_group_post[0]->ID ):false );
    }

    /**
    *  get_tab_by_field_name: gets the tab of a specified field by iterating backwards through the field group
    *
    *  @param $field_group_title the title of the acf field group
    *  @param $field_name the name of the field for which we want the tab it's under
    *  @return Array the field group of the tab or false if not found
    *
    */
    public static function get_tab_by_field_name($field_group_title, $field_name) {
        $field_group = Self::get_field_group_by_name($field_group_title);

        if($field_group) {
            $field_index = array_search($field_name, array_column($field_group, 'name'));

            if($field_index) {
                for($field_index; $field_index > -1; $field_index--) {
                    if( $field_group[$field_index]['type'] == 'tab' )
                        return $field_group[$field_index];
                }
            }
        }

        return false;
    }
}

现在,如果我在“水果”标签下有一个野草莓,则可以在“食品”字段组中找到我的“水果”标签,例如:

$tab = ACFHelper::get_tab_by_field('foods', 'strawberry');