/**
 * @param WP_Query $q
 *
 * @return mixed
 */
function wpml_home_url_parse_query($q)
{
    if (!$q->is_main_query()) {
        return $q;
    }
    global $sitepress_settings;
    $site_url = get_site_url();
    $parts = parse_url($site_url);
    if (!isset($parts['path'])) {
        $parts['path'] = '';
    }
    if (!WPML_Root_Page::is_current_request_root()) {
        return $q;
    } else {
        remove_action('parse_query', 'wpml_home_url_parse_query');
        $request_array = explode('/', $_SERVER["REQUEST_URI"]);
        $sanitized_query = array_pop($request_array);
        $potential_pagination_parameter = array_pop($request_array);
        if (is_numeric($potential_pagination_parameter)) {
            if ($sanitized_query) {
                $sanitized_query .= '&';
            }
            $sanitized_query .= 'page=' . $potential_pagination_parameter;
        }
        $sanitized_query = str_replace('?', '', $sanitized_query);
        $q->parse_query($sanitized_query);
        add_action('parse_query', 'wpml_home_url_parse_query');
        $q->query_vars['page_id'] = $sitepress_settings["urls"]["root_page"];
        $q->query['page_id'] = $sitepress_settings["urls"]["root_page"];
        $q->is_page = 1;
        $q->queried_object = new WP_Post(get_post($sitepress_settings["urls"]["root_page"]));
        $q->queried_object_id = $sitepress_settings["urls"]["root_page"];
        $q->query_vars['error'] = "";
        $q->is_404 = false;
        $q->query['error'] = null;
    }
    return $q;
}
function wptouch_custom_latest_post_filter($query_vars)
{
    if (wptouch_is_showing_mobile_theme_on_mobile_device()) {
        $settings = foundation_get_settings();
        if (foundation_is_theme_using_module('custom-latest-posts') && $settings->latest_posts_page != 'none') {
            $dummy_query = new WP_Query();
            // the query isn't run if we don't pass any query vars
            $dummy_query->parse_query($query_vars);
            if ($dummy_query->is_page && count($query_vars) == 0) {
                // Front page
                $front_option = get_option('show_on_front', false);
                if ($front_option == 'page') {
                    $front_page = get_option('page_on_front');
                    $dummy_query->queried_object_id = $front_page;
                }
            }
            if (isset($dummy_query->queried_object_id) && apply_filters('foundation_is_custom_latest_posts_page', $settings->latest_posts_page == $dummy_query->queried_object_id)) {
                if (isset($query_vars['paged'])) {
                    $paged = $query_vars['paged'];
                } elseif (isset($query_vars['page'])) {
                    $paged = $query_vars['page'];
                } else {
                    $paged = 1;
                }
                $query_vars = array('paged' => $paged, 'posts_per_page' => $settings->posts_per_page);
            }
        }
    }
    return $query_vars;
}
function wptouch_custom_latest_post_filter($query_vars)
{
    if (wptouch_is_showing_mobile_theme_on_mobile_device()) {
        $settings = foundation_get_settings();
        if (foundation_is_theme_using_module('custom-latest-posts') && $settings->latest_posts_page != 'none') {
            $dummy_query = new WP_Query();
            // the query isn't run if we don't pass any query vars
            $dummy_query->parse_query($query_vars);
            if ($dummy_query->is_page && count($query_vars) == 0) {
                // Front page
                $front_option = get_option('show_on_front', false);
                if ($front_option == 'page') {
                    $front_page = get_option('page_on_front');
                    $dummy_query->queried_object_id = $front_page;
                }
            }
            if (isset($dummy_query->queried_object_id) && apply_filters('foundation_is_custom_latest_posts_page', $settings->latest_posts_page == $dummy_query->queried_object_id)) {
                if (isset($query_vars['paged'])) {
                    $paged = $query_vars['paged'];
                } elseif (isset($query_vars['page'])) {
                    $paged = $query_vars['page'];
                } else {
                    $paged = 1;
                }
                $query_vars = array('paged' => $paged, 'posts_per_page' => $settings->posts_per_page);
                // Since we're modifying the query here, we need to prevent the custom landing page redirect from firing for this request (it'll think it's loading the homepage)
                add_filter('wptouch_redirect_target', 'wptouch_return_false');
            }
        }
    }
    return $query_vars;
}
 /**
  * Event date & upcoming filters SHOULD be removed from event list pages (they do their own date filtering)
  *
  * @test
  */
 public function it_should_remove_date_filters_on_event_list()
 {
     set_current_screen('edit-' . Tribe__Events__Main::POSTTYPE);
     $query = new WP_Query();
     $query->parse_query(['post_type' => Tribe__Events__Main::POSTTYPE]);
     if (isset($_GET['page'])) {
         unset($_GET['page']);
     }
     if (isset($_GET['tab'])) {
         unset($_GET['tab']);
     }
     $this->assertTrue(Tribe__Events__Query::should_remove_date_filters($query), 'Date filters should be removed when on the event list page');
 }
