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 );
}