v13.34.0-beta
Pre-release
Pre-release
·
46 commits
to main
since this release
The framework's version tracks Laravel's: this beta requires Laravel 13.34.
Added
- A third
pollora:make:themetemplate, Magazine (magazine→pollora/theme-buzz): a Full Site Editing block theme whose templates, parts and patterns are edited in the Site Editor, next todefaultandecommerce. The missing-theme page and admin notice list it too
Fixed
- A Vite script was printed before WordPress's import map, which Firefox and Safari then ignore: any WordPress script module on the page — the navigation block's, the search block's, the image lightbox's — failed on
@wordpress/interactivity was a bare specifier, so the block did nothing. Chromium tolerates the order, which hid it. In a classic theme the import map is always in the footer, so any theme with a Vite script in the head was affected as soon as an author inserted such a block. The Vite client of the dev server had the same problem - A block theme's own
404.htmlanswered with HTTP 200. WordPress core resolves it towp-includes/template-canvas.php, which is never a Blade view, so it always rendered throughFrontendController's raw-PHP-template branch — the only branch that never looked atis_404(). Measured on a fresh block theme: right content, wrong status - A real 404 lost its
error404body class, and every page served by the template hierarchy carried a meaningless one built from its path (any-no-such-page). TheWordPressBodyClassmiddleware was meant for Laravel routes, which WordPress's own resolution calls a 404, but it only ran on WordPress routes — the{any}fallback included — where WordPress's verdict is the right one. So it did the opposite of its job on both sides: a Laravel route (Route::get('/dashboard/{tab}')) kepterror404,is_404()true and a "Page not found" title over its 200 response
Changed
- Requires Laravel 13.34:
illuminate/*^13.34(was^13.32). Measured onlaravel/frameworkv13.34.0: the full suite, Pint, PHPStan and Rector pass unchanged - The
WordPressBodyClassmiddleware is replaced by aRouteMatchedlistener,ApplyApplicationRouteContext, which runs on every route: a route WordPress answers (Route::wp()and the template-hierarchy fallback, both flaggedisWordPressRoute()) keeps WordPress's classes and verdict untouched; any other route hasis_404()cleared and its URI segments added as body classes (dashboard tab-settings). A middleware could not do this — Laravel routes are not given the WordPress middleware stack - On the front end and in the admin, a Vite script is enqueued as a WordPress script module (
wp_enqueue_script_module), so WordPress places it after its import map, as it does its own modules: in the head of a block theme (the footer withloadInFooter()), always in the footer of a classic theme. What a module cannot take —dependencies(),localize(),inline()— goes on a classic companion script,{handle}-data, which runs before the module. The editor, login screen and Customizer are unchanged