public static function get_slider_html($slider_id, $category = '', $output_id = null, $post_id = null, $shortcode_parameters = array(), $query = array(), $custom = array()) { $args = func_get_args(); if (count($args) === 2 && is_array($args[1])) { $args = $args[1]; $args_defaults = array('category' => '', 'output_id' => null, 'post_id' => null, 'shortcode_parameters' => array(), 'query' => array(), 'custom' => array()); $args = shortcode_atts($args_defaults, $args); $category = $args['category']; $output_id = $args['output_id']; $post_id = $args['post_id']; $shortcode_parameters = $args['shortcode_parameters']; $query = $args['query']; $custom = $args['custom']; } $slider_options = self::$slider_config; if (!array_key_exists($slider_id, $slider_options)) { return false; } else { if ($output_id === null) { if (isset($slider_options[$slider_id]['output_default']) && isset($slider_options[$slider_id]['output'][$slider_options[$slider_id]['output_default']])) { $output_id = $slider_options[$slider_id]['output_default']; } else { $output_id = array_keys($slider_options[$slider_id]['output']); $output_id = reset($output_id); } } $data = array(); if ($post_id === null) { $query_options = array('post_type' => $slider_id, 'order' => isset($slider_options[$slider_id]['order']) ? $slider_options[$slider_id]['order'] : 'DESC', 'posts_per_page' => -1, 'suppress_filters' => false); if (!empty($category)) { $query_options['tax_query'] = array(array('taxonomy' => $slider_id . '_tax', 'field' => 'slug', 'terms' => explode(' ', $category), 'operator' => 'IN')); } if (!empty($query)) { $query_options = array_merge($query_options, $query); } $posts_array = get_posts($query_options); } else { if (is_array($post_id)) { $posts_array = $post_id; } else { $posts_array = array(get_post($post_id)); } } $values_array = array(); $all_categories_pool = array(); foreach ($posts_array as $post) { $meta = apply_filters('tesla_slide_options', get_post_meta($post->ID, 'slide_options', true), $post->ID, 'get_slider_html'); $meta_array = self::process_options($meta, $slider_options[$slider_id]['options']); $post_cats = get_the_terms($post->ID, $slider_id . '_tax'); $post_cats_slugs = array(); if (is_array($post_cats)) { foreach ($post_cats as $cat) { if ($cat->slug !== $category && $cat->name !== $category) { $post_cats_slugs[$cat->slug] = $cat->name; } } } $all_categories_pool = array_merge($all_categories_pool, $post_cats_slugs); $values_array[] = array('post' => $post, 'options' => $meta_array, 'categories' => $post_cats_slugs, 'related' => self::get_related($post->ID, $category)); } $all_categories = Tesla_slider::get_categories($slider_id, true); // foreach ($all_categories as $all_categories_key => $all_categories_value) // if($all_categories_key===$category||$all_categories_value===$category) // unset($all_categories[$all_categories_key]); foreach ($all_categories as $all_categories_key => $all_categories_value) { if ('' !== $category && !array_key_exists($all_categories_key, $all_categories_pool)) { unset($all_categories[$all_categories_key]); } } $data['slides'] = $values_array; $data['all_categories'] = $all_categories; $shortcode_defaults = isset($slider_options[$slider_id]['output'][$output_id]['shortcode_defaults']) ? $slider_options[$slider_id]['output'][$output_id]['shortcode_defaults'] : array(); $data['shortcode'] = shortcode_atts($shortcode_defaults, $shortcode_parameters); $data['slider_id'] = $slider_id; $data['output_id'] = $output_id; $data['custom'] = $custom; $view = $slider_options[$slider_id]['output'][$output_id]['view']; return self::$load->view($view, $data, true, true); } }