WP_REST_Menu_Items_Controller::check_has_read_only_access
Checks whether the current user has read permission for the endpoint.
This allows for any user that can edit_theme_options or edit any REST API available post type.
Method of the class: WP_REST_Menu_Items_Controller{}
Hooks from the method
Returns
true|WP_Error. True if the request has read access for the item, WP_Error object otherwise.
Usage
// protected - for code of main (parent) or child class $result = $this->check_has_read_only_access( $request );
- $request(WP_REST_Request) (required)
- Full details about the request.
Changelog
| Since 5.9.0 | Introduced. |
WP_REST_Menu_Items_Controller::check_has_read_only_access() WP REST Menu Items Controller::check has read only access code WP 7.0
protected function check_has_read_only_access( $request ) {
/**
* Filters whether the current user has read access to menu items via the REST API.
*
* @since 6.8.0
*
* @param bool $read_only_access Whether the current user has read access to menu items
* via the REST API.
* @param WP_REST_Request $request Full details about the request.
* @param WP_REST_Controller $controller The current instance of the controller.
*/
$read_only_access = apply_filters( 'rest_menu_read_access', false, $request, $this );
if ( $read_only_access ) {
return true;
}
if ( current_user_can( 'edit_theme_options' ) ) {
return true;
}
if ( current_user_can( 'edit_posts' ) ) {
return true;
}
foreach ( get_post_types( array( 'show_in_rest' => true ), 'objects' ) as $post_type ) {
if ( current_user_can( $post_type->cap->edit_posts ) ) {
return true;
}
}
return new WP_Error(
'rest_cannot_view',
__( 'Sorry, you are not allowed to view menu items.' ),
array( 'status' => rest_authorization_required_code() )
);
}