REST API: Declare 'edit_css' capability in links within WP_REST_Global_Styles_Controller.

Updates the Global Styles endpoint to expose the `'edit_css'` capability via action links.

References:
* [https://github.com/WordPress/gutenberg/pull/46815 Gutenberg PR 46815] Part of an effort to hide custom CSS setting for users without `'edit_css'` capability.

Follow-up to [52342], [52051].

Props mamaduka, dsas, glendaviesnz, mmtr86, talldanwp, timothyblynjacobs.
Fixes #57526.

git-svn-id: https://develop.svn.wordpress.org/trunk@55177 602fd350-edb4-49c9-b593-d223f7449a82
This commit is contained in:
Tonya Mork
2023-02-01 18:36:08 +00:00
parent 7374cdeb74
commit 36da826901
2 changed files with 24 additions and 0 deletions

View File

@@ -431,6 +431,7 @@ class WP_REST_Global_Styles_Controller extends WP_REST_Controller {
* Get the link relations available for the post and current user.
*
* @since 5.9.0
* @since 6.2.0 Added 'edit-css' action.
*
* @return array List of link relations.
*/
@@ -442,6 +443,10 @@ class WP_REST_Global_Styles_Controller extends WP_REST_Controller {
$rels[] = 'https://api.w.org/action-publish';
}
if ( current_user_can( 'edit_css' ) ) {
$rels[] = 'https://api.w.org/action-edit-css';
}
return $rels;
}

View File

@@ -513,4 +513,23 @@ class WP_REST_Global_Styles_Controller_Test extends WP_Test_REST_Controller_Test
);
$this->assertSameSetsWithIndex( $data, $expected );
}
/**
* @covers WP_REST_Global_Styles_Controller::get_available_actions
*/
public function test_assign_edit_css_action_admin() {
wp_set_current_user( self::$admin_id );
$request = new WP_REST_Request( 'GET', '/wp/v2/global-styles/' . self::$global_styles_id );
$request->set_param( 'context', 'edit' );
$response = rest_do_request( $request );
$links = $response->get_links();
// Admins can only edit css on single site.
if ( is_multisite() ) {
$this->assertArrayNotHasKey( 'https://api.w.org/action-edit-css', $links );
} else {
$this->assertArrayHasKey( 'https://api.w.org/action-edit-css', $links );
}
}
}