[wp-trac] [WordPress Trac] #53656: Not possible to get a post type's REST API namespace if modified

WordPress Trac noreply at wordpress.org
Wed Jul 14 12:21:25 UTC 2021


#53656: Not possible to get a post type's REST API namespace if modified
--------------------------+-----------------------------
 Reporter:  swissspidy    |      Owner:  (none)
     Type:  defect (bug)  |     Status:  new
 Priority:  normal        |  Milestone:  Awaiting Review
Component:  REST API      |    Version:
 Severity:  normal        |   Keywords:
  Focuses:                |
--------------------------+-----------------------------
 It's possible to supply a custom `rest_controller_class` to
 `register_post_type()`. A post type's controller class can be retrieved
 using `WP_Post_Type::get_rest_controller()`. Same goes for taxonomies &
 `WP_Taxonomy`.

 Now, such a custom controller can potentially change the `namespace` and
 `rest_base` for the post type, like so:

 {{{#!php
 <?php
 class My_Controller extends WP_REST_Posts_Controller {
         public function __construct() {
                 parent::__construct();
                 $this->namespace = 'foo/v1';
         }
 }

 register_post_type('bar', array( 'rest_controller_class' =>
 My_Controller::class ) );
 }}}

 However, there's now no way to get the post type's REST API base URL (`wp-
 json/foo/v1/bar`.

 For example, `/wp-json/wp/v2/types/bar will link to `/wp-json/wp/v2/bar`
 because the `wp/v2` namespace is hardcoded in
 `WP_REST_Post_Types_Controller`.

 Is there a way to get a post type's updated namespace and use that in
 `WP_REST_Post_Types_Controller` and other places?

 Hardcoding everything to `wp/v2` seems a bit limiting.

 Or is the namespace perhaps not intended to be modified like this?

-- 
Ticket URL: <https://core.trac.wordpress.org/ticket/53656>
WordPress Trac <https://core.trac.wordpress.org/>
WordPress publishing platform


More information about the wp-trac mailing list