ACF_Taxonomy::import_cptui_taxonomy │ public │ ACF 6.1
Imports a taxonomy from CPTUI.
Метод класса: ACF_Taxonomy{}
Хуков нет.
Возвращает
Массив
.
Использование
$ACF_Taxonomy = new ACF_Taxonomy(); $ACF_Taxonomy->import_cptui_taxonomy( $args );
- $args(массив) (обязательный)
- Arguments from CPTUI.
Список изменений
С версии 6.1 | Введена. |
Код ACF_Taxonomy::import_cptui_taxonomy() ACF Taxonomy::import cptui taxonomy ACF 6.4.2
public function import_cptui_taxonomy( $args ) { $acf_args = $this->get_settings_array(); // Convert string boolean values to proper booleans. foreach ( $args as $key => $value ) { if ( in_array( $value, array( 'true', 'false' ), true ) ) { $args[ $key ] = filter_var( $value, FILTER_VALIDATE_BOOLEAN ); } } if ( isset( $args['name'] ) ) { $acf_args['taxonomy'] = (string) $args['name']; unset( $args['name'] ); } if ( isset( $args['labels'] ) ) { $acf_args['labels'] = array_merge( $acf_args['labels'], $args['labels'] ); unset( $args['labels'] ); } // ACF uses "name" as title, and stores in labels array. if ( isset( $args['label'] ) ) { $acf_args['title'] = (string) $args['label']; $acf_args['labels']['name'] = (string) $args['label']; unset( $args['label'] ); } if ( isset( $args['singular_label'] ) ) { $acf_args['labels']['singular_name'] = (string) $args['singular_label']; unset( $args['singular_label'] ); } // ACF handles the meta_box_cb with two different settings. if ( isset( $args['meta_box_cb'] ) ) { if ( false === $args['meta_box_cb'] ) { $acf_args['meta_box'] = 'disabled'; } elseif ( ! empty( $args['meta_box_cb'] ) ) { $acf_args['meta_box'] = 'custom'; $acf_args['meta_box_cb'] = $args['meta_box_cb']; } unset( $args['meta_box_cb'] ); } // ACF handles the query var and query var slug/name differently. if ( isset( $args['query_var'] ) ) { if ( ! $args['query_var'] ) { $acf_args['query_var'] = 'none'; } elseif ( ! empty( $args['query_var_slug'] ) ) { $acf_args['query_var'] = 'custom_query_var'; } else { $acf_args['query_var'] = 'taxonomy_key'; } unset( $args['query_var'] ); } if ( isset( $args['query_var_slug'] ) ) { $acf_args['query_var_name'] = (string) $args['query_var_slug']; unset( $args['query_var_slug'] ); } if ( isset( $args['rewrite'] ) ) { $rewrite = (bool) $args['rewrite']; if ( ! $rewrite ) { $acf_args['rewrite']['permalink_rewrite'] = 'no_permalink'; } elseif ( ! empty( $args['rewrite_slug'] ) ) { $acf_args['rewrite']['permalink_rewrite'] = 'custom_permalink'; } else { $acf_args['rewrite']['permalink_rewrite'] = 'taxonomy_key'; } unset( $args['rewrite'] ); } if ( isset( $args['rewrite_slug'] ) ) { $acf_args['rewrite']['slug'] = (string) $args['rewrite_slug']; unset( $args['rewrite_slug'] ); } if ( isset( $args['rewrite_withfront'] ) ) { $acf_args['rewrite']['with_front'] = $args['rewrite_withfront'] === '1'; unset( $args['rewrite_withfront'] ); } if ( isset( $args['rewrite_hierarchical'] ) ) { $acf_args['rewrite']['rewrite_hierarchical'] = $args['rewrite_hierarchical'] === '1'; unset( $args['rewrite_hierarchical'] ); } // CPTUI stores all default_term settings as comma separate values. if ( isset( $args['default_term'] ) ) { if ( '' !== $args['default_term'] ) { $default_term = explode( ',', $args['default_term'] ); $default_term = array_map( 'trim', $default_term ); if ( isset( $default_term[0] ) ) { $acf_args['default_term']['default_term_enabled'] = true; $acf_args['default_term']['default_term_name'] = (string) $default_term[0]; } if ( isset( $default_term[1] ) ) { $acf_args['default_term']['default_term_slug'] = (string) $default_term[1]; } if ( isset( $default_term[2] ) ) { $acf_args['default_term']['default_term_description'] = (string) $default_term[2]; } } unset( $args['default_term'] ); } if ( isset( $args['object_types'] ) ) { $acf_args['object_type'] = $args['object_types']; unset( $args['object_types'] ); } $acf_args = wp_parse_args( $args, $acf_args ); $acf_args['key'] = uniqid( 'taxonomy_' ); $acf_args['advanced_configuration'] = true; $acf_args['import_source'] = 'cptui'; $acf_args['import_date'] = time(); $existing_taxonomies = acf_get_acf_taxonomies(); foreach ( $existing_taxonomies as $existing_taxonomy ) { // Taxonomy already exists, so we need to update rather than import. if ( $acf_args['taxonomy'] === $existing_taxonomy['taxonomy'] ) { $acf_args = $this->prepare_post_for_import( $acf_args ); $acf_args['ID'] = $existing_taxonomy['ID']; $acf_args['key'] = $existing_taxonomy['key']; return $this->update_post( $acf_args ); } } return $this->import_post( $acf_args ); }