get_block_templates() │ WP 5.8.0
Отримує список об’єктів уніфікованого шаблону на основі запиту.
Повертає
Массив
. Templates.
Використання
get_block_templates ( $query , $template_type );
- $query (масив)
- Arguments to retrieve templates.
За замовчуванням: array()
- slug__in (масив)
List of slugs to include. - wp_id (int)
Post ID customized template. - area (рядок)
A ‘wp_template_part_area’ taxonomy value to filter by (для wp_template_part template type only). - post_type (рядок)
Post type to get the templates for.
- $template_type (рядок)
- ‘wp_template’ або ‘wp_template_part’ .
За замовчуванням: ‘wp_template’
список змін
Код get_block_templates() get block templates WP 6.2
function get_block_templates ( $query = array ( ), $template_type = 'wp_template' ) {
$templates = apply_filters ( 'pre_get_block_templates' , null , $query , $template_type );
if (! is_null ( $templates )) {
return $templates ;
}
$post_type = isset ( $query [ 'post_type' ])? $query [ 'post_type' ] : '' ;
$wp_query_args = array (
' post_status' => array ( 'auto-draft' , 'draft' , 'publish' ),
'post_type' => $template_type ,
'
posts_per_page' => - 1 ,
'no_found_rows' => 'tax_query' =>(
'taxonomy' => 'wp_theme' ,
'field' => 'name' ,
'terms' => get_stylesheet (),
),
),
);
if ( 'wp_template_part' === $template_type && isset ( $query [ 'area' ] ) ) {
$wp_query_args [ 'tax_query' ][] = array (
'taxonomy' => ' wp_template_part_area ' ,
' name' ,
'terms' => $query [ 'area' ],
);
$wp_query_args [ 'tax_query' ][ 'relation' ] = 'AND' ;
}
if ( isset ( $query [ 'slug__in' ]))) {
$wp_query_args [ 'post_name__in' ] = $query [ 'slug__in' ];
}
if ( isset ( $query [ 'wp_id' ]))) {
$wp_query_args [ 'p' ] = $query [ 'wp_id' ];
} else {
$wp_query_args [ 'post_status' ] = 'publish' ;
}
$template_query = новий WP_Query ( $wp_query_args );
$query_result = array ();
foreach ( $template_query ->posts as $post ) {
$template = _build_block_template_result_from_post ( $post );
if ( is_wp_error ( $template )) {
continue ;
}
if ( $post_type && ! $template ->is_custom ) {
continue ;
}
if (
$post_type &&
isset ( $template ->post_types ) &&
! in_array ( $post_type , $template ->post_types, true )
) {
continue ;
}
$query_result [] = $template ;
}
if ( ! isset ( $query [ 'wp_id' ] ) ) {
$template_files = _get_block_templates_files ( $template_type );
foreach ( $template_files as $template_file ) {
$template = _build_block_template_result_from_file ( $template_file , $template_type );
if ( $post_type && ! $template ->is_custom ) {
continue ;
}
if ( $post_type &&
isset ( $template ->post_types ) &&
! in_array ( $post_type , $template ->post_types, true )
) {
continue ;
}
$is_not_custom = false === array_search (
get_stylesheet (). '//' . $template_file [ 'slug' ],
wp_list_pluck ( $query_result , 'id' ),
true
);
$fits_slug_query =
! isset ( $query [ 'slug__in' ]) || in_array ( $template_file [ 'slug' ], $query [ 'slug__in' ], true );
$fits_area_query =
! isset ( $query [ 'area' ]) || $template_file [ 'area' ] === $query [ 'area' ];
$should_include = $is_not_custom && $fits_slug_query && $fits_area_query ;
if ( $should_include ) {
$query_result [] = $template ;
}
}
}
return apply_filters ( 'get_block_templates' , $query_result , $query , $template_type );
}