/** * The Singleton instance. * * @since 1.0.0 * @access public * @static * * @return Attachment_Taxonomies_Core The Singleton class instance. */ public static function instance() { if (null === self::$instance) { self::$instance = new self(); } return self::$instance; }
public function test_get_terms_for_taxonomy() { $factory = method_exists('WP_UnitTestCase', 'factory') ? self::factory() : $this->factory; $term1 = $factory->term->create(array('taxonomy' => 'attachment_category')); $term2 = $factory->term->create(array('taxonomy' => 'attachment_category')); $result = Attachment_Taxonomies_Core::instance()->get_terms_for_taxonomy('attachment_category'); $this->assertCount(2, $result); $this->assertEquals($term1, $result[0]->term_id); $this->assertEquals($term2, $result[1]->term_id); }
/** * Returns the media template output for attachment taxonomy term dropdowns. * * @since 1.0.0 * @access private * * @return string The HTML output for Backbone. */ private function get_taxonomy_media_template_output() { ob_start(); foreach (Attachment_Taxonomies_Core::instance()->get_taxonomies('objects') as $taxonomy) { $terms = Attachment_Taxonomies_Core::instance()->get_terms_for_taxonomy($taxonomy->name); ?> <label class="setting attachment-taxonomy-input" data-setting="taxonomy-<?php echo sanitize_html_class($taxonomy->name); ?> -terms"> <input type="hidden" value="{{ data.taxonomies ? Object.keys(data.taxonomies.<?php echo esc_attr($taxonomy->name); ?> ).join(',') : '' }}" /> </label> <label class="setting attachment-taxonomy-select"> <span class="name"><?php echo esc_html($taxonomy->labels->name); ?> </span> <select multiple="multiple"> <?php if ($taxonomy->hierarchical) { ?> <?php foreach ($terms as $term) { ?> <option value="<?php echo esc_attr($term->term_id); ?> " {{ ( data.taxonomies && data.taxonomies.<?php echo esc_attr($taxonomy->name); ?> [<?php echo esc_attr($term->term_id); ?> ] ) ? 'selected' : '' }}><?php echo esc_html($term->name); ?> </option> <?php } ?> <?php } else { ?> <?php foreach ($terms as $term) { ?> <option value="<?php echo esc_attr($term->slug); ?> " {{ ( data.taxonomies && data.taxonomies.<?php echo esc_attr($taxonomy->name); ?> ['<?php echo esc_attr($term->slug); ?> '] ) ? 'selected' : '' }}><?php echo esc_html($term->name); ?> </option> <?php } ?> <?php } ?> </select> </label> <?php } return ob_get_clean(); }
/** * 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()); } }