Query: Check if `$wp_query` is set in query loop functions.

This avoids a PHP fatal error if any of these functions are called too early:

* `have_posts()`
* `in_the_loop()`
* `rewind_posts()`
* `the_post()`
* `have_comments()`
* `the_comment()`

bringing some consistency with conditional tags: `is_single()`, `is_home()`, etc.

This commit also removes unnecessary `return` from `the_comment()`, for consistency with `the_post()`. As `WP_Query::the_comment()` does not have a return value, this statement did not have any effect in practice.

Follow-up to [4934], [8807], [16947], [17068], [17083], [49147], [53395], [53396], [53400].

Props vdankbaar, thijso, teunvgisteren, timkersten655, SergeyBiryukov.
Fixes #55722.
Built from https://develop.svn.wordpress.org/trunk@53429


git-svn-id: http://core.svn.wordpress.org/trunk@53018 1a063a9b-81f0-0310-95a4-ce76da25c4cd
This commit is contained in:
Sergey Biryukov 2022-05-22 15:17:14 +00:00
parent f4af743ea7
commit f6412575c8
2 changed files with 32 additions and 4 deletions

View File

@ -939,6 +939,11 @@ function is_main_query() {
*/ */
function have_posts() { function have_posts() {
global $wp_query; global $wp_query;
if ( ! isset( $wp_query ) ) {
return false;
}
return $wp_query->have_posts(); return $wp_query->have_posts();
} }
@ -957,6 +962,11 @@ function have_posts() {
*/ */
function in_the_loop() { function in_the_loop() {
global $wp_query; global $wp_query;
if ( ! isset( $wp_query ) ) {
return false;
}
return $wp_query->in_the_loop; return $wp_query->in_the_loop;
} }
@ -969,6 +979,11 @@ function in_the_loop() {
*/ */
function rewind_posts() { function rewind_posts() {
global $wp_query; global $wp_query;
if ( ! isset( $wp_query ) ) {
return;
}
$wp_query->rewind_posts(); $wp_query->rewind_posts();
} }
@ -981,6 +996,11 @@ function rewind_posts() {
*/ */
function the_post() { function the_post() {
global $wp_query; global $wp_query;
if ( ! isset( $wp_query ) ) {
return;
}
$wp_query->the_post(); $wp_query->the_post();
} }
@ -999,6 +1019,11 @@ function the_post() {
*/ */
function have_comments() { function have_comments() {
global $wp_query; global $wp_query;
if ( ! isset( $wp_query ) ) {
return false;
}
return $wp_query->have_comments(); return $wp_query->have_comments();
} }
@ -1008,12 +1033,15 @@ function have_comments() {
* @since 2.2.0 * @since 2.2.0
* *
* @global WP_Query $wp_query WordPress Query object. * @global WP_Query $wp_query WordPress Query object.
*
* @return null
*/ */
function the_comment() { function the_comment() {
global $wp_query; global $wp_query;
return $wp_query->the_comment();
if ( ! isset( $wp_query ) ) {
return;
}
$wp_query->the_comment();
} }
/** /**

View File

@ -16,7 +16,7 @@
* *
* @global string $wp_version * @global string $wp_version
*/ */
$wp_version = '6.1-alpha-53428'; $wp_version = '6.1-alpha-53429';
/** /**
* Holds the WordPress DB revision, increments when changes are made to the WordPress DB schema. * Holds the WordPress DB revision, increments when changes are made to the WordPress DB schema.