/** * 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()); } }