/**
 * Verified Voting functions and definitions
 */
function alter_the_query($request)
{
    $dummy_query = new WP_Query();
    // the query isn't run if we don't pass any query vars
    $dummy_query->parse_query($request);
    // this is the actual manipulation; do whatever you need here
    switch ($dummy_query->query_vars['pagename']) {
        case 'blog':
            $request['meta_key'] = 'verified_voting_blog';
            $request['meta_value'] = true;
            break;
        case 'news':
            $request['meta_key'] = 'the_voting_news';
            $request['meta_value'] = true;
            break;
    }
    return $request;
}
Beispiel #6
0
 /**
  * Alternates request
  *
  * @param array $request
  * @return array
  */
 public function alter_request($request)
 {
     if (is_admin()) {
         return $request;
     }
     $mapping = array();
     foreach ($this->get_post_types() as $post_type) {
         $page_id = (int) g1_get_theme_option('post_type_' . $post_type, 'page_for_posts');
         if ($page_id) {
             $mapping[$post_type] = $page_id;
         }
     }
     foreach ($mapping as $post_type => $page_id) {
         // WPML fallback
         if (function_exists('icl_object_id')) {
             $page_id = absint(icl_object_id($page_id, 'page', true));
         }
         if ($page_id) {
             // The query isn't run if we don't pass any query vars
             $query = new WP_Query();
             $query->parse_query($request);
             // Change request from page to post type archive
             if ($query->is_page()) {
                 if (absint($query->get('page_id')) === $page_id || strlen($query->get('pagename')) && absint($query->get_queried_object_id()) === $page_id) {
                     unset($request['page']);
                     unset($request['page_id']);
                     unset($request['pagename']);
                     $request['post_type'] = $post_type;
                 }
             }
         }
     }
     return $request;
 }
 public static function list_saved_layout($storage_key = '')
 {
     global $wpdb;
     self::set_storage_key($storage_key);
     $storage_key = self::get_storage_key();
     $layouts = $wpdb->get_results("SELECT * FROM {$wpdb->options} WHERE ( `option_name` LIKE '{$storage_key}-single%' OR `option_name` LIKE '{$storage_key}-archive%' )");
     $return = array();
     foreach ($layouts as $layout) {
         if (preg_match("/^{$storage_key}-([^-]+)(-([^-]+)|)(-([^-]+)|)\$/", $layout->option_name, $match)) {
             $ids = array();
             if (!empty($match[3]) && !empty($match[5])) {
                 $ids['specificity'] = $match[1] . '-' . $match[3] . '-' . $match[5];
             }
             if ($match[3]) {
                 $ids['item'] = $match[1] . '-' . $match[3];
             }
             $ids['type'] = $match[1];
             $layout_id = !empty($ids['specificity']) ? $ids['specificity'] : ($ids['item'] ? $ids['item'] : $ids['type']);
             $return[$layout_id] = array('layout' => $ids, 'label' => Upfront_EntityResolver::layout_to_name($ids));
             if ($ids['type'] == 'single') {
                 $query = new WP_Query(array('post_type' => $post_type->name, 'post_status' => 'publish'));
                 $query->parse_query();
                 $post = $query->next_post();
                 $return[$layout_id]['latest_post'] = $post->ID;
             }
         }
     }
     return $return;
 }
 public function test_parse_query_s_bool()
 {
     $q = new WP_Query();
     $q->parse_query(array('s' => true));
     $this->assertSame(true, $q->query_vars['s']);
 }
Beispiel #9
0
/**
 * Exclude posts that belong to the categories displayed in slider from the posts listing
 */
