public function get_routes()
{
/**
* Filters the array of available endpoints.
*
* @since 4.4.0
*
* @param array $endpoints The available endpoints. An array of matching regex patterns, each mapped
* to an array of callbacks for the endpoint. These take the format
* `'/path/regex' => array( $callback, $bitmask )` or
* `'/path/regex' => array( array( $callback, $bitmask ).
*/
$endpoints = apply_filters('rest_endpoints', $this->endpoints);
// Normalise the endpoints.
$defaults = array('methods' => '', 'accept_json' => false, 'accept_raw' => false, 'show_in_index' => true, 'args' => array());
foreach ($endpoints as $route => &$handlers) {
if (isset($handlers['callback'])) {
// Single endpoint, add one deeper.
$handlers = array($handlers);
}
if (!isset($this->route_options[$route])) {
$this->route_options[$route] = array();
}
foreach ($handlers as $key => &$handler) {
if (!is_numeric($key)) {
// Route option, move it to the options.
$this->route_options[$route][$key] = $handler;
unset($handlers[$key]);
continue;
}
$handler = wp_parse_args($handler, $defaults);
// Allow comma-separated HTTP methods.
if (is_string($handler['methods'])) {
$methods = explode(',', $handler['methods']);
} elseif (is_array($handler['methods'])) {
$methods = $handler['methods'];
} else {
$methods = array();
}
$handler['methods'] = array();
foreach ($methods as $method) {
$method = strtoupper(trim($method));
$handler['methods'][$method] = true;
}
}
}
return $endpoints;
}