Skip to content

Add Ipsum, the new default theme for 7.2 - #14558

Open
MaggieCabrera wants to merge 7 commits into
WordPress:trunkfrom
MaggieCabrera:add/ipsum
Open

MaggieCabrera wants to merge 7 commits into
WordPress:trunkfrom
MaggieCabrera:add/ipsum

Conversation

@MaggieCabrera

@MaggieCabrera MaggieCabrera commented Oct 20, 2026 •

Copy link
Copy Markdown

Imports Ipsum from https://github.com/WordPress/ipsum and makes it the default theme for WordPress 7.2.

Trac ticket: https://core.trac.wordpress.org/ticket/66352

Ipsum drops the year-based naming, and a few places only look for twenty* themes:

  • The build only copies wp-content/themes/twenty*, so Ipsum would be missing from builds and packages.
  • PHPCS, the PHP compatibility check and PHPStan skip it the same way. With it added, Ipsum passes all three as is.
  • test_default_theme_in_default_theme_list() expected a twenty prefix.

The commits can land separately, like the Twenty Twenty-Five import and its follow-up:

  1. The theme files from WordPress/ipsum@b3a4bca. Repository tooling and development docs stay on GitHub.
  2. Bundled theme conventions: Version: 1.0, Tested up to: 7.2, the readme title and changelog entry, and a final newline in every file. These need to go back to the Ipsum repository too, so the next sync doesn't undo them.
  3. The default theme switch. Since 6.7, the theme tests need WP_DEFAULT_THEME, WP_Theme::$default_themes, $_new_bundled_files and the tested themes to change together.
  4. Build, lint and the default themes workflow.

Testing Instructions

  1. Open the Playground preview. Ipsum is the active theme on the new site.
  2. Browse the front end and open the Site Editor. Templates, parts and patterns load.
  3. Run npm run test:php -- --group themes. All tests pass.

Use of AI Tools

AI assistance: Yes
Tool(s): Claude Code
Model(s): Claude Opus 5.5
Used for: Comparing this with earlier default theme imports, preparing the commits, running the checks, and testing Ipsum on Playground with WordPress 7.1 and 7.2 without Gutenberg. I reviewed all the changes.


This Pull Request is for code review only. Please keep all other discussion in the Trac ticket. Do not merge this Pull Request. See GitHub Pull Requests for Code Review in the Core Handbook for more details.

🤖 Generated with Claude Code

MaggieCabrera and others added 4 commits October 20, 2026 18:26
Imports the theme files from https://github.com/WordPress/ipsum at b3a4bca4d69624fc2579b2cdd834ad4a30df9273. Repository tooling and development docs stay in the GitHub repository.

See #66352.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Sets the version to 1.0 and "Tested up to" to 7.2, uses the `=== Name ===` readme title and the release changelog entry of the other bundled themes, and ends every file with a newline.

See #66352.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Adds Ipsum to the default themes in `WP_Theme`, to the new bundled files installed on upgrade and to the tested themes, and sets `WP_DEFAULT_THEME` to `ipsum`.

Ipsum moves away from year-based names, so the test for the default theme list no longer expects a `twenty` prefix.

See #66352.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
The build, PHPCS, the PHP compatibility check and PHPStan only pick up bundled themes named `twenty*`, so Ipsum is added to each of them. Without this, Ipsum would be missing from builds and packages.

Ipsum is also added to the empty file check and ZIP jobs of the default themes workflow.

See #66352.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
@github-actions

Copy link
Copy Markdown

Test using WordPress Playground

The changes in this pull request can previewed and tested using a WordPress Playground instance.

WordPress Playground is an experimental project that creates a full WordPress instance entirely within the browser.

Some things to be aware of

  • All changes will be lost when closing a tab with a Playground instance.
  • All changes will be lost when refreshing the page.
  • A fresh instance is created each time the link below is clicked.
  • Every time this pull request is updated, a new ZIP file containing all changes is created. If changes are not reflected in the Playground instance,
    it's possible that the most recent build failed, or has not completed. Check the list of workflow runs to be sure.

For more details about these limitations and more, check out the Limitations page in the WordPress Playground documentation.

Test this pull request with WordPress Playground.

@MaggieCabrera

Copy link
Copy Markdown
Author

@desrosj pinging you here for your knowledge with default theme stuff

@MaggieCabrera

MaggieCabrera commented Oct 20, 2026 •

Copy link
Copy Markdown
Author

Props list for the theme as of today:

