public function __construct($instance, $args) { // Check whether we displaying the results of a prevous use (ie. silverghyll_tpicker is set) $this->inputs = apply_filters('tpicker_inputs', taxonomy_picker_tpicker_array()); // Get the configuration options from the database $this->options = apply_filters('tpicker_options', get_option('taxonomy-picker-options')); if (empty($this->options['empty-terms'])) { $this->options['empty-terms'] = 'always'; } // Upgrade defence for new option // Upgrade defence for v1.8 - won't be needed long term. If taxonomies haven't been set, process the instance if (empty($instance['taxonomies'])) { $instance = taxonomy_picker_taxonomies_array($instance); } // Pre-process the instance for efficiency $this->combo = $instance['combo']; // Saved our combobox type $set_categories = ''; //We may set a value if (!empty($instance['taxonomies']) and is_array($instance['taxonomies'])) { // Protect from nothing chosen foreach ($instance['taxonomies'] as $taxonomy_name => $data_item) { // Loop through chosen list of taxonomies if ($taxonomy_name == 'post_type') { $tax_label = 'Post Type'; } else { $taxonomy = get_taxonomy($taxonomy_name); // Taxonomy name is dynamic in case it has changed if ($taxonomy_name == 'category' and !empty($instance['category_title'])) { $tax_label = $instance['category_title']; } elseif (is_object($taxonomy)) { $tax_label = $taxonomy->label; } else { // Probably a string (e.g. post_type) so use the information we have $tax_Label = $taxonomy_name; } } // ==Post Type? $tax_label = __($tax_label, 'tpicker') . $this->options['punctuation']; $this->taxonomies[$tax_label] = $data_item; } ksort($this->taxonomies); //Put taxonomies into alpha label order } $this->taxonomies = apply_filters('tpicker_taxonomies', $this->taxonomies); // Filter taxonomy order if ($args) { extract($args); } // Unpack $before_widget etc $this->title = apply_filters('widget_title', $instance['title']); if ($this->title) { $this->title = $this->before_title . $this->title . $this->after_title; } // Wrap it $this->id = array_key_exists('id', $instance) ? $instance['id'] : 'unset'; $this->before_widget = apply_filters('tpicker_before', $before_widget ? $before_widget : $this->before_widget); $this->after_widget = apply_filters('tpicker_after', $after_widget ? $after_widget : $this->after_widget); $this->hidesearch = array_key_exists('hidesearch', $instance) ? true : false; // Defaults to show (false) $this->date_match = $instance['date_match']; // Must be present so just read in $this->choose_categories = $instance['choose_categories']; $cats = explode(',', $this->set_categories); // Limit list of categories if ($this->choose_categories == 'I') { // Only allow specified categories $set_categories = 'cat=' . $instance['set_categories']; // We can pass it as is because it will become the list of all categories for query_posts $cats = explode(',', $instance['set_categories']); // Should be a list of cat IDs foreach ($cats as $cat) { // Test against each of our permitted categories $this->categories[$cat] = get_term_by('ID', $cat, 'category'); // Add individual categories to the array } } elseif ($instance['choose_categories'] == 'E') { // Reject specified categories $set_categories = 'cat=-' . str_replace(',', ',-', $instance['set_categories']); // Prefix each cat id with - to exclude it $all_cats[] = get_terms('category'); // Add individual categories to the array foreach ($all_cats as $acat) { // Test against each of our permitted categories $allowed = true; foreach ($cats as $cat) { // Test against each of our permitted categories if ($acat->ID == $cat) { $allowed = false; break; } } if ($allowed) { $this->categories[$cat] = get_term($cat, 'category'); // Add individual categories to the array } } } // Set default term arguments for get_terms switch ($this->options['empty-terms']) { // How to handle empty items case 'always': $this->term_args['hide_empty'] = 0; break; case 'never': $this->term_args['hide_empty'] = 1; $this->term_args['hierarchical'] = 1; break; case 'sometimes': $this->term_args['hide_empty'] = 1; $this->term_args['hierarchical'] = 1; } $this->term_args['pad_counts'] = 1; // Add options for optional ordering of results $this->orderby = $instance['results_orderby'] ? $instance['results_orderby'] : '_default'; // Default value for people upgrading from earlier widget versions $this->order = $instance['results_order'] ? $instance['results_order'] : '_DESC'; return true; }
function tpicker_query_string() { // Check whether we displaying the results of a prevous use (ie. silverghyll_tpicker is set) $tpicker_inputs = taxonomy_picker_tpicker_array(); if (empty($tpicker_inputs)) { return ""; } else { foreach ($tpicker_inputs as $key => $data) { $taxonomy = get_taxonomy($key == 'tag' ? 'post_tag' : $key); $result .= $taxonomy->label . ': ' . $data . '; '; } } return $result; }