plugin_url( 'admin/assets/img/filter-types/checkboxes.png' ); } /** * Get info */ public function get_info() { return jet_smart_filters()->utils->get_file_content( jet_smart_filters()->plugin_path( 'admin/templates/filter-info/checkboxes.php' ) ); } /** * Get provider wrapper selector */ public function get_scripts() { return false; } /** * Prepare filter template argumnets */ public function prepare_args( $args ) { $filter_id = $args['filter_id']; $content_provider = isset( $args['content_provider'] ) ? $args['content_provider'] : false; $additional_providers = isset( $args['additional_providers'] ) ? $args['additional_providers'] : false; $apply_type = isset( $args['apply_type'] ) ? $args['apply_type'] : false; $search_enabled = isset( $args['search_enabled'] ) ? $args['search_enabled'] : false; $search_placeholder = isset( $args['search_placeholder'] ) ? $args['search_placeholder'] : __( 'Search...', 'jet-smart-filters' ); $less_items_count = isset( $args['less_items_count'] ) ? $args['less_items_count'] : false; $more_text = isset( $args['more_text'] ) ? $args['more_text'] : __( 'More', 'jet-smart-filters' ); $less_text = isset( $args['less_text'] ) ? $args['less_text'] : __( 'Less', 'jet-smart-filters' ); $scroll_height = isset( $args['scroll_height'] ) ? $args['scroll_height'] : false; $dropdown_enabled = isset( $args['dropdown_enabled'] ) ? filter_var( $args['dropdown_enabled'], FILTER_VALIDATE_BOOLEAN ) : false; $dropdown_placeholder = isset( $args['dropdown_placeholder'] ) ? $args['dropdown_placeholder'] : __( 'Select some options', 'jet-smart-filters' ); if ( ! $filter_id ) { return false; } $source = get_post_meta( $filter_id, '_data_source', true ); $use_exclude_include = get_post_meta( $filter_id, '_use_exclude_include', true ); $exclude_include_options = get_post_meta( $filter_id, '_data_exclude_include', true ); $options = array(); $by_parents = false; $query_type = false; $query_var = false; $relational_operator = 'OR'; $current_value = false; switch ( $source ) { case 'taxonomies': $tax = get_post_meta( $filter_id, '_source_taxonomy', true ); $only_child = filter_var( get_post_meta( $filter_id, '_only_child', true ), FILTER_VALIDATE_BOOLEAN ); $show_empty_terms = filter_var( get_post_meta( $filter_id, '_show_empty_terms', true ), FILTER_VALIDATE_BOOLEAN ); $relational_operator = get_post_meta( $filter_id, '_terms_relational_operator', true ); $custom_query_var = $this->get_custom_query_var( $filter_id ); if ( ! isset( $args['ignore_parents'] ) || true !== $args['ignore_parents'] ) { $by_parents = get_post_meta( $filter_id, '_group_by_parent', true ); $by_parents = filter_var( $by_parents, FILTER_VALIDATE_BOOLEAN ); } if ( true === $by_parents ) { $options = jet_smart_filters()->data->get_terms_objects( $tax, $only_child, array( 'hide_empty' => ! $show_empty_terms, ) ); } else { $options = jet_smart_filters()->data->get_terms_for_options( $tax, $only_child, array( 'hide_empty' => ! $show_empty_terms, ) ); } if ( is_category() || is_tag() || is_tax( $tax ) ) { $current_value = get_queried_object_id(); } $query_type = 'tax_query'; $query_var = $tax; if ( $custom_query_var ) { $query_type = 'meta_query'; $query_var = $custom_query_var; } break; case 'posts': $post_type = get_post_meta( $filter_id, '_source_post_type', true ); $args = array( 'post_type' => $post_type, 'post_status' => 'publish', 'posts_per_page' => -1 ); $args = apply_filters( 'jet-smart-filters/filters/posts-source/args', $args ); $posts = get_posts( $args ); $query_type = 'meta_query'; $query_var = get_post_meta( $filter_id, '_query_var', true ); if ( ! empty( $posts ) ) { $options = wp_list_pluck( $posts, 'post_title', 'ID' ); } break; case 'custom_fields': $custom_field = get_post_meta( $filter_id, '_source_custom_field', true ); $get_from_field = get_post_meta( $filter_id, '_source_get_from_field_data', true ); $get_from_field = filter_var( $get_from_field, FILTER_VALIDATE_BOOLEAN ); if ( $get_from_field ) { $options = jet_smart_filters()->data->get_choices_from_field_data( array( 'field_key' => $custom_field, 'source' => get_post_meta( $filter_id, '_custom_field_source_plugin', true ), ) ); } else { $options = get_post_meta( get_the_ID(), $custom_field, true ); $options = jet_smart_filters()->data->maybe_parse_repeater_options( $options ); } $query_type = 'meta_query'; $query_var = get_post_meta( $filter_id, '_query_var', true ); break; case 'cct': $query_type = 'meta_query'; $query_var = get_post_meta( $filter_id, '_query_var', true ); $options = jet_smart_filters()->data->get_choices_from_cct_data( $query_var ); break; default: $options = get_post_meta( $filter_id, '_source_manual_input', true ); $options = ! empty( $options ) ? $options : array(); $options = wp_list_pluck( $options, 'label', 'value' ); $query_type = 'meta_query'; $query_var = get_post_meta( $filter_id, '_query_var', true ); break; } $options = jet_smart_filters()->data->maybe_include_exclude_options( $use_exclude_include, $exclude_include_options, $options ); $options = apply_filters( 'jet-smart-filters/filters/filter-options', $options, $filter_id, $this ); $result = array( 'options' => $options, 'query_type' => $query_type, 'query_var' => $query_var, 'relational_operator' => $relational_operator, 'by_parents' => $by_parents, 'query_var_suffix' => jet_smart_filters()->filter_types->get_filter_query_var_suffix( $filter_id ), 'content_provider' => $content_provider, 'additional_providers' => $additional_providers, 'apply_type' => $apply_type, 'filter_id' => $filter_id, 'search_enabled' => $search_enabled, 'search_placeholder' => $search_placeholder, 'less_items_count' => $less_items_count, 'more_text' => $more_text, 'less_text' => $less_text, 'scroll_height' => $scroll_height, 'dropdown_enabled' => $dropdown_enabled, 'dropdown_placeholder' => $dropdown_placeholder, 'accessibility_label' => $this->get_accessibility_label( $filter_id ) ); if ( $current_value ) { $result['current_value'] = $current_value; } return $result; } } }