Function Reference: gdsc_listing_loop_filter

Summary

Adds the filetrs and gets the query.

Global Values

$wp_query
(object) (required) WordPress Query object.

Default: None
$geodir_post_type
(string) (required) Post type.

Default: None
$table
(string) (required) Listing table name.

Default: None
$plugin_prefix
(string) (required) Geodirectory plugin table prefix.

Default: None
$term
(string) (required) Term object.

Default: None

Parameters

$query
(string) (required) Database query.

Default: None

Return Values

(string)
  • Query.

Change Log

Since: 1.0.0

Todo

$wp_query declared twice – fix it.

Source File

gdsc_listing_loop_filter() is located in geodirectory-functions/shortcode_functions.php [Line: 187]

Source Code

function gdsc_listing_loop_filter($query)
{
    global $wp_query, $geodir_post_type, $table, $plugin_prefix, $term;

    $geodir_post_type = geodir_get_current_posttype();

    if (isset($wp_query->tax_query->queries) && $wp_query->tax_query->queries) {
        $taxonomies = wp_list_pluck($wp_query->tax_query->queries, 'taxonomy');

        if (isset($wp_query->query[$taxonomies[0]])) {
            $request_term = explode("/", $wp_query->query[$taxonomies[0]]);
            $request_term = end($request_term);
            if (!term_exists($request_term)) {
                $args = array('number' => '1',);
                $terms_arr = get_terms($taxonomies[0], $args);
                foreach ($terms_arr as $location_term) {
                    $term_arr = $location_term;
                    $term_arr->name = geodir_ucwords(str_replace('-', ' ', $request_term));
                }
                $wp_query->queried_object_id = 1;
                $wp_query->queried_object = $term_arr;
            }
        }

    }
    if (isset($query->query_vars['is_geodir_loop']) && $query->query_vars['is_geodir_loop']) {

        $table = $plugin_prefix . $geodir_post_type . '_detail';

        add_filter('posts_fields', 'geodir_posts_fields', 1);
        add_filter('posts_join', 'geodir_posts_join', 1);
        geodir_post_where();
        if (!is_admin()) {
            add_filter('posts_orderby', 'geodir_posts_orderby', 1);
        }

        // advanced filter for popular post view widget
        global $wp_query;
        if (!is_admin()) {
            if (!empty($wp_query->query['with_pics_only'])) {
                add_filter('posts_join', 'geodir_filter_widget_join', 1000);
            }
            add_filter('posts_where', 'geodir_filter_widget_where', 1000);
        }

    }

    return $query;
}