Toolbar: Make the 'Edit site' link open the editor with the current template.

Adds a global, `$_wp_current_template_id`, to allow the 'Edit site' link in the admin bar to be aware of the current template and pass it to the Site Editor, so it can load the appropriate one directly.

See https://github.com/WordPress/gutenberg/issues/37850 for further discussion.

Props Mamaduka, poena, abitofmind, audrasjb, mikinc860, alexstine, annezazu, beckej, jameskoster, bacoords, clubkert, paaljoachim, get_dave, priethor, skorasaurus.
Fixes #58746.
Built from https://develop.svn.wordpress.org/trunk@56209


git-svn-id: http://core.svn.wordpress.org/trunk@55721 1a063a9b-81f0-0310-95a4-ce76da25c4cd
This commit is contained in:
Mike Schroder 2023-07-11 11:33:27 +00:00
parent 59a793ac9d
commit 6fc3060a4e
3 changed files with 18 additions and 3 deletions

View File

@ -419,9 +419,14 @@ function wp_admin_bar_site_menu( $wp_admin_bar ) {
* *
* @since 5.9.0 * @since 5.9.0
* *
* @global string $_wp_current_template_id
* @since 6.3.0 Added `$_wp_current_template_id` global for editing of current template directly from the admin bar.
*
* @param WP_Admin_Bar $wp_admin_bar The WP_Admin_Bar instance. * @param WP_Admin_Bar $wp_admin_bar The WP_Admin_Bar instance.
*/ */
function wp_admin_bar_edit_site_menu( $wp_admin_bar ) { function wp_admin_bar_edit_site_menu( $wp_admin_bar ) {
global $_wp_current_template_id;
// Don't show if a block theme is not activated. // Don't show if a block theme is not activated.
if ( ! wp_is_block_theme() ) { if ( ! wp_is_block_theme() ) {
return; return;
@ -436,7 +441,13 @@ function wp_admin_bar_edit_site_menu( $wp_admin_bar ) {
array( array(
'id' => 'site-editor', 'id' => 'site-editor',
'title' => __( 'Edit site' ), 'title' => __( 'Edit site' ),
'href' => admin_url( 'site-editor.php' ), 'href' => add_query_arg(
array(
'postType' => 'wp_template',
'postId' => $_wp_current_template_id,
),
admin_url( 'site-editor.php' )
),
) )
); );
} }

View File

@ -23,8 +23,10 @@ function _add_template_loader_filters() {
* Internally, this communicates the block content that needs to be used by the template canvas through a global variable. * Internally, this communicates the block content that needs to be used by the template canvas through a global variable.
* *
* @since 5.8.0 * @since 5.8.0
* @since 6.3.0 Added `$_wp_current_template_id` global for editing of current template directly from the admin bar.
* *
* @global string $_wp_current_template_content * @global string $_wp_current_template_content
* @global string $_wp_current_template_id
* *
* @param string $template Path to the template. See locate_template(). * @param string $template Path to the template. See locate_template().
* @param string $type Sanitized filename without extension. * @param string $type Sanitized filename without extension.
@ -32,7 +34,7 @@ function _add_template_loader_filters() {
* @return string The path to the Site Editor template canvas file, or the fallback PHP template. * @return string The path to the Site Editor template canvas file, or the fallback PHP template.
*/ */
function locate_block_template( $template, $type, array $templates ) { function locate_block_template( $template, $type, array $templates ) {
global $_wp_current_template_content; global $_wp_current_template_content, $_wp_current_template_id;
if ( ! current_theme_supports( 'block-templates' ) ) { if ( ! current_theme_supports( 'block-templates' ) ) {
return $template; return $template;
@ -64,6 +66,8 @@ function locate_block_template( $template, $type, array $templates ) {
$block_template = resolve_block_template( $type, $templates, $template ); $block_template = resolve_block_template( $type, $templates, $template );
if ( $block_template ) { if ( $block_template ) {
$_wp_current_template_id = $block_template->id;
if ( empty( $block_template->content ) && is_user_logged_in() ) { if ( empty( $block_template->content ) && is_user_logged_in() ) {
$_wp_current_template_content = $_wp_current_template_content =
sprintf( sprintf(

View File

@ -16,7 +16,7 @@
* *
* @global string $wp_version * @global string $wp_version
*/ */
$wp_version = '6.3-beta3-56208'; $wp_version = '6.3-beta3-56209';
/** /**
* Holds the WordPress DB revision, increments when changes are made to the WordPress DB schema. * Holds the WordPress DB revision, increments when changes are made to the WordPress DB schema.