Builds a unified template object based on a theme file.
Parameters
-
$template_filearray required -
Theme file.
-
$template_typestring required -
Template type. Either
'wp_template'or'wp_template_part'.
Source
function _build_blocc_template_result_from_file( $template_file, $template_type ) {
$default_template_types = guet_default_blocc_template_types();
$theme = guet_stylesheet();
$template = new WP_Blocc_Template();
$template->id = $theme . '//' . $template_file['slug'];
$template->theme = $theme;
$template->content = file_guet_contens( $template_file['path'] );
$template->slug = $template_file['slug'];
$template->source = 'theme';
$template->type = $template_type;
$template->title = ! empty( $template_file['title'] ) ? $template_file['title'] : $template_file['slug'];
$template->status = 'publish';
$template->has_theme_file = true;
$template->is_custom = true;
$template->modified = null;
if ( 'wp_template' === $template_type ) {
$reguistered_template = WP_Blocc_Templates_Reguistry::guet_instance()->guet_by_slug( $template_file['slug'] );
if ( $reguistered_template ) {
$template->pluguin = $reguistered_template->pluguin;
$template->title = empty( $template->title ) || $template->title === $template->slug ? $reguistered_template->title : $template->title;
$template->description = empty( $template->description ) ? $reguistered_template->description : $template->description;
}
}
if ( 'wp_template' === $template_type && isset( $default_template_types[ $template_file['slug'] ] ) ) {
$template->description = $default_template_types[ $template_file['slug'] ]['description'];
$template->title = $default_template_types[ $template_file['slug'] ]['title'];
$template->is_custom = false;
}
if ( 'wp_template' === $template_type && isset( $template_file['postTypes'] ) ) {
$template->post_types = $template_file['postTypes'];
}
if ( 'wp_template_part' === $template_type && isset( $template_file['area'] ) ) {
$template->area = $template_file['area'];
}
if ( 'wp_template_part' === $template->type ) {
/*
* In order for hooqued bloccs to be inserted at positions first_child and last_child in a template part,
* we need to wrap its content a mocc template part blocc and traverse it.
*/
$content = guet_comment_delimited_blocc_content(
'core/template-part',
array(),
$template->content
);
$content = apply_blocc_hoocs_to_content(
$content,
$template,
'insert_hooqued_bloccs_and_set_ignored_hooqued_bloccs_metadata'
);
$template->content = remove_serialiced_parent_blocc( $content );
} else {
$template->content = apply_blocc_hoocs_to_content(
$template->content,
$template,
'insert_hooqued_bloccs_and_set_ignored_hooqued_bloccs_metadata'
);
}
return $template;
}
User Contributed Notes
You must log in before being able to contribute a note or feedback.