File "class-rest-api.php"
Full path: /home/dora/public_html/wp-content/plugins/wp-grid-builder/includes/class-rest-api.php
File size: 1.72 KB
MIME-type: --
Charset: utf-8
<?php
/**
* Rest API
*
* @package WP Grid Builder
* @author Loïc Blascos
* @copyright 2019-2022 Loïc Blascos
*/
namespace WP_Grid_Builder\Includes;
// Exit if accessed directly.
if ( ! defined( 'ABSPATH' ) ) {
exit;
}
/**
* Add REST API custom routes
*
* @class WP_Grid_Builder\Includes\REST_API
* @since 1.0.0
*/
class REST_API {
/**
* Constructor
*
* @since 1.0.0
* @access public
*/
public function __construct() {
add_action( 'rest_api_init', [ $this, 'add_route' ] );
}
/**
* Add custom route to WP Rest API
*
* @since 1.0.0
* @access public
*/
public function add_route() {
register_rest_route(
'wp_grid_builder/v1',
'/get/',
[
'methods' => 'GET',
'callback' => [ $this, 'get' ],
'permission_callback' => [ $this, 'get_permission' ],
'args' => [
'type' => [
'type' => 'string',
'required' => true,
],
],
]
);
}
/**
* Get permission for custom route
*
* @since 1.0.0
* @access public
*
* @return boolean
*/
public function get_permission() {
return current_user_can( 'edit_posts' );
}
/**
* Get grid(s) or facet(s)
*
* @since 1.0.0
* @access public
*
* @param array $data REST route parameters (required).
* @return array.
*/
public function get( $data ) {
if ( 'grids' !== $data['type'] && 'facets' !== $data['type'] ) {
return [];
}
$objects = (array) Database::query_results(
[
'select' => 'id, name',
'from' => $data['type'],
'orderby' => 'modified_date',
]
);
return array_map(
function( $object ) {
return [
'value' => $object['id'],
'label' => $object['name'],
];
},
$objects
);
}
}