From 58a58832aec272e20b410555ab4d3ccb70570113 Mon Sep 17 00:00:00 2001 From: Sainath Poojary Date: Mon, 22 Jun 2026 17:15:24 +0530 Subject: [PATCH 1/2] XML-RPC: Expose site icon in wp.getUsersBlogs response --- src/wp-includes/class-wp-xmlrpc-server.php | 2 ++ 1 file changed, 2 insertions(+) diff --git a/src/wp-includes/class-wp-xmlrpc-server.php b/src/wp-includes/class-wp-xmlrpc-server.php index 8cbf6d977f5a2..2d7fe58f7cdf5 100644 --- a/src/wp-includes/class-wp-xmlrpc-server.php +++ b/src/wp-includes/class-wp-xmlrpc-server.php @@ -780,6 +780,7 @@ public function wp_getUsersBlogs( $args ) { 'blogid' => (string) $blog_id, 'blogName' => get_option( 'blogname' ), 'xmlrpc' => site_url( 'xmlrpc.php', 'rpc' ), + 'siteIcon' => get_site_icon_url( 512 ), ); restore_current_blog(); @@ -4867,6 +4868,7 @@ public function blogger_getUsersBlogs( $args ) { 'blogid' => '1', 'blogName' => get_option( 'blogname' ), 'xmlrpc' => site_url( 'xmlrpc.php', 'rpc' ), + 'siteIcon' => get_site_icon_url( 512 ), ); return array( $struct ); From afb5df8588bd969393a4bcea04d3785e4ddc15ec Mon Sep 17 00:00:00 2001 From: Sainath Poojary Date: Tue, 23 Jun 2026 16:15:33 +0530 Subject: [PATCH 2/2] XML-RPC: Add unit tests for site icon in wp.getUsersBlogs --- .../phpunit/tests/xmlrpc/wp/getUsersBlogs.php | 60 +++++++++++++++++++ 1 file changed, 60 insertions(+) create mode 100644 tests/phpunit/tests/xmlrpc/wp/getUsersBlogs.php diff --git a/tests/phpunit/tests/xmlrpc/wp/getUsersBlogs.php b/tests/phpunit/tests/xmlrpc/wp/getUsersBlogs.php new file mode 100644 index 0000000000000..63a5854c4f37b --- /dev/null +++ b/tests/phpunit/tests/xmlrpc/wp/getUsersBlogs.php @@ -0,0 +1,60 @@ +make_user_by_role( 'subscriber' ); + + // wp_getUsersBlogs + $result = $this->myxmlrpcserver->wp_getUsersBlogs( array( 'subscriber', 'subscriber' ) ); + $this->assertNotIXRError( $result ); + $this->assertIsArray( $result ); + $this->assertArrayHasKey( 0, $result ); + $this->assertArrayHasKey( 'siteIcon', $result[0] ); + $this->assertSame( '', $result[0]['siteIcon'] ); + + // blogger_getUsersBlogs + $result_blogger = $this->myxmlrpcserver->blogger_getUsersBlogs( array( '', 'subscriber', 'subscriber' ) ); + $this->assertNotIXRError( $result_blogger ); + $this->assertIsArray( $result_blogger ); + $this->assertArrayHasKey( 0, $result_blogger ); + $this->assertArrayHasKey( 'siteIcon', $result_blogger[0] ); + $this->assertSame( '', $result_blogger[0]['siteIcon'] ); + } + + public function test_with_site_icon() { + $subscriber_id = $this->make_user_by_role( 'subscriber' ); + + // Create an attachment and set it as site_icon + $attachment_id = self::factory()->attachment->create_object( + array( + 'file' => DIR_TESTDATA . '/images/test-image.jpg', + 'post_mime_type' => 'image/jpeg', + 'post_type' => 'attachment', + ) + ); + update_option( 'site_icon', $attachment_id ); + + $expected_url = get_site_icon_url( 512 ); + + // wp_getUsersBlogs + $result = $this->myxmlrpcserver->wp_getUsersBlogs( array( 'subscriber', 'subscriber' ) ); + $this->assertNotIXRError( $result ); + $this->assertIsArray( $result ); + $this->assertArrayHasKey( 0, $result ); + $this->assertArrayHasKey( 'siteIcon', $result[0] ); + $this->assertSame( $expected_url, $result[0]['siteIcon'] ); + + // blogger_getUsersBlogs + $result_blogger = $this->myxmlrpcserver->blogger_getUsersBlogs( array( '', 'subscriber', 'subscriber' ) ); + $this->assertNotIXRError( $result_blogger ); + $this->assertIsArray( $result_blogger ); + $this->assertArrayHasKey( 0, $result_blogger ); + $this->assertArrayHasKey( 'siteIcon', $result_blogger[0] ); + $this->assertSame( $expected_url, $result_blogger[0]['siteIcon'] ); + } +}