I think it depends on the case. If the taxonomy is essential part of the theme, then functions.php might be appropriate place for registering it. If the taxonomy doesn’t care which theme is in use on the site, then a custom plugin might be better place for it.
Please note that asking about best practices isn’t quite on topic here as they can get rather opinion-based.
From meta: How should I ask for best practices (or should I not ask)?
Related Posts:
- How to Get Current Custom Post Type Associated Taxonomy Term
- modify show UI of a registered taxonomy
- set a custom post type to a taxonomy term programmatically in metabox
- Autoloading & Namespaces in WordPress Plugins & Themes: Can it Work?
- What process do you use for WordPress development? [closed]
- What is the advantage of using wp_mail?
- Should Plugin Folders Include a Blank index.php File?
- Where to store PHP files created by plugin / themes
- Should I create a theme or a plugin?
- Include third party Javascript library which is not included in WordPress
- Where do I start from
- WP 3.3 Tooltips API?
- wp_remote_get doesn’t work with secure connections https?
- Authoritative answer on which boots first – Plugins or Themes?
- How to Add Font Awesome Icons to WordPress Menus?
- How to Add a .js file Only in one specific Page Dynamically to Head
- How to Use WordPress Color Picker API in Custom Post Type Metabox
- Custom theme sufficient or custom plugin neccessary for this feature set?
- How to create custom home page via plugin?
- How to debug WordPress correctly?
- Featured Image not showing in admin
- What is better way to use Bootstrap inside admin panel?
- Whats the difference between blog_info(‘stylesheet_url’) difference get_stylesheet_uri()
- Paging on a future post loop?
- How to check if a stylesheet is already loaded?
- Problem with is_active_sidebar?
- WordPress security issue to output data from user input from theme option form
- Change template dynamically
- WordPress add_admin_page not working even parameters are correct?
- Custom plugin: Loop through taxonomy types and update columns for all types?
- Get Current Menu Location inside Nav_Walker
- Insert terms for custom taxonomy on plugin activation, or each page load (init hook)
- Custom Taxonomy to dropdown box on adminside wordpress
- Howto: Use Custom Post Types as Submenu Items in Admin
- Extending theme PHP class in plugin
- what is the difference between these phares?
- How to limit number of number of categories displayed by categories widget
- How to hide or rename “X” and “x-child” references in website source?
- Widget HTML Display Problem
- Plugin is not generating title tags on any pages or posts
- Is it necessary to do validation again when retrieving data from database?
- Update Data parameter of a wp_localize_script() call
- get_the_tags with separator control?
- How to only load css for used blocks on frontend
- Add child pages to submenu automatically
- term_exists() returning NULL on term that exists
- Why in this archive page that call query_posts() function show only the last 10 posts?
- Let plugin check if taxonomy is already registered by another plugin
- my own SVN for a plugin/theme
- Why enqueue styles on hook?
- PHP File_exist() not working – Checking if File Exist in WordPress Theme Directory
- Why would you use esc_attr() on internal functions?
- Invalid hook call on save, not edit when using swiper slider
- How to find where an object first instantiatiation
- Full documentation about $args for register_rest_route?
- How to create taxonomy without using register_taxonomy () function
- Add location tag to wordpress posts
- How to get terms for taxonomy
- Using init hook for register_taxonomy is causing invalid_taxonomy in wp_insert_term()
- How to remove/replace current page template?
- WordPress dynamic widget by location?
- WordPress Page Reload Takes forever during theme development
- Adjust query on single
- Using password protection to load different page elements?
- WP_Query order posts by category
- WordPress Favicon not Working For Images/Videos/PDFs
- Error 404 change permalink term custom term taxonomy
- How do I add filter with woocommerce categories?
- How can we stop showing short code in create or edit post section
- Is it possible to develop themes and plugins locally while still allowing content to be updated directly in the admin dashboard?
- Error Connecting to Database WHEN Installing WordPress on XAMPP [Tried All the Usual Stuff] (Pics Included)
- How can I measure CPU and RAM used by my theme or plugin
- Javascript not being loaded only in custom taxonomy template
- Custom premium registration form and profile page for a WordPress Web Application
- My enqueue admin style function doesn’t work because of ?=ver
- Can i prevent the effect of the_title filter on the dashboard’s posts/pages titles?
- Making Woocommerce optimized for more than 500k products
- How to embed or integrated a custom WordPress Widget into the theme?
- How to destroy or dispose wordpress uploder/manager?
- To remove rendering of menus and header, plugin or theme?
- To remove rendering of menus and header, plugin or theme?
- add_action priority and taxonomy used in plugin
- How can I add recent posts to menu like mashable
- How to display custom taxonomy and terms using/creating plugin template
- Display Data’s metabox in page
- Ajax functions – no access to wp-admin.php only online
- How to add something after a function
- Best Way to Inventory the Media Library of a 200+ Multisite Installation?
- Loading jQuery library from WordPress admin
- Using tag or inline style attribute?
- how to insert content into wp_head after loop_end
- Is the only way to add taxonomy terms via an admin panel?
- How to get the value entered in the input field in wordpres
- how to catch a data from a array in WordPress
- How are themes and plugins localized using the gettext GNU framework?
- Theme, Plugin or Both?
- Is there any other ways to replicating changes on live from staging without pushing from git
- Hook a search form anywhere on the site, using a custom plugin
- Fetch Custom Woocomerce filed data and check the data avialble in Wp-user table as nicname or username using function.php
- How to boost WP custom post REST API GET queries by custom taxonomies