From 08f53ef906049b61e9effcfc72d9b1906c8eb5ac Mon Sep 17 00:00:00 2001 From: "K. Adam White" Date: Fri, 3 Jan 2020 19:24:03 +0000 Subject: [PATCH] REST API: Issue doing_it_wrong if a taxonomy's specified rest_base is already in use by a different resource. Props fgiannar, TimothyBlynJacobs, kingkool68, SergeyBiryukov. Fixes #48401. Built from https://develop.svn.wordpress.org/trunk@47037 git-svn-id: http://core.svn.wordpress.org/trunk@46837 1a063a9b-81f0-0310-95a4-ce76da25c4cd --- .../class-wp-rest-posts-controller.php | 17 ++++++++++++++++- wp-includes/version.php | 2 +- 2 files changed, 17 insertions(+), 2 deletions(-) diff --git a/wp-includes/rest-api/endpoints/class-wp-rest-posts-controller.php b/wp-includes/rest-api/endpoints/class-wp-rest-posts-controller.php index 25b7fa2d8c..f97a2e898a 100644 --- a/wp-includes/rest-api/endpoints/class-wp-rest-posts-controller.php +++ b/wp-includes/rest-api/endpoints/class-wp-rest-posts-controller.php @@ -2242,7 +2242,22 @@ class WP_REST_Posts_Controller extends WP_REST_Controller { $taxonomies = wp_list_filter( get_object_taxonomies( $this->post_type, 'objects' ), array( 'show_in_rest' => true ) ); foreach ( $taxonomies as $taxonomy ) { - $base = ! empty( $taxonomy->rest_base ) ? $taxonomy->rest_base : $taxonomy->name; + $base = ! empty( $taxonomy->rest_base ) ? $taxonomy->rest_base : $taxonomy->name; + + if ( array_key_exists( $base, $schema['properties'] ) ) { + $taxonomy_field_name_with_conflict = ! empty( $taxonomy->rest_base ) ? 'rest_base' : 'name'; + _doing_it_wrong( + 'register_taxonomy', + sprintf( + /* translators: 1. The taxonomy name, 2. The property name, either rest_base or name. */ + __( 'The "%1$s" taxonomy "%2$s" conflicts with an existing property on the REST API Posts Controller. Specify a custom "rest_base" when registering the taxonomy to avoid this error.' ), + $base, + $taxonomy_field_name_with_conflict + ), + '5.4.0' + ); + } + $schema['properties'][ $base ] = array( /* translators: %s: Taxonomy name. */ 'description' => sprintf( __( 'The terms assigned to the object in the %s taxonomy.' ), $taxonomy->name ), diff --git a/wp-includes/version.php b/wp-includes/version.php index 9fc7cdbe63..b61dfd16bb 100644 --- a/wp-includes/version.php +++ b/wp-includes/version.php @@ -13,7 +13,7 @@ * * @global string $wp_version */ -$wp_version = '5.4-alpha-47036'; +$wp_version = '5.4-alpha-47037'; /** * Holds the WordPress DB revision, increments when changes are made to the WordPress DB schema.