function graphene_exclude_slider_categories($request)
{
    global $graphene_settings, $graphene_defaults;
    if ($graphene_settings['slider_type'] != 'categories') {
        return $request;
    }
    if (is_admin()) {
        return $request;
    }
    if ($graphene_settings['slider_exclude_categories'] != $graphene_defaults['slider_exclude_categories']) {
        $dummy_query = new WP_Query();
        $dummy_query->parse_query($request);
        if (get_option('show_on_front') == 'page' && $dummy_query->query_vars['page_id'] == get_option('page_on_front')) {
            return $request;
        }
        if ($graphene_settings['slider_exclude_categories'] == 'everywhere' || $graphene_settings['slider_exclude_categories'] == 'homepage' && $dummy_query->is_home()) {
            $request['category__not_in'] = graphene_object_id($graphene_settings['slider_specific_categories'], 'category');
        }
    }
    return $request;
}
 /**
  * @ticket 33372
  */
 public function test_parse_query_p_object()
 {
     $q = new WP_Query();
     $q->parse_query(array('p' => new stdClass()));
     $this->assertSame('404', $q->query_vars['error']);
 }
 /**
  * @param WP_Query $q
  *
  * @return mixed
  */
 function wpml_home_url_parse_query($q)
 {
     if (!$q->is_main_query()) {
         return $q;
     }
     if (!WPML_Root_Page::is_current_request_root()) {
         return $q;
     } else {
         remove_action('parse_query', array($this, 'wpml_home_url_parse_query'));
         $request_array = explode('/', $_SERVER["REQUEST_URI"]);
         $sanitized_query = array_pop($request_array);
         $potential_pagination_parameter = array_pop($request_array);
         if (is_numeric($potential_pagination_parameter)) {
             if ($sanitized_query) {
                 $sanitized_query .= '&';
             }
             $sanitized_query .= 'page=' . $potential_pagination_parameter;
         }
         $sanitized_query = str_replace('?', '', $sanitized_query);
         $q->parse_query($sanitized_query);
         add_action('parse_query', array($this, 'wpml_home_url_parse_query'));
         $root_id = $this->get_root_page_id();
         $q->query_vars['page_id'] = $root_id;
         $q->query['page_id'] = $root_id;
         $q->is_page = 1;
         $q->queried_object = new WP_Post(get_post($root_id));
         $q->queried_object_id = $root_id;
         $q->query_vars['error'] = "";
         $q->is_404 = false;
         $q->query['error'] = null;
     }
     return $q;
 }