Props onemaggie, juanfra, poena, iamarinoh, shailu25, areziaal, josephscott, ddewan, noruzzaman, williampatton, jeffpaul, kafleg, maneshtimilsina, sakshamsharma5, soean, moonjellydigital, sheulyshila, yashjawale, maxinacube, mukesh27, nilambar, huzaifaalmesbah, mukeshpanchal27.

Like the other block default themes since Twenty Twenty-Two, Ipsum requires the release it ships in.

See #66352.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>

@peterwilsoncc peterwilsoncc left a comment

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

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

I know this is a WIP but I've added a note inline.

For the @font-face and image files, is it possible to add a cache busting string to the rendered version, ie ?ver=20261021, either via a filter or in theme.json? It's helpful for cache busting on sites with long caches for static files.

Thirty days or longer is pretty typical these days as lighthouse calls out shorter caching headers.

As with the inline comment, this isn't a blocker. Not even close...

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

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

A few naming things suggestions for this file. I don't think they block the initial commit but would be good to change prior to the production release.

The key word above is suggestions, feel free to push back:

  • ipsum_register_editor_styles
  • ipsum_add_theme_support
  • ipsum_enqueue_styles
  • ipsum_register_block_styles

Nitty nit nit pick: as I say, feel free to push back :)

Copy link
Copy Markdown
Member

Choose a reason for hiding this comment

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

…n images.

The hooked functions now start with what they do, such as `ipsum_enqueue_styles()` and `ipsum_register_block_styles()`. Pattern image URLs end in `?ver=` and the theme version, so sites with long static file caches get a changed image after an update. The function docblocks also follow the documentation standards.

Synced from WordPress/ipsum#163, which includes WordPress/ipsum#161.

See #66352.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
MaggieCabrera added a commit to WordPress/ipsum that referenced this pull request Oct 21, 2026
Renames the hooked functions to start with the verb of what they do, as suggested in the core review: ipsum_register_editor_styles(), ipsum_add_theme_support(), ipsum_enqueue_styles(), ipsum_register_block_styles(), and ipsum_register_pattern_categories() to match.

See WordPress/wordpress-develop#14558 (comment).

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
MaggieCabrera added a commit to WordPress/ipsum that referenced this pull request Oct 21, 2026
Pattern images now end in ?ver= and the theme version, so browsers and proxies that cache static files for a long time fetch an image again after a theme update.

See WordPress/wordpress-develop#14558 (review).

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
@MaggieCabrera

MaggieCabrera commented Oct 21, 2026 •

Copy link
Copy Markdown
Author

For the @font-face and image files, is it possible to add a cache busting string to the rendered version, ie ?ver=20261021, either via a filter or in theme.json? It's helpful for cache busting on sites with long caches for static files.

Thirty days or longer is pretty typical these days as lighthouse calls out shorter caching headers.

Images are versioned now. Fonts can’t be yet, because core works out the font format from the end of the URL, so .woff2?ver=1.0 gets dropped. That needs a core fix first.

MaggieCabrera added a commit to WordPress/ipsum that referenced this pull request Oct 21, 2026
#163)

* Name the theme functions after what they do

Renames the hooked functions to start with the verb of what they do, as suggested in the core review: ipsum_register_editor_styles(), ipsum_add_theme_support(), ipsum_enqueue_styles(), ipsum_register_block_styles(), and ipsum_register_pattern_categories() to match.

See WordPress/wordpress-develop#14558 (comment).

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>

* Add the theme version to pattern image URLs

Pattern images now end in ?ver= and the theme version, so browsers and proxies that cache static files for a long time fetch an image again after a theme update.

See WordPress/wordpress-develop#14558 (review).

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>

---------

Co-authored-by: Claude Opus 5.5 <noreply@anthropic.com>
@MaggieCabrera
MaggieCabrera marked this pull request as ready for review October 21, 2026 09:01
@github-actions

Copy link
Copy Markdown

The following accounts have interacted with this PR and/or linked issues. I will continue to update these lists as activity occurs. You can also manually ask me to refresh this list by adding the props-bot label.

Core Committers: Use this line as a base for the props when committing in SVN:

Props onemaggie, peterwilsoncc, mukesh27.

To understand the WordPress project's expectations around crediting contributors, please review the Contributor Attribution page in the Core Handbook.

Each selector in a list goes on its own line, the link underline rule gets its missing semicolon, and the more block comment closes like the others. The header and footer `margin-block-start: 0` rule drops `!important`, because its selector already beats the root block gap rules on the front end and in the editor.

Synced from WordPress/ipsum#162.

See #66352.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

3 participants