If you want the theme to be independent from the CPT’s, place the CPT’s as plugin(s). If the CPTs go with the theme, functions.php sounds like the perfect spot for them.
If you add them as plugins, you should group them in one or more plugins depending on functionality, not on post type.
Related Posts:
- Between functions.php (theme), widgets, and plugins, which is loaded first?
- Where do I put the code snippets I found here or somewhere else on the web?
- Disable plugin / plugin action via theme
- How do I call wp_get_current_user() in a plugin when plugins are loaded before pluggable.php?
- How to remove WPML Generator Meta Tag by theme’s functions.php (override plugin function)? [closed]
- Need to create a Theme demo site that features multiple themes
- Define Function in functions.php or plugin and call in theme loop
- Autogenerate wordpress shortcodes using array?
- Why does including a file in theme’s functions.php not work?
- WooCommerce create new product and add to cart on form submit
- Adding New Role
- Add Top-Level Menu that opens URL
- wordpress custom login successful redirect hook
- WordPress ajax call for not logged in users, doesn’t work
- Over write plugin templates
- Display All Non-Used Plugins
- Using has_filter with a class based plugin to check whether the plugin is active or not
- New Plugin: Post update pushes a copy as a revision
- Placement of Code in Plugin for hooking `save_post`
- ajax front-end increment views on click
- Add get_option to jquery
- Scope for PHP Variables Assigned in functions.php or a plugin
- Override the filter from plugin in child theme
- Function to prevent users from trashing comments
- Avoiding Duplicate function names in Post Loop (WP_Footer script)
- How to add class in plugin only for network site?
- How does WordPress process plugin installations?
- How to create TEMPORARY Download links in a wordpress POST?
- PHP Fatal error: Call to undefined function plugin_basename
- Executing my function once on a specific time
- Missing Argument
- load_plugin_textdomain error
- wordpress plugin is not activating from widget
- Adding Shortcode to Text Widget
- Does WordPress validate inputs to all functions? (such as get_user_meta and insert_user_meta)
- Using a function to change favorites listing
- WP Query. Is there a maximum size?
- How to remove custom post type and add category and post name
- Ajax : Call undefined function plugin_function() … can’t call any plugin function
- Difference and examples of esc_attr__() and esc_attr_e()
- How to over-ride a file in a plugin? [closed]
- Overwrite category head title
- How to prevent additional code in functions.php to be removed once there is an update?
- execute function after one completed
- Proper way to use plugin functions in functions.php
- Replacing global wp_query
- How to get specific string/value from an array? php [closed]
- Woocommerce singe product custom gallery output works just on the first slide
- How to translate wordpress error message
- strange shortcode error: does shortcodes requires any dependency?
- All custom widgets are not showing in widget area at the same time
- Changing plugin options from theme functions file?
- My widget won’t update its values when save is clicked
- Execute a function when the entire page is displayed
- How can i listing current category and Featured Category post list?
- How to add custom function to pluggable.php
- Adding a pagenavi to function for displaying bookmarks
- grab or load text on demand
- sliding/fading header plugin or approach suggestion
- What is the most efficient way of adding additional functionaliy for admin only
- Replace the_content with ACF Flexible Content via function
- How would I get the new plugin version on this function?
- Create category for each user
- Is there any way to sync Facebook Comments and with comments on WordPress website?
- Search in WordPress
- Easiest way to load/fire a handful of functions, IF checkbox is checked?
- post id or permalink auto-incrementing number and reset everyday
- Modify function output in a plugin
- Is admin section completely customizable in terms of styling?
- How to make the first letter of a post title uppercase, in a plugin?
- Get a Taxonomy values in an array
- Migrating custom php we wrote from functions.php into a site-specific plugin
- Shows warning when enable “wp_gallery_custom_links” plugin with Themify Builder
- WordPress environment not loading properly
- Place content inside the Post Loop
- How to replace native comment_count with Comments Evolved aggregate count
- Follow author on muti-user WordPress site
- Code fails in plugin file but works in functions.php
- Conditional required fields for WordPress Contact Form 7
- Hook into install email
- wordpress Shortocode running twice?
- Cannot access variables within a widget
- Is there any wordpress function to update a random post every 10 minutes?
- Calling an custom field from theme option at the frontend
- pluggable function in theme, to be overridden by plugin
- Calling a function from a link in WordPress
- WordPress plugin options need to delete after deactivate & uninstall
- WordPress function to add text
- Doing action based on input from options menu
- Showing author box on post detail page
- Simple WordPress function / plugin to redirect a site
- Remove base from the custom post type URL [duplicate]
- is_plugin_active() not defined on active plugin, in the thumbnails.php file
- Sync roles across several plugins
- How to Add Extra Text In WordPress Title Before Post Publish
- How can I save the selected page in the dropdown after anyone clicks on Save Changes?
- Gravity Forms and Gravity View Permissions
- How can I save the selected page in the dropdown after anyone clicks on Save Changes?
- WordPress Convert queries to slashes using function.php
- Run a function only once when logging into dashboard