Skip to content

Commit

Permalink
REST API: Declare 'edit_css' capability in links within `WP_REST_Glob…
Browse files Browse the repository at this point in the history
…al_Styles_Controller`.

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

References:
* [WordPress/gutenberg#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
  • Loading branch information
hellofromtonya committed Feb 1, 2023
1 parent 7374cde commit 36da826
Show file tree
Hide file tree
Showing 2 changed files with 24 additions and 0 deletions.
Original file line number Diff line number Diff line change
Expand Up @@ -431,6 +431,7 @@ protected function prepare_links( $id ) {
* 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.
*/
Expand All @@ -442,6 +443,10 @@ protected function get_available_actions() {
$rels[] = 'https://api.w.org/action-publish';
}

if ( current_user_can( 'edit_css' ) ) {
$rels[] = 'https://api.w.org/action-edit-css';
}

return $rels;
}

Expand Down
19 changes: 19 additions & 0 deletions tests/phpunit/tests/rest-api/rest-global-styles-controller.php
Original file line number Diff line number Diff line change
Expand Up @@ -513,4 +513,23 @@ public function test_get_theme_items() {
);
$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 );
}
}
}

0 comments on commit 36da826

Please sign in to comment.