/**
  * Returns the Singleton instance.
  *
  * @since 1.0.0
  * @access public
  * @static
  *
  * @return Attachment_Taxonomy_Edit The  Singleton class instance.
  */
 public static function instance()
 {
     if (null === self::$instance) {
         self::$instance = new self();
     }
     return self::$instance;
 }
 /**
  * Bootstraps the plugin.
  *
  * The textdomain is loaded and actions and filters are hooked in.
  * Furthermore the two custom attachment taxonomies the plugin defines by default are added.
  *
  * @since 1.0.0
  * @access public
  */
 public function bootstrap()
 {
     if ($this->is_mu_plugin) {
         load_muplugin_textdomain('attachment-taxonomies');
     } else {
         load_plugin_textdomain('attachment-taxonomies');
     }
     $core = Attachment_Taxonomies_Core::instance();
     add_action('restrict_manage_posts', array($core, 'render_taxonomy_filters'), 10, 1);
     add_action('wp_enqueue_media', array($core, 'enqueue_script'));
     add_action('wp_enqueue_media', array($core, 'print_styles'));
     $edit = Attachment_Taxonomy_Edit::instance();
     add_action('edit_attachment', array($edit, 'save_ajax_attachment_taxonomies'), 10, 1);
     add_action('add_attachment', array($edit, 'save_ajax_attachment_taxonomies'), 10, 1);
     add_filter('wp_prepare_attachment_for_js', array($edit, 'add_taxonomies_to_attachment_js'), 10, 3);
     add_filter('attachment_fields_to_edit', array($edit, 'remove_taxonomies_from_attachment_compat'), 10, 2);
     add_action('wp_enqueue_media', array($edit, 'adjust_media_templates'));
     /**
      * Filters the taxonomy class names that will be instantiated by default.
      *
      * @since 1.0.2
      *
      * @param array $taxonomy_class_names Array of taxonomy class names.
      */
     $taxonomy_class_names = apply_filters('attachment_taxonomy_class_names', array('Attachment_Category', 'Attachment_Tag'));
     $taxonomy_class_names = array_filter(array_unique($taxonomy_class_names), 'class_exists');
     foreach ($taxonomy_class_names as $class_name) {
         $this->add_taxonomy(new $class_name());
     }
 }