Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Try adding support for child themes in FSE/GS #27305

Closed
wants to merge 2 commits into from

Conversation

oandregal
Copy link
Member

@oandregal oandregal commented Nov 26, 2020

WORK IN PROGRESS

Fixes #25612

This PR enables the site editor and global styles to work with child themes of block-based themes.

Places that were updated:

  • Check whether it is an FSE theme.
  • Front end:
    • Load template.
    • Load template parts.
  • Edit site:
    • Load template.
    • Load template parts.

@oandregal oandregal self-assigned this Nov 26, 2020
@oandregal oandregal added [Feature] Full Site Editing Global Styles Anything related to the broader Global Styles efforts, including Styles Engine and theme.json [Status] In Progress Tracking issues with work in progress labels Nov 26, 2020
@github-actions
Copy link

Size Change: 0 B

Total Size: 1.2 MB

ℹ️ View Unchanged
Filename Size Change
build/a11y/index.js 1.14 kB 0 B
build/annotations/index.js 3.8 kB 0 B
build/api-fetch/index.js 3.42 kB 0 B
build/autop/index.js 2.84 kB 0 B
build/blob/index.js 664 B 0 B
build/block-directory/index.js 8.72 kB 0 B
build/block-directory/style-rtl.css 943 B 0 B
build/block-directory/style.css 942 B 0 B
build/block-editor/index.js 134 kB 0 B
build/block-editor/style-rtl.css 11.3 kB 0 B
build/block-editor/style.css 11.3 kB 0 B
build/block-library/editor-rtl.css 8.96 kB 0 B
build/block-library/editor.css 8.96 kB 0 B
build/block-library/index.js 148 kB 0 B
build/block-library/style-rtl.css 8.23 kB 0 B
build/block-library/style.css 8.23 kB 0 B
build/block-library/theme-rtl.css 792 B 0 B
build/block-library/theme.css 793 B 0 B
build/block-serialization-default-parser/index.js 1.87 kB 0 B
build/block-serialization-spec-parser/index.js 3.06 kB 0 B
build/blocks/index.js 48.1 kB 0 B
build/components/index.js 172 kB 0 B
build/components/style-rtl.css 15.3 kB 0 B
build/components/style.css 15.3 kB 0 B
build/compose/index.js 9.95 kB 0 B
build/core-data/index.js 14.8 kB 0 B
build/data-controls/index.js 828 B 0 B
build/data/index.js 8.8 kB 0 B
build/date/index.js 11.2 kB 0 B
build/deprecated/index.js 768 B 0 B
build/dom-ready/index.js 571 B 0 B
build/dom/index.js 4.95 kB 0 B
build/edit-navigation/index.js 11.1 kB 0 B
build/edit-navigation/style-rtl.css 881 B 0 B
build/edit-navigation/style.css 885 B 0 B
build/edit-post/index.js 306 kB 0 B
build/edit-post/style-rtl.css 6.42 kB 0 B
build/edit-post/style.css 6.4 kB 0 B
build/edit-site/index.js 24 kB 0 B
build/edit-site/style-rtl.css 3.92 kB 0 B
build/edit-site/style.css 3.92 kB 0 B
build/edit-widgets/index.js 26.3 kB 0 B
build/edit-widgets/style-rtl.css 3.13 kB 0 B
build/edit-widgets/style.css 3.13 kB 0 B
build/editor/editor-styles-rtl.css 476 B 0 B
build/editor/editor-styles.css 478 B 0 B
build/editor/index.js 43.3 kB 0 B
build/editor/style-rtl.css 3.85 kB 0 B
build/editor/style.css 3.85 kB 0 B
build/element/index.js 4.62 kB 0 B
build/escape-html/index.js 735 B 0 B
build/format-library/index.js 6.87 kB 0 B
build/format-library/style-rtl.css 547 B 0 B
build/format-library/style.css 548 B 0 B
build/hooks/index.js 2.27 kB 0 B
build/html-entities/index.js 623 B 0 B
build/i18n/index.js 3.57 kB 0 B
build/is-shallow-equal/index.js 698 B 0 B
build/keyboard-shortcuts/index.js 2.54 kB 0 B
build/keycodes/index.js 1.94 kB 0 B
build/list-reusable-blocks/index.js 3.1 kB 0 B
build/list-reusable-blocks/style-rtl.css 476 B 0 B
build/list-reusable-blocks/style.css 476 B 0 B
build/media-utils/index.js 5.32 kB 0 B
build/notices/index.js 1.81 kB 0 B
build/nux/index.js 3.42 kB 0 B
build/nux/style-rtl.css 671 B 0 B
build/nux/style.css 668 B 0 B
build/plugins/index.js 2.56 kB 0 B
build/primitives/index.js 1.43 kB 0 B
build/priority-queue/index.js 790 B 0 B
build/redux-routine/index.js 2.84 kB 0 B
build/reusable-blocks/index.js 2.92 kB 0 B
build/rich-text/index.js 13.3 kB 0 B
build/server-side-render/index.js 2.77 kB 0 B
build/shortcode/index.js 1.69 kB 0 B
build/token-list/index.js 1.27 kB 0 B
build/url/index.js 4.06 kB 0 B
build/viewport/index.js 1.86 kB 0 B
build/warning/index.js 1.14 kB 0 B
build/wordcount/index.js 1.22 kB 0 B

