true,
'public' => false,
'show_ui' => 'ACFE', // placeholder
'show_admin_column' => true,
'show_in_menu' => true,
'show_in_nav_menus' => false,
'show_tagcloud' => false,
'rewrite' => false,
'labels' => array(
'name' => _x('Categories', 'Category'),
'singular_name' => _x('Categories', 'Category'),
'search_items' => __('Search categories', 'acfe'),
'all_items' => __('All categories', 'acfe'),
'parent_item' => __('Parent category', 'acfe'),
'parent_item_colon' => __('Parent category:', 'acfe'),
'edit_item' => __('Edit category', 'acfe'),
'update_item' => __('Update category', 'acfe'),
'add_new_item' => __('Add New category', 'acfe'),
'new_item_name' => __('New category name', 'acfe'),
'menu_name' => __('category', 'acfe'),
),
);
// filter
$args = apply_filters('acfe/field_group_category/args', $args);
// register taxonomy
register_taxonomy('acf-field-group-category', array('acf-field-group'), $args);
}
/**
* admin_menu
*
* Add submenu page manually
*/
function admin_menu(){
if(acf_get_setting('show_admin')){
add_submenu_page('edit.php?post_type=acf-field-group', __('Categories'), __('Categories'), acf_get_setting('capability'), 'edit-tags.php?taxonomy=acf-field-group-category');
}
}
/**
* parent_file
*
* set current submenu class
*
* @param $parent_file
*
* @return mixed|string
*/
function parent_file($parent_file){
global $current_screen, $pagenow;
if($current_screen->taxonomy === 'acf-field-group-category' && ($pagenow === 'edit-tags.php' || $pagenow === 'term.php')){
$parent_file = 'edit.php?post_type=acf-field-group';
}
return $parent_file;
}
/**
* admin_head
*
* acf/field_group/admin_head
*
* Hide metabox if no term has been added yet
*/
function admin_head(){
// get terms
$count = get_terms(array(
'taxonomy' => 'acf-field-group-category',
'hide_empty' => false,
'fields' => 'count',
));
// cast to int
$count = intval($count);
// hide field group sidebar taxonomy metabox if no term has been added yet
if($count === 0){
remove_meta_box('acf-field-group-categorydiv', 'acf-field-group', 'side');
}
}
/**
* columns
*
* manage_edit-acf-field-group_columns:11
*
* @param $columns
*
* @return array
*/
function columns($columns){
$new_columns = array();
foreach($columns as $key => $value){
if($key === 'title'){
$new_columns['acf-field-group-category'] = __('Categories');
}
$new_columns[$key] = $value;
}
return $new_columns;
}
/**
* column_html
*
* manage_acf-field-group_posts_custom_column
*
* @param $column
* @param $post_id
*/
function column_html($column, $post_id){
if($column === 'acf-field-group-category'){
if(!$terms = get_the_terms($post_id, 'acf-field-group-category')){
echo '—';
return;
}
$categories = array();
foreach($terms as $term){
$categories[] = '' . $term->name . '';
}
echo implode(' ', $categories);
}
}
/**
* views
*
* views_edit-acf-field-group:9
*
* @param $views
*
* @return mixed
*/
function views($views){
if(!$terms = get_terms('acf-field-group-category', array('hide_empty' => false))){
return $views;
}
foreach($terms as $term){
$groups = get_posts( array(
'post_type' => 'acf-field-group',
'posts_per_page' => -1,
'suppress_filters' => false,
'post_status' => array('publish', 'acf-disabled'),
'taxonomy' => 'acf-field-group-category',
'term' => $term->slug,
'fields' => 'ids'
));
$count = count($groups);
$html = '';
if($count > 0){
$html = ' (' . $count . ')';
}
global $wp_query;
$class = '';
if(isset($wp_query->query_vars['acf-field-group-category']) && $wp_query->query_vars['acf-field-group-category'] === $term->slug){
$class = ' class="current"';
}
$views['category-' . $term->slug] = '' . $term->name . $html . '';
}
return $views;
}
/**
* acf_get_taxonomies
*
* acf/get_taxonomies
*
* Exclude taxonomy from available field group locations
*
* @param $taxonomies
* @param $args
*
* @return mixed
*/
function acf_get_taxonomies($taxonomies, $args){
foreach($taxonomies as $k => $taxonomy){
if($taxonomy === 'acf-field-group-category'){
unset($taxonomies[$k]);
}
}
return $taxonomies;
}
/**
* prepare_field_group_for_export
*
* acf/prepare_field_group_for_export
*
* append categories slugs during export
*
* @param $field_group
*
* @return mixed
*/
function prepare_field_group_for_export($field_group){
$_field_group = acf_get_field_group($field_group['key']);
if(empty($_field_group)){
return $field_group;
}
if(!acfe_get($_field_group, 'ID')){
return $field_group;
}
$categories = get_the_terms($_field_group['ID'], 'acf-field-group-category');
if(empty($categories) || is_wp_error($categories)){
return $field_group;
}
$field_group['acfe_categories'] = array();
foreach($categories as $term){
$field_group['acfe_categories'][$term->slug] = $term->name;
}
return $field_group;
}
/**
* import_field_group
*
* acf/import_field_group
*
* Create term if doesn't exist during import
*
* @param $field_group
*/
function import_field_group($field_group){
if(!$categories = acfe_get($field_group, 'acfe_categories')){
return;
}
foreach($categories as $term_slug => $term_name){
$new_term_id = false;
$get_term = get_term_by('slug', $term_slug, 'acf-field-group-category');
// Term doesn't exists
if(empty($get_term)){
$new_term = wp_insert_term($term_name, 'acf-field-group-category', array(
'slug' => $term_slug
));
if(!is_wp_error($new_term)){
$new_term_id = $new_term['term_id'];
}
// Term already exists
}else{
$new_term_id = $get_term->term_id;
}
if($new_term_id){
wp_set_post_terms($field_group['ID'], array($new_term_id), 'acf-field-group-category', true);
}
}
}
}
// initialize
new acfe_field_group_category();
endif;