Site Editor: Resolve homepage template on server-side
Backports change from Gutenberg to support server-side home template resolution in the Site Editor. Original PR https://github.com/WordPress/gutenberg/pull/38817. Props Mamaduka. See #55505. Built from https://develop.svn.wordpress.org/trunk@53093 git-svn-id: http://core.svn.wordpress.org/trunk@52682 1a063a9b-81f0-0310-95a4-ce76da25c4cd
This commit is contained in:
parent
ba864b2792
commit
9fd50db978
|
@ -23,6 +23,20 @@ if ( ! wp_is_block_theme() ) {
|
|||
wp_die( __( 'The theme you are currently using is not compatible with Full Site Editing.' ) );
|
||||
}
|
||||
|
||||
/**
|
||||
* Do a server-side redirection if missing `postType` and `postId`
|
||||
* query args when visiting Site Editor.
|
||||
*/
|
||||
$home_template = _resolve_home_block_template();
|
||||
if ( $home_template && empty( $_GET['postType'] ) && empty( $_GET['postId'] ) ) {
|
||||
$redirect_url = add_query_arg(
|
||||
$home_template,
|
||||
admin_url( 'site-editor.php' )
|
||||
);
|
||||
wp_safe_redirect( $redirect_url );
|
||||
exit;
|
||||
}
|
||||
|
||||
// Used in the HTML title tag.
|
||||
$title = __( 'Editor (beta)' );
|
||||
$parent_file = 'themes.php';
|
||||
|
@ -56,6 +70,7 @@ $custom_settings = array(
|
|||
'styles' => get_block_editor_theme_styles(),
|
||||
'defaultTemplateTypes' => $indexed_template_types,
|
||||
'defaultTemplatePartAreas' => get_allowed_block_template_part_areas(),
|
||||
'__unstableHomeTemplate' => $home_template,
|
||||
'__experimentalBlockPatterns' => WP_Block_Patterns_Registry::get_instance()->get_all_registered(),
|
||||
'__experimentalBlockPatternCategories' => WP_Block_Pattern_Categories_Registry::get_instance()->get_all_registered(),
|
||||
);
|
||||
|
|
|
@ -331,3 +331,35 @@ function _resolve_template_for_new_post( $wp_query ) {
|
|||
$wp_query->set( 'post_status', 'auto-draft' );
|
||||
}
|
||||
}
|
||||
|
||||
/**
|
||||
* Returns the correct template for the site's home page.
|
||||
*
|
||||
* @access private
|
||||
* @since 6.0.0
|
||||
*
|
||||
* @return array|null A template object, or null if none could be found.
|
||||
*/
|
||||
function _resolve_home_block_template() {
|
||||
$show_on_front = get_option( 'show_on_front' );
|
||||
$front_page_id = get_option( 'page_on_front' );
|
||||
|
||||
if ( 'page' === $show_on_front && $front_page_id ) {
|
||||
return array(
|
||||
'postType' => 'page',
|
||||
'postId' => $front_page_id,
|
||||
);
|
||||
}
|
||||
|
||||
$hierarchy = array( 'front-page', 'home', 'index' );
|
||||
$template = resolve_block_template( 'home', $hierarchy, '' );
|
||||
|
||||
if ( ! $template ) {
|
||||
return null;
|
||||
}
|
||||
|
||||
return array(
|
||||
'postType' => 'wp_template',
|
||||
'postId' => $template->id,
|
||||
);
|
||||
}
|
||||
|
|
|
@ -16,7 +16,7 @@
|
|||
*
|
||||
* @global string $wp_version
|
||||
*/
|
||||
$wp_version = '6.0-alpha-53092';
|
||||
$wp_version = '6.0-alpha-53093';
|
||||
|
||||
/**
|
||||
* Holds the WordPress DB revision, increments when changes are made to the WordPress DB schema.
|
||||
|
|
Loading…
Reference in New Issue