v13.32.0-beta.3
Pre-release
Pre-release
·
197 commits
to main
since this release
Fixed
- The block editor now shows the theme's own styles, so a block looks in the back office much like it does on the front. Both default themes declare
editor-stylessupport, but that support only tells WordPress how to treat the styles it is handed — it loads none, and nothing named any: theme assets are registered withtoFrontend(), leaving the editor with theme.json's variables and none of the rules built from them. The theme's built stylesheets are read from its Vite manifest and passed toadd_editor_style(), which is what reaches inside the editor iframe; enqueueing onenqueue_block_editor_assetslands in the admin page around it instead. Any theme declaring the support gets this, with no change of its own - Multisite is usable again.
Bootstrap::rewriteNetworkUrl()is hooked to thenetwork_site_urlfilter, which WordPress applies with a$schemeofnullwhenever no explicit scheme is requested — the common case — while the method declared a non-nullablestring $scheme. Every request fatalled as soon asMULTISITEwas enabled, the admin included.$pathand$schemenow carry defaults matching the filter's own signature; single-site installs never reach this path (#296) pollora:installno longer leaves a site whose articles answer 404. It set the permalink structure and flushed, but the rule set WordPress can build mid-install is incomplete — taxonomies and post types are not all registered at that point — so flushing stored exactly that, and every single-post URL 404'd until something flushed again later. The option is dropped instead, letting WordPress rebuild it on the first request. This is the same reasoningcompleteWebInstall()already applied to the WordPress web installer; that hook is registered only outside the console, so the command-line install never went through it. Measured on a fresh install: 404 on an article before, 200 after- The missing-theme guidance page now reaches the case it was written for. It was wired only onto the exception handler, catching the
View [home] not foundthatview()used to throw; since the skeleton stopped declaring WordPress routes the template hierarchy decides, nothing callsview(), nothing throws, and a site with no theme answered a bare 404 instead — the crash the page exists to replace, wearing a different status code. The request is now taken over ontemplate_redirect, which WordPress fires before any template is chosen and whichrunWp()reaches before Laravel routes, alongside the existing handling for robots, favicons, feeds and trackbacks. The exception path stays for anything still routing throughview(), and its registration no longer sits behind a guard that could skip the hook. The admin, AJAX and REST keep their normal responses: the admin is where the user goes to fix this - Blade templates now outrank the PHP stubs at a theme's root. The root holds the files WordPress needs to consider the theme valid —
index.phpin particular, which ships as "Silence is golden" — and was registered as a view path ahead ofresources/views, solocate()ranked itsindex.phpaboveresources/views/index.blade.php. Every request the template hierarchy could not match to a more specific template (archives, search, custom post types, any single view without its own template) rendered that stub: HTTP 200 with an empty body and no error anywhere. Blade and PHP candidates are now collected separately so every Blade one wins, and view paths are registered in the order they are declared. A classic PHP template with no Blade equivalent is still used - Installing WordPress on a URL where a site already answers no longer dies with
Class "WP_Http_Cookie" not found.wp_install()callswp_remote_get()on the site URL andWP_Httpbuilds aWP_Http_Cookiefor everySet-Cookieheader it gets back, but the install bootstrap loaded only part of the HTTP stack. It now loads the classeswp-settings.phploads, in its order. This affected reinstalls, migrations, and taking a domain back - wordpress.org no longer offers updates for the themes the project scaffolds. WordPress sends every installed theme to its update API keyed by the directory name, so a theme whose name matches a published slug is offered that unrelated theme —
default, whichpollora:installgenerates, matches one, and accepting the offer replaced the project's theme with a download of the theme published there in 2005. Offers aimed at a theme in the project's themes directory are moved tono_update. TheUpdate URIheader does not cover this on its own: WordPress consults the matchingupdate_themes_{$hostname}filter only when wordpress.org returned nothing for that theme - A site installed through the WordPress web installer no longer answers 404 on every category, tag and date archive. The rewrite rules WordPress stores during its own install are incomplete — taxonomies and post types are not all registered at that point — and nothing regenerated them afterwards. The option is now dropped on
wp_install, where the migrations already run, so WordPress rebuilds the rules on a later request - wp-admin no longer reports the active theme as missing while the front end renders it.
get_stylesheet_directory()goes through thetheme_rootfilter Pollora sets, butwp_get_theme()computes the root itself and no filter applies there. Registering Pollora's themes directory replaced$wp_theme_directoriesinstead of appending to it, andget_raw_theme_root()answers a hardcoded/themeswhenever a single directory is registered, whichwp_get_theme()then resolves againstWP_CONTENT_DIR. WordPress's own themes directory is kept alongside Pollora's, and thestylesheet_rootandtemplate_rootoptions now hold the directory containing the themes rather than the active theme's own directory, which was one level too deep - A site installed through the WordPress web installer explains what to do instead of crashing. That path never runs
pollora:install, sothemes/stays empty while thestylesheetoption already points atWP_DEFAULT_THEME, and every front-end request died onView [home] not found. A missing view on a front-end request now renders a page naming the two theme templates and the command that scaffolds them, and wp-admin carries the same warning. It applies only while the site has no theme at all, so a headless install keeps working and a theme missing a single template still surfaces its real error