저자: WooThemes
상속: extends WP_REST_Controller
 /**
  * Get the query params for collections
  *
  * @return array
  */
 public function get_collection_params()
 {
     $params = parent::get_collection_params();
     if ('' !== $this->taxonomy) {
         $taxonomy = get_taxonomy($this->taxonomy);
     } else {
         $taxonomy = new stdClass();
         $taxonomy->hierarchical = true;
     }
     $params['context']['default'] = 'view';
     $params['exclude'] = array('description' => __('Ensure result set excludes specific ids.', 'woocommerce'), 'type' => 'array', 'default' => array(), 'sanitize_callback' => 'wp_parse_id_list');
     $params['include'] = array('description' => __('Limit result set to specific ids.', 'woocommerce'), 'type' => 'array', 'default' => array(), 'sanitize_callback' => 'wp_parse_id_list');
     if (!$taxonomy->hierarchical) {
         $params['offset'] = array('description' => __('Offset the result set by a specific number of items.', 'woocommerce'), 'type' => 'integer', 'sanitize_callback' => 'absint', 'validate_callback' => 'rest_validate_request_arg');
     }
     $params['order'] = array('description' => __('Order sort attribute ascending or descending.', 'woocommerce'), 'type' => 'string', 'sanitize_callback' => 'sanitize_key', 'default' => 'asc', 'enum' => array('asc', 'desc'), 'validate_callback' => 'rest_validate_request_arg');
     $params['orderby'] = array('description' => __('Sort collection by resource attribute.', 'woocommerce'), 'type' => 'string', 'sanitize_callback' => 'sanitize_key', 'default' => 'name', 'enum' => array('id', 'include', 'name', 'slug', 'term_group', 'description', 'count'), 'validate_callback' => 'rest_validate_request_arg');
     $params['hide_empty'] = array('description' => __('Whether to hide resources not assigned to any products.', 'woocommerce'), 'type' => 'boolean', 'default' => false, 'validate_callback' => 'rest_validate_request_arg');
     if ($taxonomy->hierarchical) {
         $params['parent'] = array('description' => __('Limit result set to resources assigned to a specific parent.', 'woocommerce'), 'type' => 'integer', 'sanitize_callback' => 'absint', 'validate_callback' => 'rest_validate_request_arg');
     }
     $params['product'] = array('description' => __('Limit result set to resources assigned to a specific product.', 'woocommerce'), 'type' => 'integer', 'default' => null, 'validate_callback' => 'rest_validate_request_arg');
     $params['slug'] = array('description' => __('Limit result set to resources with a specific slug.', 'woocommerce'), 'type' => 'string', 'validate_callback' => 'rest_validate_request_arg');
     return $params;
 }
 /**
  * Get the query params for collections.
  *
  * @return array
  */
 public function get_collection_params()
 {
     $params = parent::get_collection_params();
     $params['context']['default'] = 'view';
     $params['exclude'] = array('description' => __('Ensure result set excludes specific IDs.', 'woocommerce'), 'type' => 'array', 'default' => array(), 'sanitize_callback' => 'wp_parse_id_list');
     $params['include'] = array('description' => __('Limit result set to specific IDs.', 'woocommerce'), 'type' => 'array', 'default' => array(), 'sanitize_callback' => 'wp_parse_id_list');
     $params['offset'] = array('description' => __('Offset the result set by a specific number of items.', 'woocommerce'), 'type' => 'integer', 'sanitize_callback' => 'absint', 'validate_callback' => 'rest_validate_request_arg');
     $params['order'] = array('default' => 'asc', 'description' => __('Order sort attribute ascending or descending.', 'woocommerce'), 'enum' => array('asc', 'desc'), 'sanitize_callback' => 'sanitize_key', 'type' => 'string', 'validate_callback' => 'rest_validate_request_arg');
     $params['orderby'] = array('default' => 'order', 'description' => __('Sort collection by object attribute.', 'woocommerce'), 'enum' => array('id', 'order'), 'sanitize_callback' => 'sanitize_key', 'type' => 'string', 'validate_callback' => 'rest_validate_request_arg');
     $params['class'] = array('description' => __('Sort by tax class.', 'woocommerce'), 'enum' => array_merge(array('standard'), array_map('sanitize_title', WC_Tax::get_tax_classes())), 'sanitize_callback' => 'sanitize_title', 'type' => 'string', 'validate_callback' => 'rest_validate_request_arg');
     return $params;
 }
 /**
  * Get the query params for collections.
  *
  * @return array
  */
 public function get_collection_params()
 {
     $params = parent::get_collection_params();
     $params['context']['default'] = 'view';
     $params['exclude'] = array('description' => __('Ensure result set excludes specific ids.', 'woocommerce'), 'type' => 'array', 'default' => array(), 'sanitize_callback' => 'wp_parse_id_list');
     $params['include'] = array('description' => __('Limit result set to specific ids.', 'woocommerce'), 'type' => 'array', 'default' => array(), 'sanitize_callback' => 'wp_parse_id_list');
     $params['offset'] = array('description' => __('Offset the result set by a specific number of items.', 'woocommerce'), 'type' => 'integer', 'sanitize_callback' => 'absint', 'validate_callback' => 'rest_validate_request_arg');
     $params['order'] = array('default' => 'asc', 'description' => __('Order sort attribute ascending or descending.', 'woocommerce'), 'enum' => array('asc', 'desc'), 'sanitize_callback' => 'sanitize_key', 'type' => 'string', 'validate_callback' => 'rest_validate_request_arg');
     $params['orderby'] = array('default' => 'name', 'description' => __('Sort collection by object attribute.', 'woocommerce'), 'enum' => array('id', 'include', 'name', 'registered_date'), 'sanitize_callback' => 'sanitize_key', 'type' => 'string', 'validate_callback' => 'rest_validate_request_arg');
     $params['email'] = array('description' => __('Limit result set to resources with a specific email.', 'woocommerce'), 'type' => 'string', 'format' => 'email', 'validate_callback' => 'rest_validate_request_arg');
     $params['role'] = array('description' => __('Limit result set to resources with a specific role.', 'woocommerce'), 'type' => 'string', 'default' => 'customer', 'enum' => array_merge(array('all'), $this->get_role_names()), 'validate_callback' => 'rest_validate_request_arg');
     return $params;
 }
 /**
  * Get the query params for collections of attachments.
  *
  * @return array
  */
 public function get_collection_params()
 {
     $params = parent::get_collection_params();
     $params['context']['default'] = 'view';
     $params['after'] = array('description' => __('Limit response to resources published after a given ISO8601 compliant date.', 'woocommerce'), 'type' => 'string', 'format' => 'date-time', 'validate_callback' => 'rest_validate_request_arg');
     $params['before'] = array('description' => __('Limit response to resources published before a given ISO8601 compliant date.', 'woocommerce'), 'type' => 'string', 'format' => 'date-time', 'validate_callback' => 'rest_validate_request_arg');
     $params['exclude'] = array('description' => __('Ensure result set excludes specific IDs.', 'woocommerce'), 'type' => 'array', 'default' => array(), 'sanitize_callback' => 'wp_parse_id_list');
     $params['include'] = array('description' => __('Limit result set to specific ids.', 'woocommerce'), 'type' => 'array', 'default' => array(), 'sanitize_callback' => 'wp_parse_id_list');
     $params['offset'] = array('description' => __('Offset the result set by a specific number of items.', 'woocommerce'), 'type' => 'integer', 'sanitize_callback' => 'absint', 'validate_callback' => 'rest_validate_request_arg');
     $params['order'] = array('description' => __('Order sort attribute ascending or descending.', 'woocommerce'), 'type' => 'string', 'default' => 'desc', 'enum' => array('asc', 'desc'), 'validate_callback' => 'rest_validate_request_arg');
     $params['orderby'] = array('description' => __('Sort collection by object attribute.', 'woocommerce'), 'type' => 'string', 'default' => 'date', 'enum' => array('date', 'id', 'include', 'title', 'slug'), 'validate_callback' => 'rest_validate_request_arg');
     $post_type_obj = get_post_type_object($this->post_type);
     if (isset($post_type_obj->hierarchical) && $post_type_obj->hierarchical) {
         $params['parent'] = array('description' => __('Limit result set to those of particular parent IDs.', 'woocommerce'), 'type' => 'array', 'sanitize_callback' => 'wp_parse_id_list', 'default' => array());
         $params['parent_exclude'] = array('description' => __('Limit result set to all items except those of a particular parent ID.', 'woocommerce'), 'type' => 'array', 'sanitize_callback' => 'wp_parse_id_list', 'default' => array());
     }
     $params['filter'] = array('description' => __('Use WP Query arguments to modify the response; private query vars require appropriate authorization.', 'woocommerce'));
     return $params;
 }
 /**
  * Bulk create, update and delete items.
  *
  * @since  2.7.0
  * @param WP_REST_Request $request Full details about the request.
  * @return array Of WP_Error or WP_REST_Response.
  */
 public function batch_items($request)
 {
     $items = array_filter($request->get_params());
     $params = $request->get_url_params();
     $product_id = $params['product_id'];
     $body_params = array();
     foreach (array('update', 'create', 'delete') as $batch_type) {
         if (!empty($items[$batch_type])) {
             $injected_items = array();
             foreach ($items[$batch_type] as $item) {
                 $injected_items[] = array_merge(array('product_id' => $product_id), $item);
             }
             $body_params[$batch_type] = $injected_items;
         }
     }
     $request = new WP_REST_Request($request->get_method());
     $request->set_body_params($body_params);
     return parent::batch_items($request);
 }
 /**
  * Bulk create, update and delete items.
  *
  * @since  2.7.0
  * @param WP_REST_Request $request Full details about the request.
  * @return array Of WP_Error or WP_REST_Response.
  */
 public function batch_items($request)
 {
     // Get the request params.
     $items = array_filter($request->get_params());
     /*
      * Since our batch settings update is group-specific and matches based on the route,
      * we inject the URL parameters (containing group) into the batch items
      */
     if (!empty($items['update'])) {
         $to_update = array();
         foreach ($items['update'] as $item) {
             $to_update[] = array_merge($request->get_url_params(), $item);
         }
         $request = new WP_REST_Request($request->get_method());
         $request->set_body_params(array('update' => $to_update));
     }
     return parent::batch_items($request);
 }