Opened 4 weeks ago
Closed 3 weeks ago
#64434 closed defect (bug) (fixed)
Theme_JSON_Resolver throws fatals in some scenarios
| Reported by: |
|
Owned by: |
|
|---|---|---|---|
| Milestone: | 7.0 | Priority: | normal |
| Severity: | normal | Version: | trunk |
| Component: | Editor | Keywords: | has-patch commit |
| Focuses: | Cc: |
Description
## Description
In certain scenarios, when the Theme_JSON_Resolver gets a post to prepare the user styles, it's null.
For example, in [this line https://github.com/WordPress/wordpress-develop/blob/44f1517e8f6dd72710a143420c3a0c2bae1a3766/src/wp-includes/class-wp-theme-json-resolver.php#L535], get_post function returns null after the wp_insert_post function is called. Although the post is saved, it's assumed that it can be immediately accessed, which is not always true.
## How to reproduce
Unfortunately, there's no steps to reproduce it consistently. We've just seen reports by hosts that this happens occassionally in certain transition states for the site (creation, migration, etc.).
Change History (5)
This ticket was mentioned in PR #10648 on WordPress/wordpress-develop by @oandregal.
4 weeks ago
#1
#2
@
4 weeks ago
https://github.com/WordPress/wordpress-develop/pull/10648 backports the same changes done in Gutenberg at https://github.com/WordPress/gutenberg/pull/74124
#3
@
4 weeks ago
- Keywords commit added
I had approved the Gutenberg PR and have now tested this patch too. Let's get it in.
@mcsf commented on PR #10648:
3 weeks ago
#4
I think it's better to be explicit that it's a
WP_Post.
Good point, agreed.
Trac ticket: https://core.trac.wordpress.org/ticket/64434
Backports https://github.com/WordPress/gutenberg/pull/74124
## What?
This PR adds defensive checks to prevent some errors we've seen in hosts.
In certain scenarios, get_post function returns null after the wp_insert_post function is called. Although the post is saved, it's assumed that it can be immediately accessed, which is not always true.
## Why?
See https://github.com/WordPress/gutenberg/issues/70161
## How?
Check if it's an object before passing it to
get_object_vars.