What’s the purpose of ‘taxonomies’ parameter in register_post_type()?

The question:

As mentioned in register_post_type() Codex page:

(array) (optional) An array of registered taxonomies like category or post_tag that will be used with this post type. This can be used in lieu of calling register_taxonomy_for_object_type() directly. Custom taxonomies still need to be registered with register_taxonomy().
Default: no taxonomies

In my Custom Post Type (product) I’m also assigning two Custom Taxonomies with register_taxonomy() apart from the register_post_type(), and they are working fine. But there’s a parameter in register_post_type() called 'taxonomies' where it’s said to mention all the taxonomies in an array, but even without this I’m achieving what it’s meant to:

'taxonomies' => array( 'product_categories', 'product_tags' ),

So, I wonder what’s the purpose of this?

The Solutions:

Below are the methods you can try. The first solution is probably the best. Try others if the first one doesn’t work. Senior developers aren’t just copying/pasting – they read the methods carefully & apply them wisely to each case.

Method 1

To be really honest here, that is a useless parameter when used with custom taxonomies, as custom taxonomies are already registed to a custom post type when they are registered. Using the taxonomies parameter, you are re-registering a custom taxonomy to the custom post type

As stated by the codex, the taxonomies parameter is used to register build in taxonomies to custom post types, as build in taxonomies are registered to the build in post type post.

Just to close of, if you register a taxonomy to a post type, set the taxonomies parameter and use register_taxonomy_for_object_type(), you are doing the same job three times 🙂

All methods was sourced from stackoverflow.com or stackexchange.com, is licensed under cc by-sa 2.5, cc by-sa 3.0 and cc by-sa 4.0

Leave a Comment