Make WordPress Core

Ticket #38398: 38398.diff

File 38398.diff, 90.0 KB (added by DrewAPicture, 8 years ago)
  • src/wp-includes/rest-api/class-wp-rest-request.php

     
    359359
    360360                // Ensure we parse the body data.
    361361                $body = $this->get_body();
    362                 if ( $this->method !== 'POST' && ! empty( $body ) ) {
     362                if ( 'POST' !== $this->method && ! empty( $body ) ) {
    363363                        $this->parse_body_params();
    364364                }
    365365
     
    967967
    968968                $api_root = rest_url();
    969969                if ( get_option( 'permalink_structure' ) && 0 === strpos( $url, $api_root ) ) {
    970                         // Pretty permalinks on, and URL is under the API root
     970                        // Pretty permalinks on, and URL is under the API root.
    971971                        $api_url_part = substr( $url, strlen( untrailingslashit( $api_root ) ) );
    972972                        $route = parse_url( $api_url_part, PHP_URL_PATH );
    973973                } elseif ( ! empty( $query_params['rest_route'] ) ) {
  • src/wp-includes/rest-api/class-wp-rest-response.php

     
    246246                        $data = $this->get_data();
    247247                        $error->add( $data['code'], $data['message'], $data['data'] );
    248248                        if ( ! empty( $data['additional_errors'] ) ) {
    249                                 foreach( $data['additional_errors'] as $err ) {
     249                                foreach ( $data['additional_errors'] as $err ) {
    250250                                        $error->add( $err['code'], $err['message'], $err['data'] );
    251251                                }
    252252                        }
  • src/wp-includes/rest-api/class-wp-rest-server.php

     
    391391                        }
    392392
    393393                        if ( $jsonp_callback ) {
    394                                 // Prepend '/**/' to mitigate possible JSONP Flash attacks
     394                                // Prepend '/**/' to mitigate possible JSONP Flash attacks.
    395395                                // https://miki.it/blog/2014/7/8/abusing-jsonp-with-rosetta-flash/
    396396                                echo '/**/' . $jsonp_callback . '(' . $result . ')';
    397397                        } else {
     
    502502                                        continue;
    503503                                }
    504504
    505                                 // Relation now changes from '$uri' to '$curie:$relation'
     505                                // Relation now changes from '$uri' to '$curie:$relation'.
    506506                                $rel_regex = str_replace( '\{rel\}', '(.+)', preg_quote( $curie['href'], '!' ) );
    507507                                preg_match( '!' . $rel_regex . '!', $rel, $matches );
    508508                                if ( $matches ) {
     
    585585                        if ( $has_links ) {
    586586                                $embedded[ $rel ] = $embeds;
    587587                        }
    588                 }
     588                } // End foreach().
    589589
    590590                if ( ! empty( $embedded ) ) {
    591591                        $data['_embedded'] = $embedded;
     
    741741                                // Allow comma-separated HTTP methods.
    742742                                if ( is_string( $handler['methods'] ) ) {
    743743                                        $methods = explode( ',', $handler['methods'] );
    744                                 } else if ( is_array( $handler['methods'] ) ) {
     744                                } elseif ( is_array( $handler['methods'] ) ) {
    745745                                        $methods = $handler['methods'];
    746746                                } else {
    747747                                        $methods = array();
     
    753753                                        $method = strtoupper( trim( $method ) );
    754754                                        $handler['methods'][ $method ] = true;
    755755                                }
    756                         }
    757                 }
     756                        } // End foreach().
     757                } // End foreach().
    758758                return $endpoints;
    759759        }
    760760
     
    896896
    897897                                                if ( is_wp_error( $permission ) ) {
    898898                                                        $response = $permission;
    899                                                 } else if ( false === $permission || null === $permission ) {
     899                                                } elseif ( false === $permission || null === $permission ) {
    900900                                                        $response = new WP_Error( 'rest_forbidden', __( 'Sorry, you are not allowed to do that.' ), array( 'status' => 403 ) );
    901901                                                }
    902902                                        }
     
    958958                                $response->set_matched_handler( $handler );
    959959
    960960                                return $response;
    961                         }
    962                 }
     961                        } // End foreach().
     962                } // End foreach().
    963963
    964964                return $this->error_to_response( new WP_Error( 'rest_no_route', __( 'No route was found matching the URL and request method' ), array( 'status' => 404 ) ) );
    965965        }
     
    11931193                                        'self' => rest_url( $route ),
    11941194                                );
    11951195                        }
    1196                 }
     1196                } // End foreach().
    11971197
    11981198                if ( empty( $data['methods'] ) ) {
    11991199                        // No methods supported, hide the route.
  • src/wp-includes/rest-api/endpoints/class-wp-rest-controller.php

     
    11<?php
    2 
    3 
     2/**
     3 * REST API: WP_REST_Controller class
     4 *
     5 * @package WordPress
     6 * @subpackage REST_API
     7 * @since 4.7.0
     8 */
     9
     10/**
     11 * Core base class extended to access via REST API.
     12 *
     13 * @since 4.7.0
     14 */
    415abstract class WP_REST_Controller {
    516
    617        /**
    718         * The namespace of this controller's route.
    819         *
     20         * @since 4.7.0
     21         * @access protected
    922         * @var string
    1023         */
    1124        protected $namespace;
     
    1326        /**
    1427         * The base of this controller's route.
    1528         *
     29         * @since 4.7.0
     30         * @access protected
    1631         * @var string
    1732         */
    1833        protected $rest_base;
    1934
    2035        /**
    21          * Register the routes for the objects of the controller.
     36         * Registers the routes for the objects of the controller.
     37         *
     38         * @since 4.7.0
     39         * @access public
    2240         */
    2341        public function register_routes() {
    2442                _doing_it_wrong( 'WP_REST_Controller::register_routes', __( 'The register_routes() method must be overridden' ), 'WPAPI-2.0' );
    2543        }
    2644
    2745        /**
    28          * Check if a given request has access to get items.
     46         * Checks if a given request has access to get items.
     47         *
     48         * @since 4.7.0
     49         * @access public
    2950         *
    3051         * @param WP_REST_Request $request Full data about the request.
    31          * @return WP_Error|boolean
     52         * @return WP_Error|bool True if the request has read access, error object otherwise.
    3253         */
    3354        public function get_items_permissions_check( $request ) {
    3455                return new WP_Error( 'invalid-method', sprintf( __( "Method '%s' not implemented. Must be overridden in subclass." ), __METHOD__ ), array( 'status' => 405 ) );
    3556        }
    3657
    3758        /**
    38          * Get a collection of items.
     59         * Gets a collection of items.
     60         *
     61         * @since 4.7.0
     62         * @access public
    3963         *
    4064         * @param WP_REST_Request $request Full data about the request.
    41          * @return WP_Error|WP_REST_Response
     65         * @return WP_Error|WP_REST_Response Response object on success, or error object on failure.
    4266         */
    4367        public function get_items( $request ) {
    4468                return new WP_Error( 'invalid-method', sprintf( __( "Method '%s' not implemented. Must be overridden in subclass." ), __METHOD__ ), array( 'status' => 405 ) );
    4569        }
    4670
    4771        /**
    48          * Check if a given request has access to get a specific item.
     72         * Checks if a given request has access to get a specific item.
     73         *
     74         * @since 4.7.0
     75         * @access public
    4976         *
    5077         * @param WP_REST_Request $request Full data about the request.
    51          * @return WP_Error|boolean
     78         * @return WP_Error|bool True if the request has read access for the item, error object otherwise.
    5279         */
    5380        public function get_item_permissions_check( $request ) {
    5481                return new WP_Error( 'invalid-method', sprintf( __( "Method '%s' not implemented. Must be overridden in subclass." ), __METHOD__ ), array( 'status' => 405 ) );
    5582        }
    5683
    5784        /**
    58          * Get one item from the collection.
     85         * Gets one item from the collection.
     86         *
     87         * @since 4.7.0
     88         * @access public
    5989         *
    6090         * @param WP_REST_Request $request Full data about the request.
    61          * @return WP_Error|WP_REST_Response
     91         * @return WP_Error|WP_REST_Response Response object on success, or error object on failure.
    6292         */
    6393        public function get_item( $request ) {
    6494                return new WP_Error( 'invalid-method', sprintf( __( "Method '%s' not implemented. Must be overridden in subclass." ), __METHOD__ ), array( 'status' => 405 ) );
    6595        }
    6696
    6797        /**
    68          * Check if a given request has access to create items.
     98         * Checks if a given request has access to create items.
     99         *
     100         * @since 4.7.0
     101         * @access public
    69102         *
    70103         * @param WP_REST_Request $request Full data about the request.
    71          * @return WP_Error|boolean
     104         * @return WP_Error|bool True if the request has access to create items, error object otherwise.
    72105         */
    73106        public function create_item_permissions_check( $request ) {
    74107                return new WP_Error( 'invalid-method', sprintf( __( "Method '%s' not implemented. Must be overridden in subclass." ), __METHOD__ ), array( 'status' => 405 ) );
    75108        }
    76109
    77110        /**
    78          * Create one item from the collection.
     111         * Creates one item from the collection.
     112         *
     113         * @since 4.7.0
     114         * @access public
    79115         *
    80116         * @param WP_REST_Request $request Full data about the request.
    81          * @return WP_Error|WP_REST_Response
     117         * @return WP_Error|WP_REST_Response Response object on success, or error object on failure.
    82118         */
    83119        public function create_item( $request ) {
    84120                return new WP_Error( 'invalid-method', sprintf( __( "Method '%s' not implemented. Must be overridden in subclass." ), __METHOD__ ), array( 'status' => 405 ) );
    85121        }
    86122
    87123        /**
    88          * Check if a given request has access to update a specific item.
     124         * Checks if a given request has access to update a specific item.
     125         *
     126         * @since 4.7.0
     127         * @access public
    89128         *
    90129         * @param WP_REST_Request $request Full data about the request.
    91          * @return WP_Error|boolean
     130         * @return WP_Error|bool True if the request has access to update the item, error object otherwise.
    92131         */
    93132        public function update_item_permissions_check( $request ) {
    94133                return new WP_Error( 'invalid-method', sprintf( __( "Method '%s' not implemented. Must be overridden in subclass." ), __METHOD__ ), array( 'status' => 405 ) );
    95134        }
    96135
    97136        /**
    98          * Update one item from the collection.
     137         * Updates one item from the collection.
     138         *
     139         * @since 4.7.0
     140         * @access public
    99141         *
    100142         * @param WP_REST_Request $request Full data about the request.
    101          * @return WP_Error|WP_REST_Response
     143         * @return WP_Error|WP_REST_Response Response object on success, or error object on failure.
    102144         */
    103145        public function update_item( $request ) {
    104146                return new WP_Error( 'invalid-method', sprintf( __( "Method '%s' not implemented. Must be overridden in subclass." ), __METHOD__ ), array( 'status' => 405 ) );
    105147        }
    106148
    107149        /**
    108          * Check if a given request has access to delete a specific item.
     150         * Checks if a given request has access to delete a specific item.
     151         *
     152         * @since 4.7.0
     153         * @access public
    109154         *
    110155         * @param WP_REST_Request $request Full data about the request.
    111          * @return WP_Error|boolean
     156         * @return WP_Error|bool True if the request has access to delete the item, error object otherwise.
    112157         */
    113158        public function delete_item_permissions_check( $request ) {
    114159                return new WP_Error( 'invalid-method', sprintf( __( "Method '%s' not implemented. Must be overridden in subclass." ), __METHOD__ ), array( 'status' => 405 ) );
    115160        }
    116161
    117162        /**
    118          * Delete one item from the collection.
     163         * Deletes one item from the collection.
     164         *
     165         * @since 4.7.0
     166         * @access public
    119167         *
    120168         * @param WP_REST_Request $request Full data about the request.
    121          * @return WP_Error|WP_REST_Response
     169         * @return WP_Error|WP_REST_Response Response object on success, or error object on failure.
    122170         */
    123171        public function delete_item( $request ) {
    124172                return new WP_Error( 'invalid-method', sprintf( __( "Method '%s' not implemented. Must be overridden in subclass." ), __METHOD__ ), array( 'status' => 405 ) );
    125173        }
    126174
    127175        /**
    128          * Prepare the item for create or update operation.
     176         * Prepares the item for create or update operation.
     177         *
     178         * @since 4.7.0
     179         * @access public
    129180         *
    130181         * @param WP_REST_Request $request Request object.
    131          * @return WP_Error|object $prepared_item
     182         * @return WP_Error|object $prepared_item The prepared item, or error object on failure.
    132183         */
    133184        protected function prepare_item_for_database( $request ) {
    134185                return new WP_Error( 'invalid-method', sprintf( __( "Method '%s' not implemented. Must be overridden in subclass." ), __METHOD__ ), array( 'status' => 405 ) );
    135186        }
    136187
    137188        /**
    138          * Prepare the item for the REST response.
     189         * Prepares the item for the REST response.
    139190         *
    140          * @param mixed $item WordPress representation of the item.
     191         * @since 4.7.0
     192         * @access public
     193         *
     194         * @param mixed           $item    WordPress representation of the item.
    141195         * @param WP_REST_Request $request Request object.
    142          * @return WP_Error|WP_REST_Response $response
     196         * @return WP_Error|WP_REST_Response $response Response object on success, or error object on failure.
    143197         */
    144198        public function prepare_item_for_response( $item, $request ) {
    145199                return new WP_Error( 'invalid-method', sprintf( __( "Method '%s' not implemented. Must be overridden in subclass." ), __METHOD__ ), array( 'status' => 405 ) );
    146200        }
    147201
    148202        /**
    149          * Prepare a response for inserting into a collection.
     203         * Prepares a response for inserting into a collection.
     204         *
     205         * @since 4.7.0
     206         * @access public
    150207         *
    151208         * @param WP_REST_Response $response Response object.
    152209         * @return array Response data, ready for insertion into collection data.
     
    173230        }
    174231
    175232        /**
    176          * Filter a response based on the context defined in the schema.
     233         * Filters a response based on the context defined in the schema.
    177234         *
    178          * @param array $data
    179          * @param string $context
     235         * @since 4.7.0
     236         * @access public
     237         *
     238         * @param array  $data    Response data to fiter.
     239         * @param string $context Context defined in the schema.
    180240         * @return array
    181241         */
    182242        public function filter_response_by_context( $data, $context ) {
     
    210270        }
    211271
    212272        /**
    213          * Get the item's schema, conforming to JSON Schema.
     273         * Gets the item's schema, conforming to JSON Schema.
     274         *
     275         * @since 4.7.0
     276         * @access public
    214277         *
    215278         * @return array
    216279         */
     
    219282        }
    220283
    221284        /**
    222          * Get the item's schema for display / public consumption purposes.
     285         * Gets the item's schema for display / public consumption purposes.
     286         *
     287         * @since 4.7.0
     288         * @access public
    223289         *
    224290         * @return array
    225291         */
     
    235301        }
    236302
    237303        /**
    238          * Get the query params for collections.
     304         * Gets the query params for collections.
     305         *
     306         * @since 4.7.0
     307         * @access public
    239308         *
    240309         * @return array
    241310         */
     
    269338        }
    270339
    271340        /**
    272          * Get the magical context param.
     341         * Gets the magical context param.
    273342         *
    274343         * Ensures consistent description between endpoints, and populates enum from schema.
    275344         *
    276          * @param array     $args
     345         * @since 4.7.0
     346         * @access public
     347         *
     348         * @param array $args Additional arguments for context parameter.
    277349         * @return array
    278350         */
    279351        public function get_context_param( $args = array() ) {
     
    301373        }
    302374
    303375        /**
    304          * Add the values from additional fields to a data object.
     376         * Adds the values from additional fields to a data object.
     377         *
     378         * @since 4.7.0
     379         * @access protected
    305380         *
    306          * @param array  $object
    307          * @param WP_REST_Request $request
     381         * @param array           $object  data object.
     382         * @param WP_REST_Request $request Full details about the request.
    308383         * @return array modified object with additional fields.
    309384         */
    310385        protected function add_additional_fields_to_object( $object, $request ) {
     
    324399        }
    325400
    326401        /**
    327          * Update the values of additional fields added to a data object.
     402         * Updates the values of additional fields added to a data object.
    328403         *
    329          * @param array  $object
    330          * @param WP_REST_Request $request
     404         * @since 4.7.0
     405         * @access protected
     406         *
     407         * @param array           $object  data Object.
     408         * @param WP_REST_Request $request Full details about the request.
    331409         * @return bool|WP_Error True on success, WP_Error object if a field cannot be updated.
    332410         */
    333411        protected function update_additional_fields_for_object( $object, $request ) {
     
    353431        }
    354432
    355433        /**
    356          * Add the schema from additional fields to an schema array.
     434         * Adds the schema from additional fields to an schema array.
    357435         *
    358436         * The type of object is inferred from the passed schema.
    359437         *
     438         * @since 4.7.0
     439         * @access protected
     440         *
    360441         * @param array $schema Schema array.
    361442         * @return array Modified Schema array.
    362443         */
     
    384465        }
    385466
    386467        /**
    387          * Get all the registered additional fields for a given object-type.
     468         * Gets all the registered additional fields for a given object-type.
    388469         *
    389          * @param  string $object_type
     470         * @since 4.7.0
     471         * @access protected
     472         *
     473         * @param  string $object_type Optional, default is null. Type of the Object.
    390474         * @return array
    391475         */
    392476        protected function get_additional_fields( $object_type = null ) {
     
    409493        }
    410494
    411495        /**
    412          * Get the object type this controller is responsible for managing.
     496         * Gets the object type this controller is responsible for managing.
     497         *
     498         * @since 4.7.0
     499         * @access protected
    413500         *
    414501         * @return string
    415502         */
     
    424511        }
    425512
    426513        /**
    427          * Get an array of endpoint arguments from the item schema for the controller.
     514         * Gets an array of endpoint arguments from the item schema for the controller.
     515         *
     516         * @since 4.7.0
     517         * @access public
    428518         *
    429519         * @param string $method HTTP method of the request. The arguments
    430520         *                       for `CREATABLE` requests are checked for required
     
    479569
    480570                                $endpoint_args[ $field_id ] = array_merge( $endpoint_args[ $field_id ], $params['arg_options'] );
    481571                        }
    482                 }
     572                } // End foreach().
    483573
    484574                return $endpoint_args;
    485575        }
     
    492582         * resultant post object. This is done so that plugins may manipulate the
    493583         * post that is used in the REST API.
    494584         *
     585         * @since 4.7.0
     586         * @access public
     587         *
    495588         * @see get_post()
    496589         * @global WP_Query $wp_query
    497590         *
     
    502595                $post_obj = get_post( $post );
    503596
    504597                /**
    505                  * Filter the post.
     598                 * Filters the post.
    506599                 *
    507600                 * Allows plugins to filter the post object as returned by `\WP_REST_Controller::get_post()`.
    508601                 *
     602                 * @since 4.7.0
     603                 *
    509604                 * @param WP_Post|null $post_obj  The post object as returned by `get_post()`.
    510605                 * @param int|WP_Post  $post      The original value used to obtain the post object.
    511606                 */
     
    515610        }
    516611
    517612        /**
    518          * Sanitize the slug value.
     613         * Sanitizes the slug value.
     614         *
     615         * @since 4.7.0
     616         * @access public
    519617         *
    520618         * @internal We can't use {@see sanitize_title} directly, as the second
    521619         * parameter is the fallback title, which would end up being set to the
  • src/wp-includes/rest-api/endpoints/class-wp-rest-post-statuses-controller.php

     
    11<?php
    2 
     2/**
     3 * REST API: WP_REST_Post_Statuses_Controller class
     4 *
     5 * @package WordPress
     6 * @subpackage REST_API
     7 * @since 4.7.0
     8 */
     9
     10/**
     11 * Core class to access post statuses via REST API.
     12 *
     13 * @since 4.7.0
     14 */
    315class WP_REST_Post_Statuses_Controller extends WP_REST_Controller {
    416
     17        /**
     18         * Constructor.
     19         *
     20         * @since 4.7.0
     21         * @access public
     22         */
    523        public function __construct() {
    624                $this->namespace = 'wp/v2';
    725                $this->rest_base = 'statuses';
    826        }
    927
    1028        /**
    11          * Register the routes for the objects of the controller.
     29         * Registers the routes for the objects of the controller.
     30         *
     31         * @since 4.7.0
     32         * @access public
    1233         */
    1334        public function register_routes() {
    1435
     
    3657        }
    3758
    3859        /**
    39          * Check whether a given request has permission to read post statuses.
     60         * Checks whether a given request has permission to read post statuses.
     61         *
     62         * @since 4.7.0
     63         * @access public
    4064         *
    4165         * @param  WP_REST_Request $request Full details about the request.
    42          * @return WP_Error|boolean
     66         * @return WP_Error|bool True if the request has read access, error object otherwise.
    4367         */
    4468        public function get_items_permissions_check( $request ) {
    4569                if ( 'edit' === $request['context'] ) {
     
    5579        }
    5680
    5781        /**
    58          * Get all post statuses, depending on user context
     82         * Gets all post statuses, depending on user context.
     83         *
     84         * @since 4.7.0
     85         * @access public
    5986         *
    60          * @param WP_REST_Request $request
    61          * @return array|WP_Error
     87         * @param WP_REST_Request $request Full details about the request.
     88         * @return WP_Error|WP_REST_Response Response object on success, or error object on failure.
    6289         */
    6390        public function get_items( $request ) {
    6491                $data = array();
     
    78105        /**
    79106         * Check if a given request has access to read a post status.
    80107         *
     108         * @since 4.7.0
     109         * @access public
     110         *
    81111         * @param  WP_REST_Request $request Full details about the request.
    82          * @return WP_Error|boolean
     112         * @return WP_Error|bool True if the request has read access for the item, error object otherwise.
    83113         */
    84114        public function get_item_permissions_check( $request ) {
    85115                $status = get_post_status_object( $request['status'] );
     
    94124        }
    95125
    96126        /**
    97          * Check whether a given post status should be visible
     127         * Checks whether a given post status should be visible.
     128         *
     129         * @since 4.7.0
     130         * @access protected
    98131         *
    99          * @param object $status
    100          * @return boolean
     132         * @param object $status Post status.
     133         * @return bool True if the post status is visible, false otherwise.
    101134         */
    102135        protected function check_read_permission( $status ) {
    103136                if ( true === $status->public ) {
     
    115148        }
    116149
    117150        /**
    118          * Get a specific post status
     151         * Gets a specific post status.
    119152         *
    120          * @param WP_REST_Request $request
    121          * @return array|WP_Error
     153         * @since 4.7.0
     154         * @access public
     155         *
     156         * @param WP_REST_Request $request Full details about the request.
     157         * @return WP_Error|WP_REST_Response Response object on success, or error object on failure.
    122158         */
    123159        public function get_item( $request ) {
    124160                $obj = get_post_status_object( $request['status'] );
     
    130166        }
    131167
    132168        /**
    133          * Prepare a post status object for serialization
     169         * Prepares a post status object for serialization.
     170         *
     171         * @since 4.7.0
     172         * @access public
    134173         *
    135          * @param stdClass $status Post status data
    136          * @param WP_REST_Request $request
     174         * @param stdClass        $status  Post status data.
     175         * @param WP_REST_Request $request Full details about the request.
    137176         * @return WP_REST_Response Post status data
    138177         */
    139178        public function prepare_item_for_response( $status, $request ) {
     
    161200                }
    162201
    163202                /**
    164                  * Filter a status returned from the API.
     203                 * Filters a status returned from the API.
    165204                 *
    166205                 * Allows modification of the status data right before it is returned.
    167206                 *
     207                 * @since 4.7.0
     208                 *
    168209                 * @param WP_REST_Response  $response The response object.
    169210                 * @param object            $status   The original status object.
    170211                 * @param WP_REST_Request   $request  Request used to generate the response.
     
    173214        }
    174215
    175216        /**
    176          * Get the Post status' schema, conforming to JSON Schema
     217         * Gets the Post status' schema, conforming to JSON Schema.
     218         *
     219         * @since 4.7.0
     220         * @access public
    177221         *
    178222         * @return array
    179223         */
     
    231275        }
    232276
    233277        /**
    234          * Get the query params for collections
     278         * Gets the query params for collections.
     279         *
     280         * @since 4.7.0
     281         * @access public
    235282         *
    236283         * @return array
    237284         */
  • src/wp-includes/rest-api/endpoints/class-wp-rest-post-types-controller.php

     
    11<?php
    2 
     2/**
     3 * REST API: WP_REST_Post_Types_Controller class
     4 *
     5 * @package WordPress
     6 * @subpackage REST_API
     7 * @since 4.7.0
     8 */
     9
     10/**
     11 * Core class to access post types via REST API.
     12 *
     13 * @since 4.7.0
     14 */
    315class WP_REST_Post_Types_Controller extends WP_REST_Controller {
    416
     17        /**
     18         * Constructor.
     19         *
     20         * @since 4.7.0
     21         * @access public
     22         */
    523        public function __construct() {
    624                $this->namespace = 'wp/v2';
    725                $this->rest_base = 'types';
    826        }
    927
    1028        /**
    11          * Register the routes for the objects of the controller.
     29         * Registers the routes for the objects of the controller.
     30         *
     31         * @since 4.7.0
     32         * @access public
    1233         */
    1334        public function register_routes() {
    1435
     
    3556        }
    3657
    3758        /**
    38          * Check whether a given request has permission to read types.
     59         * Checks whether a given request has permission to read types.
     60         *
     61         * @since 4.7.0
     62         * @access public
    3963         *
    4064         * @param  WP_REST_Request $request Full details about the request.
    41          * @return WP_Error|boolean
     65         * @return WP_Error|bool True if the request has read access, error object otherwise.
    4266         */
    4367        public function get_items_permissions_check( $request ) {
    4468                if ( 'edit' === $request['context'] ) {
     
    5377        }
    5478
    5579        /**
    56          * Get all public post types
     80         * Gets all public post types.
    5781         *
    58          * @param WP_REST_Request $request
    59          * @return array|WP_Error
     82         * @since 4.7.0
     83         * @access public
     84         *
     85         * @param WP_REST_Request $request Full details about the request.
     86         * @return WP_Error|WP_REST_Response Response object on success, or error object on failure.
    6087         */
    6188        public function get_items( $request ) {
    6289                $data = array();
     
    7198        }
    7299
    73100        /**
    74          * Get a specific post type
     101         * Gets a specific post type.
     102         *
     103         * @since 4.7.0
     104         * @access public
    75105         *
    76          * @param WP_REST_Request $request
    77          * @return array|WP_Error
     106         * @param WP_REST_Request $request Full details about the request.
     107         * @return WP_Error|WP_REST_Response Response object on success, or error object on failure.
    78108         */
    79109        public function get_item( $request ) {
    80110                $obj = get_post_type_object( $request['type'] );
     
    92122        }
    93123
    94124        /**
    95          * Prepare a post type object for serialization
     125         * Prepares a post type object for serialization.
     126         *
     127         * @since 4.7.0
     128         * @access public
    96129         *
    97          * @param stdClass $post_type Post type data
    98          * @param WP_REST_Request $request
    99          * @return WP_REST_Response $response
     130         * @param stdClass        $post_type Post type data.
     131         * @param WP_REST_Request $request   Full details about the request.
     132         * @return WP_REST_Response $response Response object.
    100133         */
    101134        public function prepare_item_for_response( $post_type, $request ) {
    102135                $data = array(
     
    125158                ) );
    126159
    127160                /**
    128                  * Filter a post type returned from the API.
     161                 * Filters a post type returned from the API.
    129162                 *
    130163                 * Allows modification of the post type data right before it is returned.
    131164                 *
     165                 * @since 4.7.0
     166                 *
    132167                 * @param WP_REST_Response  $response   The response object.
    133168                 * @param object            $item       The original post type object.
    134169                 * @param WP_REST_Request   $request    Request used to generate the response.
     
    137172        }
    138173
    139174        /**
    140          * Get the Post type's schema, conforming to JSON Schema
     175         * Gets the Post type's schema, conforming to JSON Schema.
     176         *
     177         * @since 4.7.0
     178         * @access public
    141179         *
    142180         * @return array
    143181         */
     
    189227        }
    190228
    191229        /**
    192          * Get the query params for collections
     230         * Gets the query params for collections.
     231         *
     232         * @since 4.7.0
     233         * @access public
    193234         *
    194235         * @return array
    195236         */
  • src/wp-includes/rest-api/endpoints/class-wp-rest-posts-controller.php

     
    11<?php
    2 
     2/**
     3 * REST API: WP_REST_Posts_Controller class
     4 *
     5 * @package WordPress
     6 * @subpackage REST_API
     7 * @since 4.7.0
     8 */
     9
     10/**
     11 * Core class to access posts via REST API.
     12 *
     13 * @since 4.7.0
     14 */
    315class WP_REST_Posts_Controller extends WP_REST_Controller {
    416
    517        /**
    618         * Post type.
    719         *
     20         * @since 4.7.0
    821         * @access protected
    922         * @var string
    1023         */
     
    1326        /**
    1427         * Instance of a post meta fields object.
    1528         *
     29         * @since 4.7.0
    1630         * @access protected
    1731         * @var WP_REST_Post_Meta_Fields
    1832         */
     
    2135        /**
    2236         * Constructor.
    2337         *
     38         * @since 4.7.0
     39         * @access public
     40         *
    2441         * @param string $post_type Post type.
    2542         */
    2643        public function __construct( $post_type ) {
     
    3350        }
    3451
    3552        /**
    36          * Register the routes for the objects of the controller.
     53         * Registers the routes for the objects of the controller.
     54         *
     55         * @since 4.7.0
     56         * @access public
    3757         */
    3858        public function register_routes() {
    3959
     
    5272                        ),
    5373                        'schema' => array( $this, 'get_public_item_schema' ),
    5474                ) );
     75
    5576                register_rest_route( $this->namespace, '/' . $this->rest_base . '/(?P<id>[\d]+)', array(
    5677                        array(
    5778                                'methods'         => WP_REST_Server::READABLE,
     
    86107        }
    87108
    88109        /**
    89          * Check if a given request has access to read /posts.
     110         * Checks if a given request has access to read /posts.
     111         *
     112         * @since 4.7.0
     113         * @access public
    90114         *
    91115         * @param  WP_REST_Request $request Full details about the request.
    92          * @return WP_Error|boolean
     116         * @return WP_Error|bool True if the request has read access, error object otherwise.
    93117         */
    94118        public function get_items_permissions_check( $request ) {
    95119
     
    103127        }
    104128
    105129        /**
    106          * Get a collection of posts.
     130         * Gets a collection of posts.
     131         *
     132         * @since 4.7.0
     133         * @access public
    107134         *
    108135         * @param WP_REST_Request $request Full details about the request.
    109          * @return WP_Error|WP_REST_Response
     136         * @return WP_Error|WP_REST_Response Response object on success, or error object on failure.
    110137         */
    111138        public function get_items( $request ) {
    112139
     
    192219                $args['post_type'] = $this->post_type;
    193220
    194221                /**
    195                  * Filter the query arguments for a request.
     222                 * Filters the query arguments for a request.
    196223                 *
    197224                 * Enables adding extra arguments or setting defaults for a post
    198225                 * collection request.
    199226                 *
     227                 * @since 4.7.0
     228                 *
    200229                 * @see https://developer.wordpress.org/reference/classes/wp_query/
    201230                 *
    202231                 * @param array           $args    Key value array of query var to query value.
     
    291320        }
    292321
    293322        /**
    294          * Check if a given request has access to read a post.
     323         * Checks if a given request has access to read a post.
     324         *
     325         * @since 4.7.0
     326         * @access public
    295327         *
    296328         * @param  WP_REST_Request $request Full details about the request.
    297          * @return WP_Error|boolean
     329         * @return WP_Error|bool True if the request has read access for the item, error object otherwise.
    298330         */
    299331        public function get_item_permissions_check( $request ) {
    300332
     
    324356        }
    325357
    326358        /**
    327          * Can the user access password-protected content?
     359         * Checks if the user can access password-protected content.
    328360         *
    329361         * This method determines whether we need to override the regular password
    330362         * check in core with a filter.
    331363         *
     364         * @since 4.7.0
     365         * @access protected
     366         *
    332367         * @param WP_Post         $post    Post to check against.
    333368         * @param WP_REST_Request $request Request data to check.
    334369         * @return bool True if the user can access password-protected content, false otherwise.
     
    354389        }
    355390
    356391        /**
    357          * Get a single post.
     392         * Gets a single post.
     393         *
     394         * @since 4.7.0
     395         * @access public
    358396         *
    359397         * @param WP_REST_Request $request Full details about the request.
    360          * @return WP_Error|WP_REST_Response
     398         * @return WP_Error|WP_REST_Response Response object on success, or error object on failure.
    361399         */
    362400        public function get_item( $request ) {
    363401                $id = (int) $request['id'];
     
    378416        }
    379417
    380418        /**
    381          * Check if a given request has access to create a post.
     419         * Checks if a given request has access to create a post.
     420         *
     421         * @since 4.7.0
     422         * @access public
    382423         *
    383424         * @param  WP_REST_Request $request Full details about the request.
    384          * @return WP_Error|boolean
     425         * @return WP_Error|bool True if the request has access to create items, error object otherwise.
    385426         */
    386427        public function create_item_permissions_check( $request ) {
    387428
     
    402443        }
    403444
    404445        /**
    405          * Create a single post.
     446         * Creates a single post.
     447         *
     448         * @since 4.7.0
     449         * @access public
    406450         *
    407451         * @param WP_REST_Request $request Full details about the request.
    408          * @return WP_Error|WP_REST_Response
     452         * @return WP_Error|WP_REST_Response Response object on success, or error object on failure.
    409453         */
    410454        public function create_item( $request ) {
    411455                if ( ! empty( $request['id'] ) ) {
     
    473517                /**
    474518                 * Fires after a single post is created or updated via the REST API.
    475519                 *
     520                 * @since 4.7.0
     521                 *
    476522                 * @param object          $post      Inserted Post object (not a WP_Post object).
    477523                 * @param WP_REST_Request $request   Request object.
    478                  * @param boolean         $creating  True when creating post, false when updating.
     524                 * @param bool            $creating  True when creating post, false when updating.
    479525                 */
    480526                do_action( "rest_insert_{$this->post_type}", $post, $request, true );
    481527
     
    489535        }
    490536
    491537        /**
    492          * Check if a given request has access to update a post.
     538         * Checks if a given request has access to update a post.
     539         *
     540         * @since 4.7.0
     541         * @access public
    493542         *
    494543         * @param  WP_REST_Request $request Full details about the request.
    495          * @return WP_Error|boolean
     544         * @return WP_Error|bool True if the request has access to update the item, error object otherwise.
    496545         */
    497546        public function update_item_permissions_check( $request ) {
    498547
     
    515564        }
    516565
    517566        /**
    518          * Update a single post.
     567         * Updates a single post.
     568         *
     569         * @since 4.7.0
     570         * @access public
    519571         *
    520572         * @param WP_REST_Request $request Full details about the request.
    521          * @return WP_Error|WP_REST_Response
     573         * @return WP_Error|WP_REST_Response Response object on success, or error object on failure.
    522574         */
    523575        public function update_item( $request ) {
    524576                $id = (int) $request['id'];
     
    593645        }
    594646
    595647        /**
    596          * Check if a given request has access to delete a post.
     648         * Checks if a given request has access to delete a post.
     649         *
     650         * @since 4.7.0
     651         * @access public
    597652         *
    598653         * @param  WP_REST_Request $request Full details about the request.
    599          * @return bool|WP_Error
     654         * @return bool|WP_Error True if the request has access to delete the item, error object otherwise.
    600655         */
    601656        public function delete_item_permissions_check( $request ) {
    602657
     
    610665        }
    611666
    612667        /**
    613          * Delete a single post.
     668         * Deletes a single post.
     669         *
     670         * @since 4.7.0
     671         * @access public
    614672         *
    615673         * @param WP_REST_Request $request Full details about the request.
    616          * @return WP_REST_Response|WP_Error
     674         * @return WP_REST_Response|WP_Error Response object on success, or error object on failure.
    617675         */
    618676        public function delete_item( $request ) {
    619677                $id = (int) $request['id'];
     
    635693                 *
    636694                 * Return false to disable trash support for the post.
    637695                 *
    638                  * @param boolean $supports_trash Whether the post type support trashing.
     696                 * @since 4.7.0
     697                 *
     698                 * @param bool    $supports_trash Whether the post type support trashing.
    639699                 * @param WP_Post $post           The Post object being considered for trashing support.
    640700                 */
    641701                $supports_trash = apply_filters( "rest_{$this->post_type}_trashable", $supports_trash, $post );
     
    673733                /**
    674734                 * Fires after a single post is deleted or trashed via the REST API.
    675735                 *
     736                 * @since 4.7.0
     737                 *
    676738                 * @param object           $post     The deleted or trashed post.
    677739                 * @param WP_REST_Response $response The response data.
    678740                 * @param WP_REST_Request  $request  The request sent to the API.
     
    683745        }
    684746
    685747        /**
    686          * Determine the allowed query_vars for a get_items() response and
     748         * Determines the allowed query_vars for a get_items() response and
    687749         * prepare for WP_Query.
    688750         *
     751         * @since 4.7.0
     752         * @access protected
     753         *
    689754         * @param array           $prepared_args Prepared WP_Query arguments.
    690755         * @param WP_REST_Request $request       Full details about the request.
    691756         * @return array          $query_args
     
    701766                                 *
    702767                                 * The dynamic portion of the hook name, $var, refers to the query_var key.
    703768                                 *
     769                                 * @since 4.7.0
     770                                 *
    704771                                 * @param mixed $prepared_args[ $var ] The query_var value.
    705772                                 */
    706773                                $query_args[ $var ] = apply_filters( "rest_query_var-{$var}", $prepared_args[ $var ] );
     
    719786        }
    720787
    721788        /**
    722          * Get all the WP Query vars that are allowed for the API request.
     789         * Gets all the WP Query vars that are allowed for the API request.
     790         *
     791         * @since 4.7.0
     792         * @access protected
    723793         *
    724794         * @param WP_REST_Request $request Full details about the request.
    725795         * @return array
     
    728798                global $wp;
    729799
    730800                /**
    731                  * Filter the publicly allowed query vars.
     801                 * Filters the publicly allowed query vars.
    732802                 *
    733803                 * Allows adjusting of the default query vars that are made public.
    734804                 *
     805                 * @since 4.7.0
     806                 *
    735807                 * @param array  Array of allowed WP_Query query vars.
    736808                 */
    737809                $valid_vars = apply_filters( 'query_vars', $wp->public_query_vars );
     
    739811                $post_type_obj = get_post_type_object( $this->post_type );
    740812                if ( current_user_can( $post_type_obj->cap->edit_posts ) ) {
    741813                        /**
    742                          * Filter the allowed 'private' query vars for authorized users.
     814                         * Filters the allowed 'private' query vars for authorized users.
    743815                         *
    744816                         * If the user has the `edit_posts` capability, we also allow use of
    745817                         * private query parameters, which are only undesirable on the
     
    748820                         * To disable anyway, use
    749821                         * `add_filter( 'rest_private_query_vars', '__return_empty_array' );`
    750822                         *
     823                         * @since 4.7.0
     824                         *
    751825                         * @param array $private_query_vars Array of allowed query vars for authorized users.
    752                          * }
    753826                         */
    754827                        $private = apply_filters( 'rest_private_query_vars', $wp->private_query_vars );
    755828                        $valid_vars = array_merge( $valid_vars, $private );
     
    772845                $valid_vars = array_merge( $valid_vars, $rest_valid );
    773846
    774847                /**
    775                  * Filter allowed query vars for the REST API.
     848                 * Filters allowed query vars for the REST API.
    776849                 *
    777850                 * This filter allows you to add or remove query vars from the final allowed
    778851                 * list for all requests, including unauthenticated ones. To alter the
    779852                 * vars for editors only, {@see rest_private_query_vars}.
    780853                 *
     854                 * @since 4.7.0
     855                 *
    781856                 * @param array {
    782857                 *    Array of allowed WP_Query query vars.
    783858                 *
     
    791866        }
    792867
    793868        /**
    794          * Check the post_date_gmt or modified_gmt and prepare any post or
     869         * Checks the post_date_gmt or modified_gmt and prepare any post or
    795870         * modified date for single post output.
    796871         *
     872         * @since 4.7.0
     873         * @access protected
     874         *
    797875         * @param string      $date_gmt GMT publication time.
    798876         * @param string|null $date     Optional, default is null. Local publication time.
    799877         * @return string|null ISO8601/RFC3339 formatted datetime.
     
    814892        }
    815893
    816894        /**
    817          * Prepare a single post for create or update.
     895         * Prepares a single post for create or update.
     896         *
     897         * @since 4.7.0
     898         * @access protected
    818899         *
    819900         * @param WP_REST_Request $request Request object.
    820901         * @return WP_Error|stdClass $prepared_post Post object.
     
    9511032                        $prepared_post->ping_status = $request['ping_status'];
    9521033                }
    9531034                /**
    954                  * Filter a post before it is inserted via the REST API.
     1035                 * Filters a post before it is inserted via the REST API.
    9551036                 *
    9561037                 * The dynamic portion of the hook name, $this->post_type, refers to post_type of the post being
    9571038                 * prepared for insertion.
    9581039                 *
     1040                 * @since 4.7.0
     1041                 *
    9591042                 * @param stdClass        $prepared_post An object representing a single post prepared
    9601043                 *                                       for inserting or updating the database.
    9611044                 * @param WP_REST_Request $request       Request object.
     
    9651048        }
    9661049
    9671050        /**
    968          * Determine validity and normalize provided status param.
     1051         * Determines validity and normalize provided status param.
     1052         *
     1053         * @since 4.7.0
     1054         * @access protected
    9691055         *
    9701056         * @param string $post_status Post status.
    9711057         * @param object $post_type   Post type.
     
    9991085        }
    10001086
    10011087        /**
    1002          * Determine the featured media based on a request param.
     1088         * Determines the featured media based on a request param.
     1089         *
     1090         * @since 4.7.0
     1091         * @access protected
    10031092         *
    10041093         * @param int $featured_media Featured Media ID.
    10051094         * @param int $post_id        Post ID.
     
    10221111        }
    10231112
    10241113        /**
    1025          * Set the template for a page.
     1114         * Sets the template for a page.
     1115         *
     1116         * @since 4.7.0
     1117         * @access public
    10261118         *
    10271119         * @param string  $template Page template filename.
    10281120         * @param integer $post_id  Post ID.
     
    10361128        }
    10371129
    10381130        /**
    1039          * Update the post's terms from a REST request.
     1131         * Updates the post's terms from a REST request.
     1132         *
     1133         * @since 4.7.0
     1134         * @access protected
    10401135         *
    10411136         * @param  int             $post_id The post ID to update the terms form.
    10421137         * @param  WP_REST_Request $request The request object with post and terms data.
     
    10591154        }
    10601155
    10611156        /**
    1062          * Check if a given post type should be viewed or managed.
     1157         * Checks if a given post type should be viewed or managed.
     1158         *
     1159         * @since 4.7.0
     1160         * @access protected
    10631161         *
    10641162         * @param object|string $post_type Post type name or object.
    1065          * @return boolean Is post type allowed?
     1163         * @return bool Is post type allowed?
    10661164         */
    10671165        protected function check_is_post_type_allowed( $post_type ) {
    10681166                if ( ! is_object( $post_type ) ) {
     
    10771175        }
    10781176
    10791177        /**
    1080          * Check if we can read a post.
     1178         * Checks if we can read a post.
    10811179         *
    10821180         * Correctly handles posts with the inherit status.
    10831181         *
     1182         * @since 4.7.0
     1183         * @access public
     1184         *
    10841185         * @param object $post Post object.
    1085          * @return boolean Can we read it?
     1186         * @return bool Can we read it?
    10861187         */
    10871188        public function check_read_permission( $post ) {
    10881189                $post_type = get_post_type_object( $post->post_type );
     
    11161217        }
    11171218
    11181219        /**
    1119          * Check if we can edit a post.
     1220         * Checks if we can edit a post.
     1221         *
     1222         * @since 4.7.0
     1223         * @access protected
    11201224         *
    11211225         * @param object $post Post object.
    1122          * @return boolean Can we edit it?
     1226         * @return bool Can we edit it?
    11231227         */
    11241228        protected function check_update_permission( $post ) {
    11251229                $post_type = get_post_type_object( $post->post_type );
     
    11321236        }
    11331237
    11341238        /**
    1135          * Check if we can create a post.
     1239         * Checks if we can create a post.
     1240         *
     1241         * @since 4.7.0
     1242         * @access protected
    11361243         *
    11371244         * @param object $post Post object.
    1138          * @return boolean Can we create it?.
     1245         * @return bool Can we create it?.
    11391246         */
    11401247        protected function check_create_permission( $post ) {
    11411248                $post_type = get_post_type_object( $post->post_type );
     
    11481255        }
    11491256
    11501257        /**
    1151          * Check if we can delete a post.
     1258         * Checks if we can delete a post.
     1259         *
     1260         * @since 4.7.0
     1261         * @access protected
    11521262         *
    11531263         * @param object $post Post object.
    1154          * @return boolean Can we delete it?
     1264         * @return bool Can we delete it?
    11551265         */
    11561266        protected function check_delete_permission( $post ) {
    11571267                $post_type = get_post_type_object( $post->post_type );
     
    11641274        }
    11651275
    11661276        /**
    1167          * Prepare a single post output for response.
     1277         * Prepares a single post output for response.
     1278         *
     1279         * @since 4.7.0
     1280         * @access public
    11681281         *
    11691282         * @param WP_Post         $post    Post object.
    11701283         * @param WP_REST_Request $request Request object.
    1171          * @return WP_REST_Response $data
     1284         * @return WP_REST_Response $data Response object.
    11721285         */
    11731286        public function prepare_item_for_response( $post, $request ) {
    11741287                $GLOBALS['post'] = $post;
     
    13341447                $response->add_links( $this->prepare_links( $post ) );
    13351448
    13361449                /**
    1337                  * Filter the post data for a response.
     1450                 * Filters the post data for a response.
    13381451                 *
    13391452                 * The dynamic portion of the hook name, $this->post_type, refers to post_type of the post being
    13401453                 * prepared for the response.
    13411454                 *
     1455                 * @since 4.7.0
     1456                 *
    13421457                 * @param WP_REST_Response   $response   The response object.
    13431458                 * @param WP_Post            $post       Post object.
    13441459                 * @param WP_REST_Request    $request    Request object.
     
    13471462        }
    13481463
    13491464        /**
    1350          * Overwrite the default protected title format.
     1465         * Overwrites the default protected title format.
    13511466         *
    13521467         * By default WordPress will show password protected posts with a title of
    13531468         * "Protected: %s", as the REST API communicates the protected status of a post
     
    13601475        }
    13611476
    13621477        /**
    1363          * Prepare links for the request.
     1478         * Prepares links for the request.
     1479         *
     1480         * @since 4.7.0
     1481         * @access protected
    13641482         *
    13651483         * @param WP_Post $post Post object.
    13661484         * @return array Links for the given post.
     
    14571575        }
    14581576
    14591577        /**
    1460          * Get the Post's schema, conforming to JSON Schema.
     1578         * Gets the Post's schema, conforming to JSON Schema.
     1579         *
     1580         * @since 4.7.0
     1581         * @access public
    14611582         *
    14621583         * @return array
    14631584         */
     
    14671588                        '$schema'    => 'http://json-schema.org/draft-04/schema#',
    14681589                        'title'      => $this->post_type,
    14691590                        'type'       => 'object',
    1470                         /*
    1471                          * Base properties for every Post.
    1472                          */
     1591                        // Base properties for every Post.
    14731592                        'properties' => array(
    14741593                                'date'            => array(
    14751594                                        'description' => __( "The date the object was published, in the site's timezone." ),
     
    17861905        }
    17871906
    17881907        /**
    1789          * Get the query params for collections of attachments.
     1908         * Gets the query params for collections of attachments.
     1909         *
     1910         * @since 4.7.0
     1911         * @access public
    17901912         *
    17911913         * @return array
    17921914         */
     
    19262048        }
    19272049
    19282050        /**
    1929          * Validate whether the user can query private statuses.
     2051         * Validates whether the user can query private statuses.
     2052         *
     2053         * @since 4.7.0
     2054         * @access public
    19302055         *
    19312056         * @param  mixed           $value     Post status.
    19322057         * @param  WP_REST_Request $request   Full details about the request.
    1933          * @param  string          $parameter
    1934          * @return WP_Error|boolean
     2058         * @param  string          $parameter Additional parameter to pass to validation.
     2059         * @return WP_Error|bool
    19352060         */
    19362061        public function validate_user_can_query_private_statuses( $value, $request, $parameter ) {
    19372062                if ( 'publish' === $value ) {
  • src/wp-includes/rest-api/endpoints/class-wp-rest-revisions-controller.php

     
    11<?php
    2 
     2/**
     3 * REST API: WP_REST_Revisions_Controller class
     4 *
     5 * @package WordPress
     6 * @subpackage REST_API
     7 * @since 4.7.0
     8 */
     9
     10/**
     11 * Core class to access revisions via REST API.
     12 *
     13 * @since 4.7.0
     14 */
    315class WP_REST_Revisions_Controller extends WP_REST_Controller {
    416
     17        /**
     18         * Parent post type.
     19         *
     20         * @since 4.7.0
     21         * @access private
     22         * @var string
     23         */
    524        private $parent_post_type;
     25
     26        /**
     27         * Parent controller.
     28         *
     29         * @since 4.7.0
     30         * @access private
     31         * @var WP_REST_Controller
     32         */
    633        private $parent_controller;
     34
     35        /**
     36         * The base of the parent controller's route.
     37         *
     38         * @since 4.7.0
     39         * @access private
     40         * @var string
     41         */
    742        private $parent_base;
    843
     44        /**
     45         * Constructor.
     46         *
     47         * @since 4.7.0
     48         * @access public
     49         *
     50         * @param string $parent_post_type Post type of the parent.
     51         */
    952        public function __construct( $parent_post_type ) {
    1053                $this->parent_post_type = $parent_post_type;
    1154                $this->parent_controller = new WP_REST_Posts_Controller( $parent_post_type );
     
    1659        }
    1760
    1861        /**
    19          * Register routes for revisions based on post types supporting revisions
     62         * Registers routes for revisions based on post types supporting revisions.
    2063         *
     64         * @since 4.7.0
    2165         * @access public
    2266         */
    2367        public function register_routes() {
     
    5296        }
    5397
    5498        /**
    55          * Check if a given request has access to get revisions
     99         * Checks if a given request has access to get revisions.
    56100         *
     101         * @since 4.7.0
    57102         * @access public
    58103         *
    59104         * @param WP_REST_Request $request Full data about the request.
    60          * @return WP_Error|boolean
     105         * @return WP_Error|bool True if the request has read access, error object otherwise.
    61106         */
    62107        public function get_items_permissions_check( $request ) {
    63108
     
    74119        }
    75120
    76121        /**
    77          * Get a collection of revisions
     122         * Gets a collection of revisions.
    78123         *
     124         * @since 4.7.0
    79125         * @access public
    80126         *
    81127         * @param WP_REST_Request $request Full data about the request.
    82          * @return WP_Error|WP_REST_Response
     128         * @return WP_Error|WP_REST_Response Response object on success, or error object on failure.
    83129         */
    84130        public function get_items( $request ) {
    85131
     
    99145        }
    100146
    101147        /**
    102          * Check if a given request has access to get a specific revision
     148         * Checks if a given request has access to get a specific revision.
    103149         *
     150         * @since 4.7.0
    104151         * @access public
    105152         *
    106153         * @param WP_REST_Request $request Full data about the request.
    107          * @return WP_Error|boolean
     154         * @return WP_Error|bool True if the request has read access for the item, error object otherwise.
    108155         */
    109156        public function get_item_permissions_check( $request ) {
    110157                return $this->get_items_permissions_check( $request );
    111158        }
    112159
    113160        /**
    114          * Get one revision from the collection
     161         * Gets one revision from the collection.
    115162         *
     163         * @since 4.7.0
    116164         * @access public
    117165         *
    118166         * @param WP_REST_Request $request Full data about the request.
    119          * @return WP_Error|array
     167         * @return WP_Error|WP_REST_Response Response object on success, or error object on failure.
    120168         */
    121169        public function get_item( $request ) {
    122170
     
    135183        }
    136184
    137185        /**
    138          * Check if a given request has access to delete a revision
     186         * Checks if a given request has access to delete a revision.
    139187         *
     188         * @since 4.7.0
    140189         * @access public
    141190         *
    142191         * @param  WP_REST_Request $request Full details about the request.
    143          * @return WP_Error|boolean
     192         * @return WP_Error|bool True if the request has access to delete the item, error object otherwise.
    144193         */
    145194        public function delete_item_permissions_check( $request ) {
    146195
     
    158207        }
    159208
    160209        /**
    161          * Delete a single revision
     210         * Deletes a single revision.
    162211         *
     212         * @since 4.7.0
    163213         * @access public
    164214         *
    165215         * @param WP_REST_Request $request Full details about the request.
    166          * @return WP_Error|boolean
     216         * @return WP_Error|bool True on success, or error object on failure.
    167217         */
    168218        public function delete_item( $request ) {
    169219                $result = wp_delete_post( $request['id'], true );
     
    171221                /**
    172222                 * Fires after a revision is deleted via the REST API.
    173223                 *
     224                 * @since 4.7.0
     225                 *
    174226                 * @param (mixed) $result The revision object (if it was deleted or moved to the trash successfully)
    175227                 *                        or false (failure). If the revision was moved to to the trash, $result represents
    176228                 *                        its new state; if it was deleted, $result represents its state before deletion.
     
    186238        }
    187239
    188240        /**
    189          * Prepare the revision for the REST response
     241         * Prepares the revision for the REST response.
    190242         *
     243         * @since 4.7.0
    191244         * @access public
    192245         *
    193246         * @param WP_Post         $post    Post revision object.
    194247         * @param WP_REST_Request $request Request object.
    195          * @return WP_REST_Response $response
     248         * @return WP_REST_Response $response Response object.
    196249         */
    197250        public function prepare_item_for_response( $post, $request ) {
    198251
     
    273326                }
    274327
    275328                /**
    276                  * Filter a revision returned from the API.
     329                 * Filters a revision returned from the API.
    277330                 *
    278331                 * Allows modification of the revision right before it is returned.
    279332                 *
     333                 * @since 4.7.0
     334                 *
    280335                 * @param WP_REST_Response  $response   The response object.
    281336                 * @param WP_Post           $post       The original revision object.
    282337                 * @param WP_REST_Request   $request    Request used to generate the response.
     
    285340        }
    286341
    287342        /**
    288          * Check the post_date_gmt or modified_gmt and prepare any post or
     343         * Checks the post_date_gmt or modified_gmt and prepare any post or
    289344         * modified date for single post output.
    290345         *
     346         * @since 4.7.0
    291347         * @access protected
    292348         *
    293349         * @param string      $date_gmt GMT publication time.
     
    307363        }
    308364
    309365        /**
    310          * Get the revision's schema, conforming to JSON Schema
     366         * Gets the revision's schema, conforming to JSON Schema.
    311367         *
     368         * @since 4.7.0
    312369         * @access public
    313370         *
    314371         * @return array
     
    318375                        '$schema'    => 'http://json-schema.org/draft-04/schema#',
    319376                        'title'      => "{$this->parent_post_type}-revision",
    320377                        'type'       => 'object',
    321                         /*
    322                          * Base properties for every Revision
    323                          */
     378                        // Base properties for every Revision.
    324379                        'properties' => array(
    325380                                'author'          => array(
    326381                                        'description' => __( 'The id for the author of the object.' ),
     
    393448        }
    394449
    395450        /**
    396          * Get the query params for collections
     451         * Gets the query params for collections.
    397452         *
     453         * @since 4.7.0
    398454         * @access public
    399455         *
    400456         * @return array
     
    406462        }
    407463
    408464        /**
    409          * Check the post excerpt and prepare it for single post output.
     465         * Checks the post excerpt and prepare it for single post output.
    410466         *
     467         * @since 4.7.0
    411468         * @access protected
    412469         *
    413470         * @param string  $excerpt The post excerpt.
  • src/wp-includes/rest-api/endpoints/class-wp-rest-settings-controller.php

     
    11<?php
     2/**
     3 * REST API: WP_REST_Settings_Controller class
     4 *
     5 * @package WordPress
     6 * @subpackage REST_API
     7 * @since 4.7.0
     8 */
    29
    310/**
    4  * Manage a WordPress site's settings.
     11 * Core class to access a WordPress site's settings via REST API.
     12 *
     13 * @since 4.7.0
    514 */
    615class WP_REST_Settings_Controller extends WP_REST_Controller {
    716
     
    1827
    1928        /**
    2029         * Register the routes for the objects of the controller.
     30         *
     31         * @since 4.7.0
     32         * @access public
    2133         */
    2234        public function register_routes() {
     35
    2336                register_rest_route( $this->namespace, '/' . $this->rest_base, array(
    2437                        array(
    2538                                'methods'             => WP_REST_Server::READABLE,
     
    3548                        ),
    3649                        'schema' => array( $this, 'get_public_item_schema' ),
    3750                ) );
     51
    3852        }
    3953
    4054        /**
    41          * Check if a given request has access to read and manage settings.
     55         * Checks if a given request has access to read and manage settings.
     56         *
     57         * @since 4.7.0
     58         * @access public
    4259         *
    4360         * @param  WP_REST_Request $request Full details about the request.
    44          * @return boolean
     61         * @return bool True if the request has read access for the item, false otherwise.
    4562         */
    4663        public function get_item_permissions_check( $request ) {
    4764                return current_user_can( 'manage_options' );
    4865        }
    4966
    5067        /**
    51          * Get the settings.
     68         * Gets the settings.
     69         *
     70         * @since 4.7.0
     71         * @access public
    5272         *
    5373         * @param WP_REST_Request $request Full details about the request.
    54          * @return WP_Error|array
     74         * @return WP_Error|array Array on success, or error object on failure.
    5575         */
    5676        public function get_item( $request ) {
    5777                $options  = $this->get_registered_options();
     
    88108        }
    89109
    90110        /**
    91          * Prepare a value for output based off a schema array.
     111         * Prepares a value for output based off a schema array.
     112         *
     113         * @since 4.7.0
     114         * @access protected
    92115         *
    93          * @param  mixed $value
    94          * @param  array $schema
    95          * @return mixed
     116         * @param  mixed $value  Value to prepare.
     117         * @param  array $schema Schema to match.
     118         * @return mixed The prepared value.
    96119         */
    97120        protected function prepare_value( $value, $schema ) {
    98121                // If the value is not a scalar, it's not possible to cast it to
     
    114137        }
    115138
    116139        /**
    117          * Update settings for the settings object.
     140         * Updates settings for the settings object.
     141         *
     142         * @since 4.7.0
     143         * @access public
    118144         *
    119145         * @param  WP_REST_Request $request Full detail about the request.
    120          * @return WP_Error|array
     146         * @return WP_Error|array Array on success, or error object on failure.
    121147         */
    122148        public function update_item( $request ) {
    123149                $options = $this->get_registered_options();
     
    136162                         *
    137163                         * @since 4.7.0
    138164                         *
    139                          * @param boolean $result Whether to override the default behavior for updating the
     165                         * @param bool    $result Whether to override the default behavior for updating the
    140166                         *                        value of a setting.
    141167                         * @param string  $name   Setting name (as shown in REST API responses).
    142168                         * @param mixed   $value  Updated setting value.
     
    180206        }
    181207
    182208        /**
    183          * Get all the registered options for the Settings API
     209         * Gets all the registered options for the Settings API.
    184210         *
    185          * @return array
     211         * @since 4.7.0
     212         * @access protected
     213         *
     214         * @return array Array of registered options.
    186215         */
    187216        protected function get_registered_options() {
    188217                $rest_options = array();
     
    230259        }
    231260
    232261        /**
    233          * Get the site setting schema, conforming to JSON Schema.
     262         * Gets the site setting schema, conforming to JSON Schema.
     263         *
     264         * @since 4.7.0
     265         * @access public
    234266         *
    235267         * @return array
    236268         */
  • src/wp-includes/rest-api/endpoints/class-wp-rest-taxonomies-controller.php

     
    11<?php
    2 
     2/**
     3 * REST API: WP_REST_Taxonomies_Controller class
     4 *
     5 * @package WordPress
     6 * @subpackage REST_API
     7 * @since 4.7.0
     8 */
     9
     10/**
     11 * Core class to access taxonomies via REST API.
     12 *
     13 * @since 4.7.0
     14 */
    315class WP_REST_Taxonomies_Controller extends WP_REST_Controller {
    416
     17        /**
     18         * Constructor.
     19         *
     20         * @since 4.7.0
     21         * @access public
     22         */
    523        public function __construct() {
    624                $this->namespace = 'wp/v2';
    725                $this->rest_base = 'taxonomies';
    826        }
    927
    1028        /**
    11          * Register the routes for the objects of the controller.
     29         * Registers the routes for the objects of the controller.
     30         *
     31         * @since 4.7.0
     32         * @access public
    1233         */
    1334        public function register_routes() {
    1435
     
    3657        }
    3758
    3859        /**
    39          * Check whether a given request has permission to read taxonomies.
     60         * Checks whether a given request has permission to read taxonomies.
     61         *
     62         * @since 4.7.0
     63         * @access public
    4064         *
    4165         * @param  WP_REST_Request $request Full details about the request.
    42          * @return WP_Error|boolean
     66         * @return WP_Error|bool True if the request has read access, error object otherwise.
    4367         */
    4468        public function get_items_permissions_check( $request ) {
    4569                if ( 'edit' === $request['context'] ) {
     
    5983        }
    6084
    6185        /**
    62          * Get all public taxonomies
     86         * Gets all public taxonomies.
    6387         *
    64          * @param WP_REST_Request $request
    65          * @return array
     88         * @since 4.7.0
     89         * @access public
     90         *
     91         * @param WP_REST_Request $request Full details about the request.
     92         * @return WP_REST_Response Response object on success, or error object on failure.
    6693         */
    6794        public function get_items( $request ) {
    6895
     
    93120        }
    94121
    95122        /**
    96          * Check if a given request has access a taxonomy
     123         * Checks if a given request has access a taxonomy.
     124         *
     125         * @since 4.7.0
     126         * @access public
    97127         *
    98128         * @param  WP_REST_Request $request Full details about the request.
    99          * @return WP_Error|boolean
     129         * @return WP_Error|bool True if the request has read access for the item, false or error object otherwise.
    100130         */
    101131        public function get_item_permissions_check( $request ) {
    102132
     
    115145        }
    116146
    117147        /**
    118          * Get a specific taxonomy
     148         * Gets a specific taxonomy.
    119149         *
    120          * @param WP_REST_Request $request
    121          * @return array|WP_Error
     150         * @since 4.7.0
     151         * @access public
     152         *
     153         * @param WP_REST_Request $request Full details about the request.
     154         * @return WP_Error|WP_REST_Response Response object on success, or error object on failure.
    122155         */
    123156        public function get_item( $request ) {
    124157                $tax_obj = get_taxonomy( $request['taxonomy'] );
     
    130163        }
    131164
    132165        /**
    133          * Prepare a taxonomy object for serialization
     166         * Prepares a taxonomy object for serialization.
     167         *
     168         * @since 4.7.0
     169         * @access public
    134170         *
    135          * @param stdClass $taxonomy Taxonomy data
    136          * @param WP_REST_Request $request
    137          * @return WP_REST_Response $response
     171         * @param stdClass        $taxonomy Taxonomy data.
     172         * @param WP_REST_Request $request  Full details about the request.
     173         * @return WP_REST_Response $response Response object.
    138174         */
    139175        public function prepare_item_for_response( $taxonomy, $request ) {
    140176
     
    167203                ) );
    168204
    169205                /**
    170                  * Filter a taxonomy returned from the API.
     206                 * Filters a taxonomy returned from the API.
    171207                 *
    172208                 * Allows modification of the taxonomy data right before it is returned.
    173209                 *
     210                 * @since 4.7.0
     211                 *
    174212                 * @param WP_REST_Response  $response   The response object.
    175213                 * @param object            $item       The original taxonomy object.
    176214                 * @param WP_REST_Request   $request    Request used to generate the response.
     
    179217        }
    180218
    181219        /**
    182          * Get the taxonomy's schema, conforming to JSON Schema
     220         * Gets the taxonomy's schema, conforming to JSON Schema.
     221         *
     222         * @since 4.7.0
     223         * @access public
    183224         *
    184225         * @return array
    185226         */
     
    243284        }
    244285
    245286        /**
    246          * Get the query params for collections
     287         * Gets the query params for collections.
     288         *
     289         * @since 4.7.0
     290         * @access public
    247291         *
    248292         * @return array
    249293         */
  • src/wp-includes/rest-api/endpoints/class-wp-rest-terms-controller.php

     
    11<?php
     2/**
     3 * REST API: WP_REST_Terms_Controller class
     4 *
     5 * @package WordPress
     6 * @subpackage REST_API
     7 * @since 4.7.0
     8 */
    29
    310/**
    4  * Access terms associated with a taxonomy.
     11 * Core class to access terms associated with a taxonomy via REST API.
     12 *
     13 * @since 4.7.0
    514 */
    615class WP_REST_Terms_Controller extends WP_REST_Controller {
    716
    817        /**
    918         * Taxonomy key.
    1019         *
     20         * @since 4.7.0
    1121         * @access protected
    1222         * @var string
    1323         */
     
    1626        /**
    1727         * Instance of a term meta fields object.
    1828         *
     29         * @since 4.7.0
    1930         * @access protected
    2031         * @var WP_REST_Term_Meta_Fields
    2132         */
     
    2435        /**
    2536         * Column to have the terms be sorted by.
    2637         *
     38         * @since 4.7.0
    2739         * @access protected
    2840         * @var string
    2941         */
     
    3244        /**
    3345         * Number of terms that were found.
    3446         *
     47         * @since 4.7.0
    3548         * @access protected
    3649         * @var int
    3750         */
     
    4053        /**
    4154         * Constructor.
    4255         *
     56         * @since 4.7.0
     57         * @access public
     58         *
    4359         * @param string $taxonomy Taxonomy key.
    4460         */
    4561        public function __construct( $taxonomy ) {
     
    5369
    5470        /**
    5571         * Registers the routes for the objects of the controller.
     72         *
     73         * @since 4.7.0
     74         * @access public
    5675         */
    5776        public function register_routes() {
    5877
     
    7190                        ),
    7291                        'schema' => array( $this, 'get_public_item_schema' ),
    7392                ) );
     93
    7494                register_rest_route( $this->namespace, '/' . $this->rest_base . '/(?P<id>[\d]+)', array(
    7595                        array(
    7696                                'methods'             => WP_REST_Server::READABLE,
     
    104124        /**
    105125         * Checks if a request has access to read terms in the specified taxonomy.
    106126         *
     127         * @since 4.7.0
     128         * @access public
     129         *
    107130         * @param  WP_REST_Request $request Full details about the request.
    108          * @return WP_Error|boolean
     131         * @return WP_Error|bool True if the request has read access, false or error object otherwise.
    109132         */
    110133        public function get_items_permissions_check( $request ) {
    111134                $tax_obj = get_taxonomy( $this->taxonomy );
     
    121144        /**
    122145         * Gets terms associated with a taxonomy.
    123146         *
     147         * @since 4.7.0
     148         * @access public
     149         *
    124150         * @param WP_REST_Request $request Full details about the request.
    125          * @return WP_REST_Response|WP_Error
     151         * @return WP_Error|WP_REST_Response Response object on success, or error object on failure.
    126152         */
    127153        public function get_items( $request ) {
    128154
     
    180206                 * Enables adding extra arguments or setting defaults for a terms
    181207                 * collection request.
    182208                 *
     209                 * @since 4.7.0
     210                 *
    183211                 * @see https://developer.wordpress.org/reference/functions/get_terms/
    184212                 *
    185213                 * @param array           $prepared_args Array of arguments to be
     
    201229                unset( $count_args['number'], $count_args['offset'] );
    202230                $total_terms = wp_count_terms( $this->taxonomy, $count_args );
    203231
    204                 // wp_count_terms can return a falsy value when the term has no children
     232                // wp_count_terms can return a falsy value when the term has no children.
    205233                if ( ! $total_terms ) {
    206234                        $total_terms = 0;
    207235                }
     
    243271        /**
    244272         * Checks if a request has access to read the specified term.
    245273         *
     274         * @since 4.7.0
     275         * @access public
     276         *
    246277         * @param  WP_REST_Request $request Full details about the request.
    247          * @return WP_Error|boolean
     278         * @return WP_Error|bool True if the request has read access for the item, false or error object otherwise.
    248279         */
    249280        public function get_item_permissions_check( $request ) {
    250281                $tax_obj = get_taxonomy( $this->taxonomy );
     
    260291        /**
    261292         * Gets a single term from a taxonomy.
    262293         *
    263          * @param WP_REST_Request $request Full details about the request
    264          * @return WP_REST_Request|WP_Error
     294         * @since 4.7.0
     295         * @access public
     296         *
     297         * @param WP_REST_Request $request Full details about the request.
     298         * @return WP_Error|WP_REST_Response Response object on success, or error object on failure.
    265299         */
    266300        public function get_item( $request ) {
    267301
     
    281315        /**
    282316         * Checks if a request has access to create a term.
    283317         *
     318         * @since 4.7.0
     319         * @access public
     320         *
    284321         * @param  WP_REST_Request $request Full details about the request.
    285          * @return WP_Error|boolean
     322         * @return WP_Error|bool True if the request has access to create items, false or error object otherwise.
    286323         */
    287324        public function create_item_permissions_check( $request ) {
    288325
     
    301338        /**
    302339         * Creates a single term in a taxonomy.
    303340         *
    304          * @param WP_REST_Request $request Full details about the request
    305          * @return WP_REST_Request|WP_Error
     341         * @since 4.7.0
     342         * @access public
     343         *
     344         * @param WP_REST_Request $request Full details about the request.
     345         * @return WP_Error|WP_REST_Response Response object on success, or error object on failure.
    306346         */
    307347        public function create_item( $request ) {
    308348                if ( isset( $request['parent'] ) ) {
     
    321361
    322362                $term = wp_insert_term( $prepared_term->name, $this->taxonomy, $prepared_term );
    323363                if ( is_wp_error( $term ) ) {
    324 
    325364                        /*
    326365                         * If we're going to inform the client that the term already exists,
    327366                         * give them the identifier for future use.
     
    339378                /**
    340379                 * Fires after a single term is created or updated via the REST API.
    341380                 *
     381                 * @since 4.7.0
     382                 *
    342383                 * @param WP_Term         $term     Inserted Term object.
    343384                 * @param WP_REST_Request $request  Request object.
    344                  * @param boolean         $creating True when creating term, false when updating.
     385                 * @param bool            $creating True when creating term, false when updating.
    345386                 */
    346387                do_action( "rest_insert_{$this->taxonomy}", $term, $request, true );
    347388
     
    369410        /**
    370411         * Checks if a request has access to update the specified term.
    371412         *
     413         * @since 4.7.0
     414         * @access public
     415         *
    372416         * @param  WP_REST_Request $request Full details about the request.
    373          * @return WP_Error|boolean
     417         * @return WP_Error|bool True if the request has access to update the item, false or error object otherwise.
    374418         */
    375419        public function update_item_permissions_check( $request ) {
    376420
     
    393437        /**
    394438         * Updates a single term from a taxonomy.
    395439         *
    396          * @param WP_REST_Request $request Full details about the request
    397          * @return WP_REST_Request|WP_Error
     440         * @since 4.7.0
     441         * @access public
     442         *
     443         * @param WP_REST_Request $request Full details about the request.
     444         * @return WP_Error|WP_REST_Response Response object on success, or error object on failure.
    398445         */
    399446        public function update_item( $request ) {
    400447                if ( isset( $request['parent'] ) ) {
     
    447494        /**
    448495         * Checks if a request has access to delete the specified term.
    449496         *
     497         * @since 4.7.0
     498         * @access public
     499         *
    450500         * @param  WP_REST_Request $request Full details about the request.
    451          * @return WP_Error|boolean
     501         * @return WP_Error|bool True if the request has access to delete the item, false or error object otherwise.
    452502         */
    453503        public function delete_item_permissions_check( $request ) {
    454504                if ( ! $this->check_is_taxonomy_allowed( $this->taxonomy ) ) {
     
    468518        /**
    469519         * Deletes a single term from a taxonomy.
    470520         *
    471          * @param WP_REST_Request $request Full details about the request
    472          * @return WP_REST_Response|WP_Error
     521         * @since 4.7.0
     522         * @access public
     523         *
     524         * @param WP_REST_Request $request Full details about the request.
     525         * @return WP_Error|WP_REST_Response Response object on success, or error object on failure.
    473526         */
    474527        public function delete_item( $request ) {
    475528
     
    492545                /**
    493546                 * Fires after a single term is deleted via the REST API.
    494547                 *
     548                 * @since 4.7.0
     549                 *
    495550                 * @param WP_Term          $term     The deleted term.
    496551                 * @param WP_REST_Response $response The response data.
    497552                 * @param WP_REST_Request  $request  The request sent to the API.
     
    504559        /**
    505560         * Prepares a single term for create or update.
    506561         *
     562         * @since 4.7.0
     563         * @access public
     564         *
    507565         * @param WP_REST_Request $request Request object.
    508566         * @return object $prepared_term Term object.
    509567         */
     
    541599                /**
    542600                 * Filters term data before inserting term via the REST API.
    543601                 *
     602                 * @since 4.7.0
     603                 *
    544604                 * @param object          $prepared_term Term object.
    545605                 * @param WP_REST_Request $request       Request object.
    546606                 */
     
    550610        /**
    551611         * Prepares a single term output for response.
    552612         *
     613         * @since 4.7.0
     614         * @access public
     615         *
    553616         * @param obj             $item    Term object.
    554617         * @param WP_REST_Request $request Request object.
    555          * @return WP_REST_Response $response
     618         * @return WP_REST_Response $response Response object.
    556619         */
    557620        public function prepare_item_for_response( $item, $request ) {
    558621
     
    599662                 *
    600663                 * Allows modification of the term data right before it is returned.
    601664                 *
     665                 * @since 4.7.0
     666                 *
    602667                 * @param WP_REST_Response  $response  The response object.
    603668                 * @param object            $item      The original term object.
    604669                 * @param WP_REST_Request   $request   Request used to generate the response.
     
    609674        /**
    610675         * Prepares links for the request.
    611676         *
     677         * @since 4.7.0
     678         * @access protected
     679         *
    612680         * @param object $term Term object.
    613681         * @return array Links for the given term.
    614682         */
     
    662730        /**
    663731         * Gets the term's schema, conforming to JSON Schema.
    664732         *
     733         * @since 4.7.0
     734         * @access public
     735         *
    665736         * @return array
    666737         */
    667738        public function get_item_schema() {
     
    739810        /**
    740811         * Gets the query params for collections.
    741812         *
     813         * @since 4.7.0
     814         * @access public
     815         *
    742816         * @return array
    743817         */
    744818        public function get_collection_params() {
     
    826900        /**
    827901         * Checks that the taxonomy is valid.
    828902         *
     903         * @since 4.7.0
     904         * @access protected
     905         *
    829906         * @param string $taxonomy Taxonomy to check.
    830          * @return WP_Error|boolean
     907         * @return WP_Error|bool
    831908         */
    832909        protected function check_is_taxonomy_allowed( $taxonomy ) {
    833910                $taxonomy_obj = get_taxonomy( $taxonomy );
  • src/wp-includes/rest-api/endpoints/class-wp-rest-users-controller.php

     
    11<?php
     2/**
     3 * REST API: WP_REST_Users_Controller class
     4 *
     5 * @package WordPress
     6 * @subpackage REST_API
     7 * @since 4.7.0
     8 */
    29
    310/**
    4  * Access users
     11 * Core class to access users via REST API.
     12 *
     13 * @since 4.7.0
    514 */
    615class WP_REST_Users_Controller extends WP_REST_Controller {
    716
    817        /**
    918         * Instance of a user meta fields object.
    1019         *
     20         * @since 4.7.0
    1121         * @access protected
    1222         * @var WP_REST_User_Meta_Fields
    1323         */
    1424        protected $meta;
    1525
     26        /**
     27         * Constructor.
     28         *
     29         * @since 4.7.0
     30         * @access public
     31         */
    1632        public function __construct() {
    1733                $this->namespace = 'wp/v2';
    1834                $this->rest_base = 'users';
     
    2137        }
    2238
    2339        /**
    24          * Register the routes for the objects of the controller.
     40         * Registers the routes for the objects of the controller.
     41         *
     42         * @since 4.7.0
     43         * @access public
    2544         */
    2645        public function register_routes() {
    2746
     
    4059                        ),
    4160                        'schema' => array( $this, 'get_public_item_schema' ),
    4261                ) );
     62
    4363                register_rest_route( $this->namespace, '/' . $this->rest_base . '/(?P<id>[\d]+)', array(
    4464                        array(
    4565                                'methods'         => WP_REST_Server::READABLE,
     
    83103        /**
    84104         * Permissions check for getting all users.
    85105         *
     106         * @since 4.7.0
     107         * @access public
     108         *
    86109         * @param WP_REST_Request $request Full details about the request.
    87          * @return WP_Error|boolean
     110         * @return WP_Error|bool True if the request has read access, error object otherwise.
    88111         */
    89112        public function get_items_permissions_check( $request ) {
    90113                // Check if roles is specified in GET request and if user can list users.
     
    104127        }
    105128
    106129        /**
    107          * Get all users
     130         * Gets all users.
     131         *
     132         * @since 4.7.0
     133         * @access public
    108134         *
    109135         * @param WP_REST_Request $request Full details about the request.
    110          * @return WP_Error|WP_REST_Response
     136         * @return WP_Error|WP_REST_Response Response object on success, or error object on failure.
    111137         */
    112138        public function get_items( $request ) {
    113139
     
    172198                /**
    173199                 * Filter arguments, before passing to WP_User_Query, when querying users via the REST API.
    174200                 *
     201                 * @since 4.7.0
     202                 *
    175203                 * @see https://developer.wordpress.org/reference/classes/wp_user_query/
    176204                 *
    177205                 * @param array           $prepared_args Array of arguments for WP_User_Query.
     
    197225
    198226                $total_users = $query->get_total();
    199227                if ( $total_users < 1 ) {
    200                         // Out-of-bounds, run the query again without LIMIT for total count
     228                        // Out-of-bounds, run the query again without LIMIT for total count.
    201229                        unset( $prepared_args['number'], $prepared_args['offset'] );
    202230                        $count_query = new WP_User_Query( $prepared_args );
    203231                        $total_users = $count_query->get_total();
     
    225253        }
    226254
    227255        /**
    228          * Check if a given request has access to read a user
     256         * Checks if a given request has access to read a user.
     257         *
     258         * @since 4.7.0
     259         * @access public
    229260         *
    230261         * @param  WP_REST_Request $request Full details about the request.
    231          * @return WP_Error|boolean
     262         * @return WP_Error|bool True if the request has read access for the item, error object otherwise.
    232263         */
    233264        public function get_item_permissions_check( $request ) {
    234265
     
    254285        }
    255286
    256287        /**
    257          * Get a single user
     288         * Gets a single user.
     289         *
     290         * @since 4.7.0
     291         * @access public
    258292         *
    259293         * @param WP_REST_Request $request Full details about the request.
    260          * @return WP_Error|WP_REST_Response
     294         * @return WP_Error|WP_REST_Response Response object on success, or error object on failure.
    261295         */
    262296        public function get_item( $request ) {
    263297                $id = (int) $request['id'];
     
    274308        }
    275309
    276310        /**
    277          * Get the current user
     311         * Gets the current user.
     312         *
     313         * @since 4.7.0
     314         * @access public
    278315         *
    279316         * @param WP_REST_Request $request Full details about the request.
    280          * @return WP_Error|WP_REST_Response
     317         * @return WP_Error|WP_REST_Response Response object on success, or error object on failure.
    281318         */
    282319        public function get_current_item( $request ) {
    283320                $current_user_id = get_current_user_id();
     
    295332        }
    296333
    297334        /**
    298          * Check if a given request has access create users
     335         * Checks if a given request has access create users.
     336         *
     337         * @since 4.7.0
     338         * @access public
    299339         *
    300340         * @param  WP_REST_Request $request Full details about the request.
    301          * @return WP_Error|boolean
     341         * @return WP_Error|bool True if the request has access to create items, error object otherwise.
    302342         */
    303343        public function create_item_permissions_check( $request ) {
    304344
     
    310350        }
    311351
    312352        /**
    313          * Create a single user
     353         * Creates a single user.
     354         *
     355         * @since 4.7.0
     356         * @access public
    314357         *
    315358         * @param WP_REST_Request $request Full details about the request.
    316          * @return WP_Error|WP_REST_Response
     359         * @return WP_Error|WP_REST_Response Response object on success, or error object on failure.
    317360         */
    318361        public function create_item( $request ) {
    319362                if ( ! empty( $request['id'] ) ) {
     
    375418                /**
    376419                 * Fires after a user is created or updated via the REST API.
    377420                 *
     421                 * @since 4.7.0
     422                 *
    378423                 * @param WP_User         $user      Data used to create the user.
    379424                 * @param WP_REST_Request $request   Request object.
    380                  * @param boolean         $creating  True when creating user, false when updating user.
     425                 * @param bool            $creating  True when creating user, false when updating user.
    381426                 */
    382427                do_action( 'rest_insert_user', $user, $request, true );
    383428
     
    391436        }
    392437
    393438        /**
    394          * Check if a given request has access update a user
     439         * Checks if a given request has access update a user.
     440         *
     441         * @since 4.7.0
     442         * @access public
    395443         *
    396444         * @param  WP_REST_Request $request Full details about the request.
    397          * @return WP_Error|boolean
     445         * @return WP_Error|bool True if the request has access to update the item, error object otherwise.
    398446         */
    399447        public function update_item_permissions_check( $request ) {
    400448
     
    412460        }
    413461
    414462        /**
    415          * Update a single user
     463         * Updates a single user.
     464         *
     465         * @since 4.7.0
     466         * @access public
    416467         *
    417468         * @param WP_REST_Request $request Full details about the request.
    418          * @return WP_Error|WP_REST_Response
     469         * @return WP_Error|WP_REST_Response Response object on success, or error object on failure.
    419470         */
    420471        public function update_item( $request ) {
    421472                $id = (int) $request['id'];
     
    446497
    447498                $user = $this->prepare_item_for_database( $request );
    448499
    449                 // Ensure we're operating on the same user we already checked
     500                // Ensure we're operating on the same user we already checked.
    450501                $user->ID = $id;
    451502
    452503                $user_id = wp_update_user( $user );
     
    482533        }
    483534
    484535        /**
    485          * Check if a given request has access delete a user
     536         * Checks if a given request has access delete a user.
     537         *
     538         * @since 4.7.0
     539         * @access public
    486540         *
    487541         * @param  WP_REST_Request $request Full details about the request.
    488          * @return WP_Error|boolean
     542         * @return WP_Error|bool True if the request has access to delete the item, error object otherwise.
    489543         */
    490544        public function delete_item_permissions_check( $request ) {
    491545
     
    499553        }
    500554
    501555        /**
    502          * Delete a single user
     556         * Deletes a single user.
     557         *
     558         * @since 4.7.0
     559         * @access public
    503560         *
    504561         * @param WP_REST_Request $request Full details about the request.
    505          * @return WP_Error|WP_REST_Response
     562         * @return WP_Error|WP_REST_Response Response object on success, or error object on failure.
    506563         */
    507564        public function delete_item( $request ) {
    508565                $id = (int) $request['id'];
    509566                $reassign = isset( $request['reassign'] ) ? absint( $request['reassign'] ) : null;
    510567                $force = isset( $request['force'] ) ? (bool) $request['force'] : false;
    511568
    512                 // We don't support trashing for this type, error out
     569                // We don't support trashing for this type, error out.
    513570                if ( ! $force ) {
    514571                        return new WP_Error( 'rest_trash_not_supported', __( 'Users do not support trashing.' ), array( 'status' => 501 ) );
    515572                }
     
    540597                /**
    541598                 * Fires after a user is deleted via the REST API.
    542599                 *
     600                 * @since 4.7.0
     601                 *
    543602                 * @param WP_User          $user     The user data.
    544603                 * @param WP_REST_Response $response The response returned from the API.
    545604                 * @param WP_REST_Request  $request  The request sent to the API.
     
    550609        }
    551610
    552611        /**
    553          * Prepare a single user output for response
     612         * Prepares a single user output for response.
    554613         *
    555          * @param object $user User object.
     614         * @since 4.7.0
     615         * @access public
     616         *
     617         * @param object          $user    User object.
    556618         * @param WP_REST_Request $request Request object.
    557          * @return WP_REST_Response $response Response data.
     619         * @return WP_REST_Response $response Response object.
    558620         */
    559621        public function prepare_item_for_response( $user, $request ) {
    560622
     
    634696                $data = $this->add_additional_fields_to_object( $data, $request );
    635697                $data = $this->filter_response_by_context( $data, $context );
    636698
    637                 // Wrap the data in a response object
     699                // Wrap the data in a response object.
    638700                $response = rest_ensure_response( $data );
    639701
    640702                $response->add_links( $this->prepare_links( $user ) );
    641703
    642704                /**
    643                  * Filter user data returned from the REST API.
     705                 * Filters user data returned from the REST API.
     706                 *
     707                 * @since 4.7.0
    644708                 *
    645709                 * @param WP_REST_Response $response  The response object.
    646710                 * @param object           $user      User object used to create response.
     
    650714        }
    651715
    652716        /**
    653          * Prepare links for the request.
     717         * Prepares links for the request.
     718         *
     719         * @since 4.7.0
     720         * @access protected
    654721         *
    655722         * @param WP_Post $user User object.
    656723         * @return array Links for the given user.
     
    669736        }
    670737
    671738        /**
    672          * Prepare a single user for create or update
     739         * Prepares a single user for create or update.
     740         *
     741         * @since 4.7.0
     742         * @access protected
    673743         *
    674744         * @param WP_REST_Request $request Request object.
    675745         * @return object $prepared_user User object.
     
    723793                }
    724794
    725795                /**
    726                  * Filter user data before inserting user via the REST API.
     796                 * Filters user data before inserting user via the REST API.
     797                 *
     798                 * @since 4.7.0
    727799                 *
    728800                 * @param object          $prepared_user User object.
    729801                 * @param WP_REST_Request $request       Request object.
     
    732804        }
    733805
    734806        /**
    735          * Determine if the current user is allowed to make the desired roles change.
     807         * Determines if the current user is allowed to make the desired roles change.
     808         *
     809         * @since 4.7.0
     810         * @access protected
    736811         *
    737812         * @param integer $user_id User ID.
    738813         * @param array   $roles   New user roles.
    739          * @return WP_Error|boolean
     814         * @return WP_Error|bool
    740815         */
    741816        protected function check_role_update( $user_id, $roles ) {
    742817                global $wp_roles;
     
    754829                                return new WP_Error( 'rest_user_invalid_role', __( 'You cannot give resource that role.' ), array( 'status' => rest_authorization_required_code() ) );
    755830                        }
    756831
    757                         // The new role must be editable by the logged-in user.
    758 
    759832                        /** Include admin functions to get access to get_editable_roles() */
    760833                        require_once ABSPATH . 'wp-admin/includes/admin.php';
    761834
     835                        // The new role must be editable by the logged-in user.
    762836                        $editable_roles = get_editable_roles();
    763837                        if ( empty( $editable_roles[ $role ] ) ) {
    764838                                return new WP_Error( 'rest_user_invalid_role', __( 'You cannot give resource that role.' ), array( 'status' => 403 ) );
     
    770844        }
    771845
    772846        /**
    773          * Get the User's schema, conforming to JSON Schema
     847         * Gets the User's schema, conforming to JSON Schema.
     848         *
     849         * @since 4.7.0
     850         * @access public
    774851         *
    775852         * @return array
    776853         */
     
    878955                                'password'        => array(
    879956                                        'description' => __( 'Password for the resource (never included).' ),
    880957                                        'type'        => 'string',
    881                                         'context'     => array(), // Password is never displayed
     958                                        'context'     => array(), // Password is never displayed.
    882959                                        'required'    => true,
    883960                                ),
    884961                                'capabilities'    => array(
     
    9241001        }
    9251002
    9261003        /**
    927          * Get the query params for collections
     1004         * Gets the query params for collections.
     1005         *
     1006         * @since 4.7.0
     1007         * @access public
    9281008         *
    9291009         * @return array
    9301010         */
  • src/wp-includes/rest-api/fields/class-wp-rest-meta-fields.php

     
    11<?php
     2/**
     3 * REST API: WP_REST_Meta_Fields class
     4 *
     5 * @package WordPress
     6 * @subpackage REST_API
     7 * @since 4.7.0
     8 */
    29
    310/**
    4  * Manage meta values for an object.
     11 * Core class to manage meta values for an object via REST API.
     12 *
     13 * @since 4.7.0
    514 */
    615abstract class WP_REST_Meta_Fields {
    716
    817        /**
    9          * Get the object type for meta.
     18         * Gets the object type for meta.
     19         *
     20         * @since 4.7.0
     21         * @access protected
    1022         *
    1123         * @return string One of 'post', 'comment', 'term', 'user', or anything
    1224         *                else supported by `_get_meta_table()`.
     
    1426        abstract protected function get_meta_type();
    1527
    1628        /**
    17          * Get the object type for `register_rest_field`.
     29         * Gets the object type for `register_rest_field`.
     30         *
     31         * @since 4.7.0
     32         * @access protected
    1833         *
    19          * @return string Custom post type, 'taxonomy', 'comment', or `user`.
     34         * @return string The REST field type, such as post type name, taxonomy name, 'comment', or `user`.
    2035         */
    2136        abstract protected function get_rest_field_type();
    2237
    2338        /**
    24          * Register the meta field.
     39         * Registers the meta field.
     40         *
     41         * @since 4.7.0
     42         * @access public
    2543         */
    2644        public function register_field() {
    2745                register_rest_field( $this->get_rest_field_type(), 'meta', array(
     
    3250        }
    3351
    3452        /**
    35          * Get the `meta` field value.
     53         * Gets the `meta` field value.
     54         *
     55         * @since 4.7.0
     56         * @access public
    3657         *
    3758         * @param int             $object_id Object ID to fetch meta for.
    3859         * @param WP_REST_Request $request   Full details about the request.
     
    6586        }
    6687
    6788        /**
    68          * Prepare value for response.
     89         * Prepares value for response.
    6990         *
    7091         * This is required because some native types cannot be stored correctly in
    7192         * the database, such as booleans. We need to cast back to the relevant
    7293         * type before passing back to JSON.
    7394         *
     95         * @since 4.7.0
     96         * @access protected
     97         *
    7498         * @param mixed           $value   Value to prepare.
    7599         * @param WP_REST_Request $request Current request object.
    76100         * @param array           $args    Options for the field.
     
    85109        }
    86110
    87111        /**
    88          * Update meta values.
     112         * Updates meta values.
     113         *
     114         * @since 4.7.0
     115         * @access public
    89116         *
    90117         * @param WP_REST_Request $request    Full details about the request.
    91118         * @param int             $object_id  Object ID to fetch meta for.
     
    118145        }
    119146
    120147        /**
    121          * Delete meta value for an object.
     148         * Deletes meta value for an object.
     149         *
     150         * @since 4.7.0
     151         * @access protected
    122152         *
    123153         * @param int    $object_id Object ID the field belongs to.
    124154         * @param string $name      Key for the field.
     
    145175        }
    146176
    147177        /**
    148          * Update multiple meta values for an object.
     178         * Updates multiple meta values for an object.
    149179         *
    150180         * Alters the list of values in the database to match the list of provided values.
    151181         *
     182         * @since 4.7.0
     183         * @access protected
     184         *
    152185         * @param int    $object_id Object ID to update.
    153186         * @param string $name      Key for the custom field.
    154187         * @param array  $values    List of values to update to.
     
    209242        }
    210243
    211244        /**
    212          * Update meta value for an object.
     245         * Updates meta value for an object.
     246         *
     247         * @since 4.7.0
     248         * @access protected
    213249         *
    214250         * @param int    $object_id Object ID to update.
    215251         * @param string $name      Key for the custom field.
     
    249285        }
    250286
    251287        /**
    252          * Get all the registered meta fields.
     288         * Gets all the registered meta fields.
     289         *
     290         * @since 4.7.0
     291         * @access protected
    253292         *
    254293         * @return array
    255294         */
     
    303342        }
    304343
    305344        /**
    306          * Get the object's `meta` schema, conforming to JSON Schema.
     345         * Gets the object's `meta` schema, conforming to JSON Schema.
     346         *
     347         * @since 4.7.0
     348         * @access protected
    307349         *
    308350         * @return array
    309351         */
     
    325367        }
    326368
    327369        /**
    328          * Prepare a meta value for output.
     370         * Prepares a meta value for output.
    329371         *
    330372         * Default preparation for meta fields. Override by passing the
    331373         * `prepare_callback` in your `show_in_rest` options.
    332374         *
     375         * @since 4.7.0
     376         * @access public
     377         *
    333378         * @param mixed           $value   Meta value from the database.
    334379         * @param WP_REST_Request $request Request object.
    335380         * @param array           $args    REST-specific options for the meta key.
  • src/wp-includes/rest-api/fields/class-wp-rest-post-meta-fields.php

     
    11<?php
     2/**
     3 * REST API: WP_REST_Post_Meta_Fields class
     4 *
     5 * @package WordPress
     6 * @subpackage REST_API
     7 * @since 4.7.0
     8 */
    29
     10/**
     11 * Core class to manage meta values for posts via REST API.
     12 *
     13 * @since 4.7.0
     14 */
    315class WP_REST_Post_Meta_Fields extends WP_REST_Meta_Fields {
     16
    417        /**
    518         * Post type to register fields for.
    619         *
     20         * @since 4.7.0
     21         * @access protected
    722         * @var string
    823         */
    924        protected $post_type;
     
    1126        /**
    1227         * Constructor.
    1328         *
     29         * @since 4.7.0
     30         * @access public
     31         *
    1432         * @param string $post_type Post type to register fields for.
    1533         */
    1634        public function __construct( $post_type ) {
     
    1836        }
    1937
    2038        /**
    21          * Get the object type for meta.
     39         * Gets the object type for meta.
    2240         *
    23          * @return string
     41         * @since 4.7.0
     42         * @access protected
     43         *
     44         * @return string The meta type.
    2445         */
    2546        protected function get_meta_type() {
    2647                return 'post';
    2748        }
    2849
    2950        /**
    30          * Get the type for `register_rest_field`.
     51         * Gets the type for `register_rest_field`.
     52         *
     53         * @since 4.7.0
     54         * @access public
    3155         *
    32          * @return string Custom post type slug.
     56         * @return string The REST field type.
    3357         */
    3458        public function get_rest_field_type() {
    3559                return $this->post_type;
  • src/wp-includes/rest-api/fields/class-wp-rest-term-meta-fields.php

     
    11<?php
     2/**
     3 * REST API: WP_REST_Term_Meta_Fields class
     4 *
     5 * @package WordPress
     6 * @subpackage REST_API
     7 * @since 4.7.0
     8 */
    29
    310/**
    4  * Manage meta values for terms.
     11 * Core class to manage meta values for terms via REST API.
     12 *
     13 * @since 4.7.0
    514 */
    615class WP_REST_Term_Meta_Fields extends WP_REST_Meta_Fields {
     16
    717        /**
    818         * Taxonomy to register fields for.
    919         *
     20         * @since 4.7.0
     21         * @access protected
    1022         * @var string
    1123         */
    1224        protected $taxonomy;
     25
    1326        /**
    1427         * Constructor.
    1528         *
     29         * @since 4.7.0
     30         * @access public
     31         *
    1632         * @param string $taxonomy Taxonomy to register fields for.
    1733         */
    1834        public function __construct( $taxonomy ) {
     
    2036        }
    2137
    2238        /**
    23          * Get the object type for meta.
     39         * Gets the object type for meta.
     40         *
     41         * @since 4.7.0
     42         * @access protected
    2443         *
    25          * @return string
     44         * @return string The meta type.
    2645         */
    2746        protected function get_meta_type() {
    2847                return 'term';
    2948        }
    3049
    3150        /**
    32          * Get the type for `register_rest_field`.
     51         * Gets the type for `register_rest_field`.
     52         *
     53         * @since 4.7.0
     54         * @access public
    3355         *
    34          * @return string
     56         * @return string The REST field type.
    3557         */
    3658        public function get_rest_field_type() {
    3759                return 'post_tag' === $this->taxonomy ? 'tag' : $this->taxonomy;
  • src/wp-includes/rest-api/fields/class-wp-rest-user-meta-fields.php

     
    11<?php
     2/**
     3 * REST API: WP_REST_User_Meta_Fields class
     4 *
     5 * @package WordPress
     6 * @subpackage REST_API
     7 * @since 4.7.0
     8 */
    29
     10/**
     11 * Core class to manage meta values for users via REST API.
     12 *
     13 * @since 4.7.0
     14 */
    315class WP_REST_User_Meta_Fields extends WP_REST_Meta_Fields {
     16
    417        /**
    5          * Get the object type for meta.
     18         * Gets the object type for meta.
     19         *
     20         * @since 4.7.0
     21         * @access protected
    622         *
    7          * @return string
     23         * @return string The meta type.
    824         */
    925        protected function get_meta_type() {
    1026                return 'user';
    1127        }
    1228
    1329        /**
    14          * Get the type for `register_rest_field`.
     30         * Gets the type for `register_rest_field`.
     31         *
     32         * @since 4.7.0
     33         * @access public
    1534         *
    16          * @return string
     35         * @return string The REST field type.
    1736         */
    1837        public function get_rest_field_type() {
    1938                return 'user';