function sf_directory() { $search_term = ""; $category_term = ""; $location_term = ""; $excerpt_length = ""; $directory_itens = array(); $count = 0; if (!empty($_REQUEST['search_term'])) { $search_term = $_REQUEST['search_term']; } if (!empty($_REQUEST['item_excerpt'])) { $excerpt_length = $_REQUEST['item_excerpt']; } $tax_query = array(); $tax_query_category = array(); $tax_query_location = array(); if (isset($_REQUEST['location_term']) && $_REQUEST['location_term'] != '' && $_REQUEST['location_term'] != 'All') { $location_term = $_REQUEST['location_term']; $tax_query_location = array('taxonomy' => 'directory-location', 'field' => 'slug', 'terms' => array($location_term)); array_push($tax_query, $tax_query_location); } if (isset($_REQUEST['category_term']) && $_REQUEST['category_term'] != '' && $_REQUEST['category_term'] != 'All') { $category_term_array = array(); $category_term_array = explode(",", $_REQUEST['category_term']); $tax_query_category = array('taxonomy' => 'directory-category', 'field' => 'slug', 'terms' => $category_term_array); array_push($tax_query, $tax_query_category); } $search_query_args = array('s' => $search_term, 'post_type' => 'directory', 'post_status' => 'publish', 'posts_per_page' => -1, 'suppress_filters' => false, 'tax_query' => $tax_query, 'meta_query' => array('relation' => 'AND', array('key' => 'sf_directory_address', 'value' => '', 'compare' => '!='))); $search_query_args = http_build_query($search_query_args); $search_results = get_posts($search_query_args); foreach ($search_results as $result) { $directory_item = array(); $directory_item["pin_title"] = $result->post_title; $directory_item["pin_content"] = $result->post_content; //Get the excerpt $content = $result->post_content; $words = explode(' ', $content, $excerpt_length + 1); $categories = wp_get_post_terms($result->ID, "directory-category"); $locations = wp_get_post_terms($result->ID, "directory-location"); $category_list = $location_list = ""; $c = $l = 0; if ($categories) { foreach ($categories as $category) { if ($c == 0) { $category_list .= $category->name; } else { $category_list .= ', ' . $category->name; } } } if ($locations) { foreach ($locations as $location) { if ($l == 0) { $location_list .= $location->name; } else { $location_list .= ', ' . $location->name; } } } if (count($words) > $excerpt_length) { array_pop($words); array_push($words, '...'); $directory_item["pin_short_content"] = implode(' ', $words); } $pin_img_url = wp_get_attachment_image_src(sf_get_post_meta($result->ID, 'sf_directory_map_pin', true), 'full'); $img_src = wp_get_attachment_image_src(get_post_thumbnail_id($result->ID), 'thumb-image'); $directory_item["pin_logo_url"] = $pin_img_url[0]; $directory_item["pin_thumbnail"] = $img_src[0]; $directory_item["pin_address"] = sf_get_post_meta($result->ID, 'sf_directory_address', true); $directory_item["pin_link"] = esc_url(sf_get_post_meta($result->ID, 'sf_directory_pin_link', true)); $directory_item["pin_button_text"] = sf_get_post_meta($result->ID, 'sf_directory_pin_button_text', true); $directory_item["pin_lat"] = sf_get_post_meta($result->ID, 'sf_directory_lat_coord', true); $directory_item["pin_lng"] = sf_get_post_meta($result->ID, 'sf_directory_lng_coord', true); $directory_item["categories"] = $category_list; $directory_item["locations"] = $location_list; $directory_itens['items'][$count] = $directory_item; $count++; } $directory_itens['map_1st_text'] = __("What are you looking for?", "swiftframework"); $directory_itens['results_text_1'] = __("Found", "swiftframework"); $directory_itens['results_text_2'] = __("result", "swiftframework"); $directory_itens['results_text_2plural'] = __("results", "swiftframework"); $directory_itens['search_text'] = __("Search", "swiftframework"); $directory_itens_result = new WP_Query($search_query_args); //If we get no results, then return error message if ($count == 0) { $directory_itens['errormsg'] = __("No results found, please try again.", "swiftframework"); } $directory_itens['results'] = $count; $directory_itens['locations'] = sf_directory_location_filter(); $directory_itens['categories'] = sf_directory_category_filter($category_term); echo json_encode($directory_itens); die; }
protected function content($atts, $content = null) { global $wp, $wp_rewrite; $title = $address = $img_file_url = $pin_image = $size = $zoom = $directory_category = $directory_map_filter = $directory_map_results = $directory_map_filter_pos = $color = $saturation = $type = $el_position = $width = $pagination = $item_count = $excerpt_length = $el_class = ''; extract(shortcode_atts(array('title' => '', 'address' => '', 'directory_category' => '', 'order' => '', 'directory_map_filter' => '', 'directory_map_filter_pos' => '', 'directory_map_results' => '', 'excerpt_length' => '', 'item_count' => '-1', 'pagination' => 'no', 'size' => 200, 'zoom' => 14, 'color' => '', 'saturation' => '', 'type' => 'm', 'pin_image' => '', 'fullscreen' => 'no', 'el_position' => '', 'width' => '1/1', 'el_class' => ''), $atts)); $output = ''; $current_url = home_url(add_query_arg(array(), $wp->request)); $el_class = $this->getExtraClass($el_class); $width = spb_translateColumnWidthToSpan($width); $ajax_url = admin_url('admin-ajax.php'); $size = str_replace(array('px', ' '), array('', ''), $size); if ($fullscreen == "yes" && $width == "col-sm-12") { $fullscreen = true; } else { $fullscreen = false; } if ($pin_image != "") { $img_url = wp_get_attachment_image_src($pin_image, 'full'); if (is_array($img_url)) { $img_file_url = $img_url[0]; } } if ($fullscreen) { $output .= "\n\t" . '<div class="spb_gmaps_widget fullscreen-map spb_content_element ' . $width . $el_class . '">'; } else { $output .= "\n\t" . '<div class="spb_gmaps_widget spb_content_element ' . $width . $el_class . '">'; } $output .= "\n\t\t" . '<div class="spb-asset-content">'; $output .= $title != '' ? "\n\t\t\t" . $this->spb_title($title, '', $fullscreen) : ''; if ($directory_map_filter_pos == "above" && $directory_map_filter == 'yes') { $output .= "\n\t" . '<div class="spb_directory_filter_above container">'; $dir_placeholder = __("What are you looking for?", 'swift-framework-plugin'); $category_term = ""; //Search Text if (isset($_POST['dir-search-value'])) { $dir_search_val = $_POST['dir-search-value']; } else { $dir_search_val = ""; } //Location Option if (isset($_POST['dir-location'])) { $dir_location_val = $_POST['dir-location']; } else { $dir_location_val = ""; } //Directory Category if (isset($_POST['dir-category-id'])) { //$dir_location_val = $_POST['dir-category-id']; $directory_category = $_POST['dir-category-id']; } else { $dir_location_val = ""; } //Map Filter $output .= '<form action="" method="post" class="directory-search-form" data-url="' . $current_url . '" data-page-base="' . $wp_rewrite->pagination_base . '">'; $output .= '<div class="filter-search-container">'; $output .= '<input type="text" name="dir-search-value" id="dir-search-value" value="' . $dir_search_val . '" placeholder="' . $dir_placeholder . '"></div>'; $output .= '<div class="directory-filter">' . sf_directory_location_filter() . '</div>'; $output .= '<div class="directory-filter"> ' . sf_directory_category_filter($category_term, $directory_category) . '</div>'; $output .= '<div class="directory-search-container"><a class="btn read-more-button directorySearch" name="directory-search-button" id="directory-search-button">' . __("Search", 'swift-framework-plugin') . '</a></div>'; $output .= '</form>'; $output .= '</div>' . $this->endBlockComment($width); } $output .= '<div class="spb_map_wrapper">'; $output .= '<div class="map-directory-canvas" style="width:100%;height:' . $size . 'px;" data-address="' . $address . '" data-zoom="' . $zoom . '" data-maptype="' . $type . '" data-ajaxurl="' . $ajax_url . '" data-excerpt="' . $excerpt_length . '" data-pagination="' . $pagination . '" data-mapcolor="' . $color . '" data-directory-category="' . $directory_category . '" data-directory-map-filter="' . $directory_map_filter . '" data-directory-map-filter-pos="' . $directory_map_filter_pos . '" data-directory-map-results="' . $directory_map_results . '" data-mapsaturation="' . $saturation . '" data-pinimage="' . $img_file_url . '"></div></div>'; if ($directory_map_filter_pos == "below" && $directory_map_filter == 'yes') { $output .= "\n\t" . '<div class="directory-filter-wrap container"><div class="spb_directory_filter_below container">'; $dir_placeholder = __("What are you looking for?", 'swift-framework-plugin'); $category_term = ""; //Search Text if (isset($_POST['dir-search-value'])) { $dir_search_val = $_POST['dir-search-value']; } else { $dir_search_val = ""; } //Location Option if (isset($_POST['dir-location'])) { $dir_location_val = $_POST['dir-location']; } else { $dir_location_val = ""; } //Map Filter $output .= '<form action="" method="post" class="directory-search-form" data-url="' . $current_url . '" data-page-base="' . $wp_rewrite->pagination_base . '">'; $output .= '<div class="filter-search-container">'; $output .= '<input type="text" name="dir-search-value" id="dir-search-value" value="' . $dir_search_val . '" placeholder="' . $dir_placeholder . '"></div>'; $output .= '<div class="directory-filter">' . sf_directory_location_filter() . '</div>'; $output .= '<div class="directory-filter"> ' . sf_directory_category_filter($category_term, $directory_category) . '</div>'; $output .= '<div class="directory-search-container"><a class="btn read-more-button directorySearch" name="directory-search-button" id="directory-search-button">' . __("Search", 'swift-framework-plugin') . '</a></div>'; $output .= '</form>'; $output .= '</div></div>' . $this->endBlockComment($width); } if ($fullscreen) { $output .= "\n\t\t" . '<div class="directory-results container">'; } else { $output .= "\n\t\t" . '<div class="directory-results">'; } if ($directory_map_results != 'map') { // ITEMS OUTPUT $items = sf_directory_items($excerpt_length, $pagination, $item_count, $directory_category, $order); $output .= $items; } $output .= "\n\t\t" . '</div>'; $output .= "\n\t" . '</div></div>'; if ($fullscreen && $width == "col-sm-12") { $output = $this->startRow($el_position, '', true) . $output . $this->endRow($el_position, '', true); } else { $output = $this->startRow($el_position) . $output . $this->endRow($el_position); } global $sf_include_maps; $sf_include_maps = true; return $output; }