ACF_Post_Type::import_cptui_post_type │ public │ ACF 6.1
Imports a post type from CPTUI.
Метод класса: ACF_Post_Type{}
Хуков нет.
Возвращает
Массив
.
Использование
$ACF_Post_Type = new ACF_Post_Type(); $ACF_Post_Type->import_cptui_post_type( $args );
- $args(массив) (обязательный)
- Arguments from CPTUI.
Список изменений
С версии 6.1 | Введена. |
Код ACF_Post_Type::import_cptui_post_type() ACF Post Type::import cptui post type ACF 6.4.2
public function import_cptui_post_type( $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['post_type'] = (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'] ); } if ( isset( $args['show_in_menu_string'] ) ) { $acf_args['admin_menu_parent'] = (string) $args['show_in_menu_string']; unset( $args['show_in_menu_string'] ); } 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'] = 'post_type_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'] = (bool) $args['rewrite_withfront']; unset( $args['rewrite_withfront'] ); } // TODO: Investigate CPTUI usage of with_feeds, pages settings. // ACF handles capability type differently. if ( isset( $args['capability_type'] ) ) { if ( 'post' !== trim( $args['capability_type'] ) ) { $acf_args['rename_capabilities'] = true; $capabilities = explode( ',', $args['capability_type'] ); $capabilities = array_map( 'trim', $capabilities ); $acf_args['singular_capability_name'] = $capabilities[0]; if ( count( $capabilities ) > 1 ) { $acf_args['plural_capability_name'] = $capabilities[1]; } } unset( $args['capability_type'] ); } // ACF names the has_archive slug differently. if ( isset( $args['has_archive_string'] ) ) { $acf_args['has_archive_slug'] = (string) $args['has_archive_string']; unset( $args['has_archive_string'] ); } // 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'] = 'post_type_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'] ); } $acf_args = wp_parse_args( $args, $acf_args ); // ACF doesn't yet handle custom supports, so we're tacking onto the regular supports. if ( isset( $args['custom_supports'] ) ) { $custom_supports = explode( ',', (string) $args['custom_supports'] ); $custom_supports = array_filter( array_map( 'trim', $custom_supports ) ); if ( ! empty( $custom_supports ) ) { $acf_args['supports'] = array_merge( $acf_args['supports'], $custom_supports ); } unset( $acf_args['custom_supports'] ); } $acf_args['key'] = uniqid( 'post_type_' ); $acf_args['advanced_configuration'] = true; $acf_args['import_source'] = 'cptui'; $acf_args['import_date'] = time(); $existing_post_types = acf_get_acf_post_types(); foreach ( $existing_post_types as $existing_post_type ) { // Post type already exists, so we need to update rather than import. if ( $acf_args['post_type'] === $existing_post_type['post_type'] ) { $acf_args = $this->prepare_post_for_import( $acf_args ); $acf_args['ID'] = $existing_post_type['ID']; $acf_args['key'] = $existing_post_type['key']; return $this->update_post( $acf_args ); } } // Import the post normally. return $this->import_post( $acf_args ); }