[wp-trac] [WordPress Trac] #57630: Site Editor: Template part customization is not saved for certain child themes
WordPress Trac
noreply at wordpress.org
Wed Mar 8 20:20:27 UTC 2023
#57630: Site Editor: Template part customization is not saved for certain child
themes
--------------------------+---------------------
Reporter: mreishus | Owner: (none)
Type: defect (bug) | Status: new
Priority: normal | Milestone: 6.2
Component: Themes | Version: trunk
Severity: normal | Resolution:
Keywords: | Focuses:
--------------------------+---------------------
Description changed by SergeyBiryukov:
Old description:
> == Issue Summary
>
> For some FSE child themes, when using the site editor to make the first
> customization of a template part, the edit appears to save but does not
> display on the front-end of the site.
>
> The bug applies to editing template parts that do not exist in the child
> theme.
>
> == Steps to reproduce
>
> * Clone https://github.com/WordPress/wordpress-develop (Tested using
> bd4d4af7849, 2023-02-03, 6.2-alpha-54642-src).
> * {{{npm install}}}
> * {{{npm run build:dev}}}
> * {{{npm run env:start}}}
> * {{{npm run env:install}}}
> * Download these two themes onto your computer: https://public-
> api.wordpress.com/rest/v1/themes/download/twentytwentytwo-wpcom.zip and
> https://public-api.wordpress.com/rest/v1/themes/download/twentytwentytwo-
> red.zip
> * Visit http://localhost:8889/wp-admin/themes.php
> * Click add new, then upload theme, then browse. Choose twentytwentytwo-
> wpcom-1.2.zip then install. Repeat the process for twentytwentytwo-red-
> wpcom-1.0.zip.
> * Activate the theme: Twenty Twenty-Two (Red) - WordPress.com.
> * Visit http://localhost:8889/wp-admin/site-editor.php
> * Click on “WordPress Develop” in the header, then click the block
> inserter button (the plus icon).
> * Choose blocks -> paragraph to insert a new paragraph block, which
> should be to the right of “WordPress Develop”. Select the new block and
> type “Hello” in it.
> * In the top bar, click save. The sidebar will expand, asking “Are you
> ready to save?” and “header” will be checked. Click save again.
> * Visit http://localhost:8889/ in a new tab. Expect to see: The new
> “hello” paragraph in the header. Actually see: No changes were applied.
>
> == Testing Notes - Certain types of child themes trigger the bug
>
> The bug is related to child themes, but only certain types. Both Twenty
> Twenty-Two (Red) - WordPress.com and Geologist are child themes, but only
> the former is affected by the bug.
>
> Child themes that have a template part present in both the child theme
> and the parent theme (example parts/header.html) has shown to allow
> template editing. However, child themes that don’t have a specific
> template in, but the parent theme does, will not allow template editing.
>
> == Testing Notes - Bug only occurs when making the first customization to
> a non-customized template part
>
> If the header has already been customized, the bug cannot happen: You
> will always be able to edit an already customized header.
>
> For example: When following the above directions with a fresh site, I
> will not be able to edit the header. After applying the patch below, I
> will be able to edit the header.
> After one edit is saved, even if I rollback the patch and remove the fix,
> I’m still able to apply more edits. The bug will only reappear if I use
> the “Clear customizations” for that template part in the site editor.
> (Site editor -> Middle Top Bar -> “Browse all templates” -> Template
> Parts -> Header -> Three dots menu -> Clear customization).
>
> == Related change
>
> Reverting the change introduced in
> https://core.trac.wordpress.org/ticket/55437 fixes the issue:
>
> {{{
> diff --git a/src/wp-includes/block-template-utils.php b/src/wp-includes
> /block-template-utils.php
> index acbb7724c5..55ad6e15d0 100644
> --- a/src/wp-includes/block-template-utils.php
> +++ b/src/wp-includes/block-template-utils.php
> @@ -503,7 +503,8 @@ function _build_block_template_result_from_file(
> $template_file, $template_type
>
> $template = new WP_Block_Template();
> $template->id = $theme . '//' .
> $template_file['slug'];
> - $template->theme = ! empty( $template_file['theme'] ) ?
> $template_file['theme'] : $theme;
> + //$template->theme = ! empty( $template_file['theme'] )
> ? $template_file['theme'] : $theme;
> + $template->theme = $theme;
> $template->content =
> _inject_theme_attribute_in_block_template_content( $template_content );
> $template->slug = $template_file['slug'];
> $template->source = 'theme';
> }}}
>
> However, I cannot determine the exact mechanism why; or how to resolve
> the issue in #55437 while also resolving this issue.
New description:
== Issue Summary
For some FSE child themes, when using the site editor to make the first
customization of a template part, the edit appears to save but does not
display on the front-end of the site.
The bug applies to editing template parts that do not exist in the child
theme.
== Steps to reproduce
* Clone https://github.com/WordPress/wordpress-develop (Tested using
bd4d4af7849, 2023-02-03, 6.2-alpha-54642-src).
* {{{npm install}}}
* {{{npm run build:dev}}}
* {{{npm run env:start}}}
* {{{npm run env:install}}}
* Download these two themes onto your computer: https://public-
api.wordpress.com/rest/v1/themes/download/twentytwentytwo-wpcom.zip and
https://public-api.wordpress.com/rest/v1/themes/download/twentytwentytwo-
red.zip
* Visit http://localhost:8889/wp-admin/themes.php
* Click add new, then upload theme, then browse. Choose twentytwentytwo-
wpcom-1.2.zip then install. Repeat the process for twentytwentytwo-red-
wpcom-1.0.zip.
* Activate the theme: Twenty Twenty-Two (Red) - WordPress.com.
* Visit http://localhost:8889/wp-admin/site-editor.php
* Click on “WordPress Develop” in the header, then click the block
inserter button (the plus icon).
* Choose blocks -> paragraph to insert a new paragraph block, which should
be to the right of “WordPress Develop”. Select the new block and type
“Hello” in it.
* In the top bar, click save. The sidebar will expand, asking “Are you
ready to save?” and “header” will be checked. Click save again.
* Visit http://localhost:8889/ in a new tab. Expect to see: The new
“hello” paragraph in the header. Actually see: No changes were applied.
== Testing Notes - Certain types of child themes trigger the bug
The bug is related to child themes, but only certain types. Both Twenty
Twenty-Two (Red) - WordPress.com and Geologist are child themes, but only
the former is affected by the bug.
Child themes that have a template part present in both the child theme and
the parent theme (example parts/header.html) has shown to allow template
editing. However, child themes that don’t have a specific template in, but
the parent theme does, will not allow template editing.
== Testing Notes - Bug only occurs when making the first customization to
a non-customized template part
If the header has already been customized, the bug cannot happen: You will
always be able to edit an already customized header.
For example: When following the above directions with a fresh site, I will
not be able to edit the header. After applying the patch below, I will be
able to edit the header.
After one edit is saved, even if I rollback the patch and remove the fix,
I’m still able to apply more edits. The bug will only reappear if I use
the “Clear customizations” for that template part in the site editor.
(Site editor -> Middle Top Bar -> “Browse all templates” -> Template Parts
-> Header -> Three dots menu -> Clear customization).
== Related change
Reverting the change introduced in #55437 fixes the issue:
{{{
diff --git a/src/wp-includes/block-template-utils.php b/src/wp-includes
/block-template-utils.php
index acbb7724c5..55ad6e15d0 100644
--- a/src/wp-includes/block-template-utils.php
+++ b/src/wp-includes/block-template-utils.php
@@ -503,7 +503,8 @@ function _build_block_template_result_from_file(
$template_file, $template_type
$template = new WP_Block_Template();
$template->id = $theme . '//' . $template_file['slug'];
- $template->theme = ! empty( $template_file['theme'] ) ?
$template_file['theme'] : $theme;
+ //$template->theme = ! empty( $template_file['theme'] ) ?
$template_file['theme'] : $theme;
+ $template->theme = $theme;
$template->content =
_inject_theme_attribute_in_block_template_content( $template_content );
$template->slug = $template_file['slug'];
$template->source = 'theme';
}}}
However, I cannot determine the exact mechanism why; or how to resolve the
issue in #55437 while also resolving this issue.
--
--
Ticket URL: <https://core.trac.wordpress.org/ticket/57630#comment:3>
WordPress Trac <https://core.trac.wordpress.org/>
WordPress publishing platform
More information about the wp-trac
mailing list