diff -r be944660c56a -r 3d72ae0968f4 wp/wp-includes/rest-api/endpoints/class-wp-rest-terms-controller.php --- a/wp/wp-includes/rest-api/endpoints/class-wp-rest-terms-controller.php Wed Sep 21 18:19:35 2022 +0200 +++ b/wp/wp-includes/rest-api/endpoints/class-wp-rest-terms-controller.php Tue Sep 27 16:37:53 2022 +0200 @@ -49,6 +49,14 @@ protected $total_terms; /** + * Whether the controller supports batching. + * + * @since 5.9.0 + * @var array + */ + protected $allow_batch = array( 'v1' => true ); + + /** * Constructor. * * @since 4.7.0 @@ -57,9 +65,9 @@ */ public function __construct( $taxonomy ) { $this->taxonomy = $taxonomy; - $this->namespace = 'wp/v2'; $tax_obj = get_taxonomy( $taxonomy ); $this->rest_base = ! empty( $tax_obj->rest_base ) ? $tax_obj->rest_base : $tax_obj->name; + $this->namespace = ! empty( $tax_obj->rest_namespace ) ? $tax_obj->rest_namespace : 'wp/v2'; $this->meta = new WP_REST_Term_Meta_Fields( $taxonomy ); } @@ -89,7 +97,8 @@ 'permission_callback' => array( $this, 'create_item_permissions_check' ), 'args' => $this->get_endpoint_args_for_item_schema( WP_REST_Server::CREATABLE ), ), - 'schema' => array( $this, 'get_public_item_schema' ), + 'allow_batch' => $this->allow_batch, + 'schema' => array( $this, 'get_public_item_schema' ), ) ); @@ -97,7 +106,7 @@ $this->namespace, '/' . $this->rest_base . '/(?P[\d]+)', array( - 'args' => array( + 'args' => array( 'id' => array( 'description' => __( 'Unique identifier for the term.' ), 'type' => 'integer', @@ -129,7 +138,8 @@ ), ), ), - 'schema' => array( $this, 'get_public_item_schema' ), + 'allow_batch' => $this->allow_batch, + 'schema' => array( $this, 'get_public_item_schema' ), ) ); } @@ -914,15 +924,14 @@ $post_type_links = array(); foreach ( $taxonomy_obj->object_type as $type ) { - $post_type_object = get_post_type_object( $type ); + $rest_path = rest_get_route_for_post_type_items( $type ); - if ( empty( $post_type_object->show_in_rest ) ) { + if ( empty( $rest_path ) ) { continue; } - $rest_base = ! empty( $post_type_object->rest_base ) ? $post_type_object->rest_base : $post_type_object->name; $post_type_links[] = array( - 'href' => add_query_arg( $this->rest_base, $term->term_id, rest_url( sprintf( 'wp/v2/%s', $rest_base ) ) ), + 'href' => add_query_arg( $this->rest_base, $term->term_id, rest_url( $rest_path ) ), ); }