compressed-size-action

The intention is to load either

- templates for the active theme
- OR templates for the parent theme if the active doesn't have it
@scruffian
Copy link
Contributor

How important do you think the parent/child theme paradigm will be in Block Themes? Our experience so far is that Block Themes are fairly lightweight.

@oandregal
Copy link
Member Author

oandregal commented Nov 27, 2020

That's a good question. I do believe that some of the use cases for child themes are absorbed by the site editor and the user's ability to customize the structure (edit templates) as well as the styles. For sites with a single user, FSE could be enough.

Then, there are other use cases that aren't fully covered with the existing FSE:

  • Sites with multiple users: there's no mechanism to lock down features per role at the moment. A combination of child theme and/or filtering the settings with a plugin could do.

  • Small agencies that develop their sites for clients. At the moment, many of them develop based on an existing framework/base theme, which they tweak per project. Arguably, it's a lot easier to create a theme now and more people could do it. However, I expect there's still a space for "base themes", so to speak. I'd think this would be the sweet spot for child themes: a solo dev could create a site based on an existing good theme but offer a different color palette that relates to the customer's brand or perhaps modify the header template part to include the logo of the company, etc.

@jorgefilipecosta
Copy link
Member

How important do you think the parent/child theme paradigm will be in Block Themes? Our experience so far is that Block Themes are fairly lightweight.

Similar to @nosolosw, I do believe child themes will still be part of the block themes paradigm.

I imagine a base theme having complex CSS to implement a very custom design, and then some child themes may exist that simply customize the base design for different verticals e.g: apply minor changes using theme.json, and maybe change a template part like the header.

Child themes are also a manifestation of the "Open Source way of doing the things", I may have some changes I require to a theme, most of the theme is ok for my use case by I need to change a specific part. I can change that part using the block editor and then I think other people may like my change and I publish a child theme with only the parts I changed. Users of my child theme still benefit from updates to the base theme.

I think in the future (not very close one) if we want we may even have a feature that would allow publishing my modifications to a theme directly as a child theme to the theme repository.

array(
'taxonomy' => 'wp_theme',
'field' => 'slug',
'terms' => wp_get_theme()->get_stylesheet(),
),
array(
Copy link
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Depending on how complex this PR gets it may make sense to split into two PR's: One that adds child theme support for FSE and another that adds it to Global Styles.

@oandregal
Copy link
Member Author

Going to post this one for now. I've seen there's rapid movement in the FSE/templates area and I believe when that's more settle I can resume this work.

Base automatically changed from master to trunk March 1, 2021 15:44
@oandregal
Copy link
Member Author

I don't know when can I get back to work on this, so I'm closing it for the time being.

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
Global Styles Anything related to the broader Global Styles efforts, including Styles Engine and theme.json [Status] In Progress Tracking issues with work in progress
Projects
None yet
Development

Successfully merging this pull request may close these issues.

FSE: support for child themes
3 participants