Plugin: register custom post types, child ready and performance best practices

A few thoughts on your code

  • The conditional function_exists() actually will never work because plugins are loaded first, then child theme functions then parent theme functions. You can just drop these conditional checks. The function_exists() function is basically meant for parent themes and allows for a function to be overridden by plugins or child themes

  • Register all taxonomies and custom post types in one function and then hook that one function to init. It just makes more sense than having 10 functions doing almost the same exact thing hooked to init

  • Prefix function names in a plugin with the plugin name, this will ensure uniqueness and will avoid fatal errors in future. The example names in your question is easy to reproduce which will break the site should any other plugin use the same name.

  • As this is a plugin, I would just use a closure which will eliminate the need for any unique function names. Example:

    add_action( 'init', function () 
    {
        // Your code to register taxonomies and custom post types here
    });