[wp-trac] [WordPress Trac] #55656: PHP 8.x: various compatibility fixes for WordPress 6.1
WordPress Trac
noreply at wordpress.org
Tue Sep 27 01:58:57 UTC 2022
#55656: PHP 8.x: various compatibility fixes for WordPress 6.1
-------------------------------------------------+-------------------------
Reporter: hellofromTonya | Owner:
| SergeyBiryukov
Type: task (blessed) | Status: accepted
Priority: normal | Milestone: 6.1
Component: General | Version:
Severity: normal | Resolution:
Keywords: php8 php81 has-patch has-unit-tests | Focuses: coding-
| standards
-------------------------------------------------+-------------------------
Comment (by SergeyBiryukov):
In [changeset:"54320" 54320]:
{{{
#!CommitTicketReference repository="" revision="54320"
Code Modernization: Fix null to non-nullable deprecations in
`wp_xmlrpc_server::mw_newPost()`.
The `wp_xmlrpc_server::mw_newPost()` method creates a new post via
`wp_insert_post()`, but the default/fallback values used in the function
were not in line with the default/fallback values used in the
`wp_insert_post()` function.
The `wp_insert_post()` function does a `wp_parse_args()` (array merge) of
the received arguments with the defaults. If any of the received arguments
are `null`, this would overwrite the default value, as seen in
[https://3v4l.org/bfVlv array_merge() example], and lead to "passing null
to non-nullable" deprecation notices on PHP 8.1 for certain arguments.
This commit:
* Ensures that all arguments are defined before they are `compact()`'ed
together to the arguments array.
* Verifies that the default/fallback value of the arguments as set within
the `wp_xmlrpc_server::mw_newPost()` method are the same as the
default/fallback values used in the `wp_insert_post()` function.
* Verifies that arguments which do not have a default/fallback value
defined in the `wp_insert_post()` function are handled correctly.
* This was not the case for `$post_name`, which would previously already
get an empty string default value in the `wp_xmlrpc_server::mw_newPost()`
function, but then in the `wp_insert_post()` function, this would prevent
the slug generation from being activated. Fixed now by setting the default
in the `wp_xmlrpc_server::mw_newPost()` function to `null`.
* The `page_template` argument was handled, but not documented in the
`wp_insert_post()` function. The argument is now documented in the
`wp_insert_post()` function DocBlock. Note: There are more than likely
several other potential arguments missing from that list, but verifying
the whole list is outside the scope of this particular commit.
Includes minor simplifications, such as:
* Setting a default ahead of an `if`, instead of in an `else` clause (as
long as no function call is needed to set the default).
* Removing the unnecessary logic duplication in the `$post_status` switch.
* Using a combined concatenation + assignment operator for adding
`$post_more`.
Fixes various errors along the lines of:
{{{
1) Tests_XMLRPC_mw_editPost::test_draft_not_prematurely_published
strpos(): Passing null to parameter #1 ($haystack) of type string is
deprecated
/var/www/src/wp-includes/formatting.php:2497
/var/www/src/wp-includes/class-wp-hook.php:308
/var/www/src/wp-includes/plugin.php:205
/var/www/src/wp-includes/post.php:2835
/var/www/src/wp-includes/post.php:2720
/var/www/src/wp-includes/post.php:4066
/var/www/src/wp-includes/class-wp-xmlrpc-server.php:5616
/var/www/tests/phpunit/tests/xmlrpc/mw/editPost.php:315
...
23) Tests_XMLRPC_mw_editPost::test_draft_not_prematurely_published
json_decode(): Passing null to parameter #1 ($json) of type string is
deprecated
/var/www/src/wp-includes/kses.php:2074
/var/www/src/wp-includes/class-wp-hook.php:307
/var/www/src/wp-includes/plugin.php:205
/var/www/src/wp-includes/post.php:2835
/var/www/src/wp-includes/post.php:2720
/var/www/src/wp-includes/post.php:4066
/var/www/src/wp-includes/class-wp-xmlrpc-server.php:5615
/var/www/tests/phpunit/tests/xmlrpc/mw/editPost.php:315
/var/www/vendor/bin/phpunit:123
}}}
Follow-up to [1563], [4793], [7900], [16824], [19848], [40677], [51968].
Props jrf.
See #55656.
}}}
--
Ticket URL: <https://core.trac.wordpress.org/ticket/55656#comment:41>
WordPress Trac <https://core.trac.wordpress.org/>
WordPress publishing platform
More information about the wp-trac
mailing list