Beispiel #12
0
function alter_the_query($request)
{
    $dummy_query = new WP_Query();
    // the query isn't run if we don't pass any query vars
    $dummy_query->parse_query($request);
    // this is the actual manipulation; do whatever you need here
    if ($dummy_query->is_tag()) {
        $request['post_type'] = array('post', 'product');
    }
    return $request;
}
function wptouch_customizer_modify_homepage_query($query_vars)
{
    $settings = wptouch_get_settings();
    $dummy_query = new WP_Query();
    // the query isn't run if we don't pass any query vars
    $dummy_query->parse_query($query_vars);
    if (count($query_vars) == 0) {
        // Front page
        $query_vars['page_id'] = $settings->homepage_redirect_wp_target;
    }
    return $query_vars;
}
Beispiel #14
0
 /**
  * Fix for events page rules if permalinks are disabled, unfortunatelly not too elegant.
  */
 public function alter_event_page_request($request)
 {
     if (!is_admin() && !get_option('permalink_structure') && isset($request['page_id'])) {
         $is_event_archive = false;
         // WPML & Polylang
         if (function_exists('icl_object_id') && defined('ICL_LANGUAGE_CODE')) {
             if ((int) $request['page_id'] === (int) icl_object_id(Events_Maker()->options['general']['pages']['events']['id'], 'page', true, ICL_LANGUAGE_CODE)) {
                 $is_event_archive = true;
             }
         } elseif ((int) $request['page_id'] === (int) Events_Maker()->options['general']['pages']['events']['id']) {
             $is_event_archive = true;
         }
         // is requested page an event archive page?
         if ($is_event_archive === true) {
             // the query isn't run if we don't pass any query vars
             $query = new WP_Query();
             $query->parse_query($request);
             if ($query->is_page()) {
                 unset($request['page_id']);
                 $request['post_type'] = 'event';
             }
         }
     }
     return $request;
 }
 /**
  * @param WP_Query $q
  *
  * @return mixed
  */
 function wpml_home_url_parse_query($q)
 {
     if (!$q->is_main_query()) {
         return $q;
     }
     if (!WPML_Root_Page::is_current_request_root()) {
         return $q;
     } else {
         remove_action('parse_query', array($this, 'wpml_home_url_parse_query'));
         $request_array = explode('/', $_SERVER['REQUEST_URI']);
         $sanitized_query = array_pop($request_array);
         $potential_pagination_parameter = array_pop($request_array);
         if (is_numeric($potential_pagination_parameter)) {
             if ($sanitized_query) {
                 $sanitized_query .= '&';
             }
             $sanitized_query .= 'page=' . $potential_pagination_parameter;
         }
         $sanitized_query = str_replace('?', '', $sanitized_query);
         $q->parse_query($sanitized_query);
         $root_id = $this->get_root_page_id();
         add_action('parse_query', array($this, 'wpml_home_url_parse_query'));
         if (false !== $root_id) {
             $q = $this->set_page_query_parameters($q, $root_id);
         } else {
             $front_page = get_option('page_on_front');
             if ($front_page) {
                 $q = $this->set_page_query_parameters($q, $front_page);
             }
         }
     }
     return $q;
 }
 /**
  * used by the layered_nav widget and the price filter widget as they access the global ($all_post_ids)
  * is run on the 'request' filter with highest priority to ensure it runs before main filter_catalog_query
  * gathers all product ID's into a global variable for use elsewhere ($all_post_ids)
  *
  * @param array $request - the array representing the current WordPress request eg. post_type => 'product'
  * @return array - unaltered array of the intial request
  * @since 0.9.9
  **/
 function jigoshop_get_product_ids_in_view($request)
 {
     global $jigoshop_all_post_ids_in_view;
     $jigoshop_all_post_ids_in_view = array();
     $this_query = new WP_Query();
     $this_query->parse_query($request);
     if ($this_query->is_post_type_archive('product') || $this_query->is_tax('product_cat') || $this_query->is_tax('product_tag')) {
         $args = array_merge($this_query->query, array('page_id' => '', 'fields' => 'ids', 'posts_per_page' => -1, 'post_type' => 'product', 'post_status' => 'publish', 'meta_query' => self::meta_query($this_query)));
         $custom_query = get_posts($args);
         $jigoshop_all_post_ids_in_view = array_merge($jigoshop_all_post_ids_in_view, $custom_query);
     }
     $jigoshop_all_post_ids_in_view[] = 0;
     return $request;
 }
 public static function ids_from_url($url)
 {
     global $wp;
     $wp = new WP();
     //We need to cheat telling WP we are not in admin area to parse the URL properly
     $current_uri = $_SERVER['REQUEST_URI'];
     $self = $_SERVER['PHP_SELF'];
     $get = $_GET;
     global $current_screen;
     if ($current_screen) {
         $stored_current_screen = $current_screen->id;
     } else {
         require_once ABSPATH . '/wp-admin/includes/screen.php';
         $current_screen = WP_Screen::get('front');
     }
     $_SERVER['REQUEST_URI'] = $url;
     $_SERVER['PHP_SELF'] = 'foo';
     $urlParts = explode('?', $url);
     if (count($urlParts) > 1) {
         parse_str($urlParts[1], $_GET);
     }
     $wp->parse_request();
     $query = new WP_Query($wp->query_vars);
     $query->parse_query();
     //Set the global post in case that no-one is set and we have a single query
     global $post;
     if (!$post && $query->have_posts() && $query->is_singular()) {
         $post = $query->next_post();
         setup_postdata($post);
     }
     //Make the query accessible to add it to the response
     global $upfront_ajax_query;
     $upfront_ajax_query = clone $query;
     // Intercept /edit/(post|page)/id
     $editor = Upfront_ContentEditor_VirtualPage::serve();
     if ($editor->parse_page()) {
         global $wp_query;
         $query = $wp_query;
         $post = $wp_query->next_post();
         setup_postdata($post);
     }
     $_SERVER['REQUEST_URI'] = $current_uri;
     $_SERVER['PHP_SELF'] = $self;
     $_GET = $get;
     if (isset($stored_current_screen)) {
         //$current_screen = $current_screen::get($stored_current_screen);
         $current_screen = call_user_func(array($current_screen, 'get', $stored_current_screen));
     }
     $cascade = self::get_entity_ids(self::get_entity_cascade($query));
     return $cascade;
 }
 /**
  * Converts query_vars into a WP_Tax_Query which has a more standardized form
  * to work with.
  *
  * Technically WP_Query::parse_tax_query is marked as protected.  Hopefully
  * a real factory function is created in core before it actually gets set as such.
  *
  * @param type $query_vars
  * @return WP_Tax_Query
  */
 protected function parseTaxQuery($query_vars)
 {
     $wp_query = new WP_Query();
     $wp_query->parse_query($query_vars);
     return $wp_query->tax_query;
 }
 /**
  * Fix for custom loop pagination in custom taxonomy archives.
  *
  * @param Request $request Page request
  * @return Request
  */
 public function paginationFix($request)
 {
     if (!thb_array_contains($this->_type, array('post', 'page')) && $this->isPublicContent()) {
         $dummy_query = new WP_Query();
         $dummy_query->parse_query($request);
         $thb_works_taxonomies = $this->getTaxonomies();
         foreach ($thb_works_taxonomies as $tax) {
             if (isset($request[$tax->getType()])) {
                 if ($dummy_query->is_front_page() || $dummy_query->is_archive()) {
                     $posts_per_page = thb_get_option($this->getType() . '_per_page');
                     if (!empty($posts_per_page)) {
                         $request["posts_per_page"] = $posts_per_page;
                     }
                 }
             }
         }
     }
     return $request;
 }