rest_base = 'options'; } public function register_routes() { register_rest_route( $this->namespace, '/' . $this->rest_base, array( array( 'methods' => WP_REST_Server::READABLE, 'callback' => array( $this, 'get_item' ), 'permission_callback' => array( $this, 'get_item_permissions_check' ), ), array( 'methods' => WP_REST_Server::EDITABLE, 'callback' => array( $this, 'update_item' ), 'permission_callback' => array( $this, 'update_item_permissions_check' ), ), ) ); register_rest_route( $this->namespace, '/' . $this->rest_base . '/(?P[\w\-\_]+)', array( array( 'methods' => WP_REST_Server::READABLE, 'callback' => array( $this, 'get_item' ), 'permission_callback' => array( $this, 'get_item_permissions_check' ), ), array( 'methods' => WP_REST_Server::EDITABLE, 'callback' => array( $this, 'update_item' ), 'permission_callback' => array( $this, 'update_item_permissions_check' ), ), ) ); } public function prepare_item_for_database( $request ) { $item = parent::prepare_item_for_database( $request ); if ( $item && $request instanceof WP_REST_Request ) { $name = $request->get_param( 'name' ); if ( $name && array_key_exists( $name, $item['data'] ) ) { $item['data'] = array( $name => $item['data'][$name] ); } } return $item; } public function get_fields( $request, $response = null, $object = null ) { if ( $request instanceof WP_REST_Request ) { $name = $request->get_param( 'name' ); if ( $name ) { $value = get_field( $name, $this->type ); $data = array( $name => $value ); return apply_filters( 'acf/rest_api/' . $this->type . '/get_fields', $data, $request, $response, $object ); } } return parent::get_fields( $request, $response, $object ); } } }