ACF_Taxonomy::import_cptui_taxonomypublicACF 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 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 );
}