mirror of
https://github.com/gosticks/wordpress-develop.git
synced 2025-10-16 12:05:38 +00:00
Users: Correct the logic for switch_to_blog() in WP_User_Query::generate_cache_key().
If `$blog_id` equals `0`, it should be treated as the current site ID, and there is no need to switch to a different site.
This commit prevents an unnecessary call to `switch_to_blog()` on single site to avoid a fatal error when using `'orderby' => 'post_count'` and the deprecated `'who' => 'authors'` parameter:
{{{
Uncaught Error: Call to undefined function switch_to_blog() in wp-includes/class-wp-user-query.php:1077
}}}
Follow-up to [55657].
Props dd32, austinginder, RavanH, mukesh27.
Fixes #59011.
git-svn-id: https://develop.svn.wordpress.org/trunk@56381 602fd350-edb4-49c9-b593-d223f7449a82
This commit is contained in:
parent
37b145a0e4
commit
e5b586bfd0
@ -1071,12 +1071,15 @@ class WP_User_Query {
|
||||
if ( isset( $args['blog_id'] ) ) {
|
||||
$blog_id = absint( $args['blog_id'] );
|
||||
}
|
||||
if ( ( $args['has_published_posts'] && $blog_id ) || in_array( 'post_count', $ordersby, true ) ) {
|
||||
$switch = get_current_blog_id() !== $blog_id;
|
||||
|
||||
if ( $args['has_published_posts'] || in_array( 'post_count', $ordersby, true ) ) {
|
||||
$switch = $blog_id && get_current_blog_id() !== $blog_id;
|
||||
if ( $switch ) {
|
||||
switch_to_blog( $blog_id );
|
||||
}
|
||||
|
||||
$last_changed .= wp_cache_get_last_changed( 'posts' );
|
||||
|
||||
if ( $switch ) {
|
||||
restore_current_blog();
|
||||
}
|
||||
|
||||
@ -778,4 +778,26 @@ class Tests_User_Query_Cache extends WP_UnitTestCase {
|
||||
|
||||
$this->assertSame( $cache_key_1, $cache_key_2, 'Cache key differs when using wpdb placeholder.' );
|
||||
}
|
||||
|
||||
/**
|
||||
* Verifies that generate_cache_key() does not throw a fatal error for switch_to_blog()
|
||||
* with 'orderby' => 'post_count' and the deprecated 'who' => 'authors' parameter.
|
||||
*
|
||||
* @ticket 59011
|
||||
* @covers ::generate_cache_key
|
||||
*
|
||||
* @expectedDeprecated WP_User_Query
|
||||
*/
|
||||
public function test_generate_cache_key_with_orderby_post_count_and_deprecated_who_parameter() {
|
||||
$query = new WP_User_Query(
|
||||
array(
|
||||
'fields' => 'ID',
|
||||
'orderby' => 'post_count',
|
||||
'order' => 'DESC',
|
||||
'who' => 'authors',
|
||||
)
|
||||
);
|
||||
|
||||
$this->assertNotEmpty( $query->get_results() );
|
||||
}
|
||||
}
|
||||
|
||||
Loading…
Reference in New Issue
Block a user