From bc07c9dd9f3889d4bf23b7399984151bea22e882 Mon Sep 17 00:00:00 2001 From: danielbachhuber Date: Mon, 8 Oct 2018 22:45:25 +0000 Subject: [PATCH] REST API: Declare `unfiltered_html` capability in links. Because user capabilities can be modified at runtime, the REST API needs to expose them in some evaluated but declarative manner for clients to interpret. JSON Hyper Schema `targetSchema` provides an appropriate paradigm for doing so. Props timothyblynjacobs. Fixes #45014. Built from https://develop.svn.wordpress.org/branches/5.0@43682 git-svn-id: http://core.svn.wordpress.org/branches/5.0@43511 1a063a9b-81f0-0310-95a4-ce76da25c4cd --- .../class-wp-rest-posts-controller.php | 20 +++++++++++++++++++ wp-includes/version.php | 2 +- 2 files changed, 21 insertions(+), 1 deletion(-) diff --git a/wp-includes/rest-api/endpoints/class-wp-rest-posts-controller.php b/wp-includes/rest-api/endpoints/class-wp-rest-posts-controller.php index d48c03700c..e94601ea28 100644 --- a/wp-includes/rest-api/endpoints/class-wp-rest-posts-controller.php +++ b/wp-includes/rest-api/endpoints/class-wp-rest-posts-controller.php @@ -1770,6 +1770,10 @@ class WP_REST_Posts_Controller extends WP_REST_Controller { $rels[] = 'https://api.w.org/action-publish'; } + if ( current_user_can( 'unfiltered_html' ) ) { + $rels[] = 'https://api.w.org/action-unfiltered-html'; + } + if ( 'post' === $post_type->name ) { if ( current_user_can( $post_type->cap->edit_others_posts ) && current_user_can( $post_type->cap->publish_posts ) ) { $rels[] = 'https://api.w.org/action-sticky'; @@ -2179,6 +2183,22 @@ class WP_REST_Posts_Controller extends WP_REST_Controller { ); } + $links[] = array( + 'rel' => 'https://api.w.org/action-unfiltered-html', + 'title' => __( 'The current user can post unfiltered HTML markup and JavaScript.' ), + 'href' => $href, + 'targetSchema' => array( + 'type' => 'object', + 'properties' => array( + 'content' => array( + 'raw' => array( + 'type' => 'string', + ), + ), + ), + ), + ); + if ( 'post' === $this->post_type ) { $links[] = array( 'rel' => 'https://api.w.org/action-sticky', diff --git a/wp-includes/version.php b/wp-includes/version.php index 4d8a14922b..681502fa04 100644 --- a/wp-includes/version.php +++ b/wp-includes/version.php @@ -4,7 +4,7 @@ * * @global string $wp_version */ -$wp_version = '5.0-alpha-43681'; +$wp_version = '5.0-alpha-43682'; /** * Holds the WordPress DB revision, increments when changes are made to the WordPress DB schema.