/** * Force update review count. * * @since 1.0.0 * @package GeoDirectory * @return bool */ function geodir_term_review_count_force_update($new_status, $old_status = '', $post = '') { if (isset($_REQUEST['action']) && $_REQUEST['action'] == 'geodir_import_export') { return; } //do not run if importing listings if (isset($post->post_type) && ($post->post_type == 'nav_menu_item' || $post->post_type == 'page' || $post->post_type == 'post')) { return; } if ($new_status != $old_status) { geodir_count_reviews_by_terms(true); } return true; }
/** * Force update review count. * * @since 1.0.0 * @package GeoDirectory * @return bool */ function geodir_term_review_count_force_update($new_status, $old_status = '', $post = '') { if (isset($post->post_type) && ($post->post_type == 'nav_menu_item' || $post->post_type == 'page' || $post->post_type == 'post')) { return; } if ($new_status != $old_status) { geodir_count_reviews_by_terms(true); } return true; }
/** * Front-end display content for best of widget. * * @since 1.3.9 * @since 1.5.1 Added filter to view all link. * @since 1.5.1 Declare function public. * * @param array $args Widget arguments. * @param array $instance Saved values from database. */ public function widget($args, $instance) { extract($args); /** * Filter the best of widget tab layout. * * @since 1.3.9 * * @param string $instance['tab_layout'] Best of widget tab layout name. */ $tab_layout = empty($instance['tab_layout']) ? 'bestof-tabs-on-top' : apply_filters('bestof_widget_tab_layout', $instance['tab_layout']); echo '<div class="bestof-widget-tab-layout ' . $tab_layout . '">'; echo $before_widget; $loc_terms = geodir_get_current_location_terms(); if ($loc_terms) { $cur_location = ' : ' . ucwords(str_replace('-', ' ', end($loc_terms))); } else { $cur_location = ''; } /** * Filter the current location name. * * @since 1.3.9 * * @param string $cur_location Current location name. */ $cur_location = apply_filters('bestof_widget_cur_location', $cur_location); /** * Filter the widget title. * * @since 1.3.9 * * @param string $instance['title'] The widget title. */ $title = empty($instance['title']) ? wp_sprintf(__('Best of %s', 'geodirectory'), get_bloginfo('name') . $cur_location) : apply_filters('bestof_widget_title', __($instance['title'], 'geodirectory')); /** * Filter the post type. * * @since 1.3.9 * * @param string $instance['post_type'] The post type. */ $post_type = empty($instance['post_type']) ? 'gd_place' : apply_filters('bestof_widget_post_type', $instance['post_type']); /** * Filter the listing limit. * * @since 1.3.9 * * @param int $instance['post_limit'] No. of posts to display. */ $post_limit = empty($instance['post_limit']) ? '5' : apply_filters('bestof_widget_post_limit', $instance['post_limit']); /** * Filter the category limit. * * @since 1.3.9 * * @param int $instance['categ_limit'] No. of categories to display. */ $categ_limit = empty($instance['categ_limit']) ? '3' : apply_filters('bestof_widget_categ_limit', $instance['categ_limit']); $use_viewing_post_type = !empty($instance['use_viewing_post_type']) ? true : false; /** * Filter the use of location filter. * * @since 1.3.9 * * @param int|bool $instance['add_location_filter'] Filter listings using current location. */ $add_location_filter = empty($instance['add_location_filter']) ? '1' : apply_filters('bestof_widget_location_filter', $instance['add_location_filter']); // set post type to current viewing post type if ($use_viewing_post_type) { $current_post_type = geodir_get_current_posttype(); if ($current_post_type != '' && $current_post_type != $post_type) { $post_type = $current_post_type; } } if (isset($instance['character_count'])) { /** * Filter the widget's excerpt character count. * * @since 1.3.9 * * @param int $instance['character_count'] Excerpt character count. */ $character_count = apply_filters('bestof_widget_list_character_count', $instance['character_count']); } else { $character_count = ''; } $category_taxonomy = geodir_get_taxonomies($post_type); $term_args = array('hide_empty' => true, 'parent' => 0); if (is_tax()) { $taxonomy = get_query_var('taxonomy'); $cur_term = get_query_var('term'); $term_data = get_term_by('name', $cur_term, $taxonomy); $term_args['parent'] = $term_data->term_id; } $terms = get_terms($category_taxonomy[0], $term_args); $term_reviews = geodir_count_reviews_by_terms(); $a_terms = array(); foreach ($terms as $term) { if ($term->count > 0) { if (isset($term_reviews[$term->term_id])) { $term->review_count = $term_reviews[$term->term_id]; } else { $term->review_count = '0'; } $a_terms[] = $term; } } $terms = geodir_sort_terms($a_terms, 'review_count'); $query_args = array('posts_per_page' => $post_limit, 'is_geodir_loop' => true, 'post_type' => $post_type, 'gd_location' => $add_location_filter ? true : false, 'order_by' => 'high_review'); if ($character_count >= 0) { $query_args['excerpt_length'] = $character_count; } $layout = array(); if ($tab_layout == 'bestof-tabs-as-dropdown') { $layout[] = $tab_layout; } else { $layout[] = 'bestof-tabs-as-dropdown'; $layout[] = $tab_layout; } echo $before_title . __($title) . $after_title; //term navigation - start echo '<div class="geodir-tabs gd-bestof-tabs" id="gd-bestof-tabs" style="position:relative;">'; $final_html = ''; foreach ($layout as $tab_layout) { $nav_html = ''; $is_dropdown = $tab_layout == 'bestof-tabs-as-dropdown' ? true : false; if ($is_dropdown) { $nav_html .= '<select id="geodir_bestof_tab_dd" class="chosen_select" name="geodir_bestof_tab_dd" data-placeholder="' . esc_attr(__('Select Category', 'geodirectory')) . '">'; } else { $nav_html .= '<dl class="geodir-tab-head geodir-bestof-cat-list">'; $nav_html .= '<dt></dt>'; } $term_icon = geodir_get_term_icon(); $cat_count = 0; foreach ($terms as $cat) { $cat_count++; if ($cat_count > $categ_limit) { break; } if ($is_dropdown) { $selected = $cat_count == 1 ? 'selected="selected"' : ''; $nav_html .= '<option ' . $selected . ' value="' . $cat->term_id . '">' . ucwords($cat->name) . '</option>'; } else { if ($cat_count == 1) { $nav_html .= '<dd class="geodir-tab-active">'; } else { $nav_html .= '<dd class="">'; } $term_icon_url = !empty($term_icon) && isset($term_icon[$cat->term_id]) ? $term_icon[$cat->term_id] : ''; $nav_html .= '<a data-termid="' . $cat->term_id . '" href="' . get_term_link($cat, $cat->taxonomy) . '">'; $nav_html .= '<img alt="' . $cat->name . ' icon" class="bestof-cat-icon" src="' . $term_icon_url . '"/>'; $nav_html .= '<span>'; $nav_html .= ucwords($cat->name); $nav_html .= '<small>'; if (isset($cat->review_count)) { $num_reviews = $cat->review_count; if ($num_reviews == 0) { $reviews = __('No Reviews', 'geodirectory'); } elseif ($num_reviews > 1) { $reviews = $num_reviews . __(' Reviews', 'geodirectory'); } else { $reviews = __('1 Review', 'geodirectory'); } $nav_html .= $reviews; } $nav_html .= '</small>'; $nav_html .= '</span>'; $nav_html .= '</a>'; $nav_html .= '</dd>'; } } if ($is_dropdown) { $nav_html .= '</select>'; } else { $nav_html .= '</dl>'; } $final_html .= $nav_html; } if ($terms) { echo $final_html; } echo '</div>'; //term navigation - end //first term listings by default - start $first_term = ''; if ($terms) { $first_term = $terms[0]; $tax_query = array('taxonomy' => $category_taxonomy[0], 'field' => 'id', 'terms' => $first_term->term_id); $query_args['tax_query'] = array($tax_query); } ?> <input type="hidden" id="bestof_widget_post_type" name="bestof_widget_post_type" value="<?php echo $post_type; ?> "> <input type="hidden" id="bestof_widget_post_limit" name="bestof_widget_post_limit" value="<?php echo $post_limit; ?> "> <input type="hidden" id="bestof_widget_taxonomy" name="bestof_widget_taxonomy" value="<?php echo $category_taxonomy[0]; ?> "> <input type="hidden" id="bestof_widget_location_filter" name="bestof_widget_location_filter" value="<?php if ($add_location_filter) { echo 1; } else { echo 0; } ?> "> <input type="hidden" id="bestof_widget_char_count" name="bestof_widget_char_count" value="<?php echo $character_count; ?> "> <div class="geo-bestof-contentwrap geodir-tabs-content" style="position: relative; z-index: 0;"> <p id="geodir-bestof-loading" class="geodir-bestof-loading"><i class="fa fa-cog fa-spin"></i></p> <?php echo '<div id="geodir-bestof-places">'; if ($terms) { $view_all_link = add_query_arg(array('sort_by' => 'rating_count_desc'), get_term_link($first_term, $first_term->taxonomy)); /** * Filter the page link to view all lisitngs. * * @since 1.5.1 * * @param array $view_all_link View all listings page link. * @param array $post_type The Post type. * @param array $first_term The category term object. */ $view_all_link = apply_filters('geodir_bestof_widget_view_all_link', $view_all_link, $post_type, $first_term); echo '<h3 class="bestof-cat-title">' . wp_sprintf(__('Best of %s', 'geodirectory'), $first_term->name) . '<a href="' . esc_url($view_all_link) . '">' . __("View all", 'geodirectory') . '</a></h3>'; } geodir_bestof_places_by_term($query_args); echo "</div>"; ?> </div> <?php //first term listings by default - end ?> <?php echo $after_widget; echo "</div>"; }