/**
 * @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;
}
/**
 * @param WP_Query $query
 */
function first_post_full_length_enable($query)
{
    if (!is_admin() && $query->is_main_query() && !$query->is_feed()) {
        // set is_feed to true, so that the post content will be used in full length
        $query->is_feed = true;
        // add a filter that sets is_feed to false again, as soon as the content from the first post was set
        add_filter('the_post', 'first_post_full_length_disable');
    }
}
 /**
  * Set any query flags
  *
  * @param WP_Query $query
  *
  * @return void
  **/
 public static function parse_query($query)
 {
     // set paged
     if ($query->is_main_query() && isset($_GET['tribe_paged'])) {
         $query->set('paged', $_REQUEST['tribe_paged']);
     }
     // Add tribe events post type to tag queries
     if ($query->is_tag && (array) $query->get('post_type') != array(TribeEvents::POSTTYPE)) {
         $types = $query->get('post_type');
         if (empty($types)) {
             $types = array('post');
         }
         if (is_array($types)) {
             $types[] = TribeEvents::POSTTYPE;
         } else {
             if (is_string($types)) {
                 $types = array($types, TribeEvents::POSTTYPE);
             } else {
                 if ($types != 'any') {
                     $types = array('post', TribeEvents::POSTTYPE);
                 }
             }
         }
         $query->set('post_type', $types);
     }
     $types = !empty($query->query_vars['post_type']) ? (array) $query->query_vars['post_type'] : array();
     // check if any possiblity of this being an event query
     $query->tribe_is_event = in_array(TribeEvents::POSTTYPE, $types) && count($types) < 2 ? true : false;
     $query->tribe_is_multi_posttype = in_array(TribeEvents::POSTTYPE, $types) && count($types) >= 2 || in_array('any', $types) ? true : false;
     if ('default' === $query->get('eventDisplay')) {
         $query->set('eventDisplay', TribeEvents::instance()->default_view());
     }
     // check if any possiblity of this being an event category
     $query->tribe_is_event_category = !empty($query->query_vars[TribeEvents::TAXONOMY]) ? true : false;
     $query->tribe_is_event_venue = in_array(TribeEvents::VENUE_POST_TYPE, $types) ? true : false;
     $query->tribe_is_event_organizer = in_array(TribeEvents::ORGANIZER_POST_TYPE, $types) ? true : false;
     $query->tribe_is_event_query = $query->tribe_is_event || $query->tribe_is_event_category || $query->tribe_is_event_venue || $query->tribe_is_event_organizer ? true : false;
     // move along, this is not the query you are looking for
     // is the query pulling posts from the past
     if ($query->is_main_query() && !empty($_REQUEST['tribe_event_display']) && $_REQUEST['tribe_event_display'] == 'past') {
         $query->tribe_is_past = true;
     } elseif (tribe_is_ajax_view_request() && $query->get('eventDisplay') == 'past') {
         $query->tribe_is_past = true;
     } else {
         $query->tribe_is_past = isset($query->tribe_is_past) ? $query->tribe_is_past : false;
     }
     // never allow 404 on month view
     if ($query->is_main_query() && $query->get('eventDisplay') == 'month' && !$query->is_tax && !$query->tribe_is_event_category) {
         $query->is_post_type_archive = true;
         $query->queried_object = get_post_type_object(TribeEvents::POSTTYPE);
         $query->queried_object_id = 0;
     }
     // check if is_event_query === true and hook filter
     if ($query->tribe_is_event_query) {
         // fixing is_home param
         $query->is_home = !empty($query->query_vars['is_home']) ? $query->query_vars['is_home'] : false;
         do_action('tribe_events_parse_query', $query);
     }
 }
 /**
  * Media List:
  * Do the same as ^^ but for the list view.
  *
  * @param WP_Query $query
  *
  * @return array
  */
 public function media_list_table_query($query)
 {
     if (is_admin() && $query->is_main_query() && 'upload' === get_current_screen()->id) {
         $meta_query = $this->add_status_check_to_meta_query($query->get('meta_query'));
         $query->set('meta_query', $meta_query);
     }
 }
 /**
  * @param WP_Query $wp_query
  *
  * @return WP_Query
  */
 public function action_pre_get_posts(WP_Query $wp_query)
 {
     if (is_admin()) {
         return;
     }
     if (!empty($wp_query->query_vars['suppress_filters'])) {
         return;
     }
     # Further reading:
     # https://core.trac.wordpress.org/ticket/14589
     # https://core.trac.wordpress.org/ticket/19471
     if (!$wp_query->is_main_query()) {
         return;
     }
     if ($wp_query->is_tag()) {
         $taxomony = 'post_tag';
     } else {
         if ($wp_query->is_category()) {
             $taxomony = 'category';
         } else {
             return;
         }
     }
     $post_type = $wp_query->get('post_type');
     if (empty($post_type)) {
         $post_type = $this->post_type_support_taxomony($taxomony);
     }
     $wp_query->set('post_type', $post_type);
     return $wp_query;
 }
 /**
  * Conditionally add a hook on posts_results if this is the main query, a preview, and singular.
  *
  * @since 4.4.0
  *
  * @param WP_Query $query
  *
  * @return WP_Query
  */
 public function maybe_display_post($query)
 {
     if ($query->is_main_query() && $query->is_preview() && $query->is_singular()) {
         add_filter('posts_results', array($this, 'set_post_to_publish'), 10, 2);
     }
     return $query;
 }
/**
 * Filter all the shop orders to remove child orders
 *
 * @param WP_Query $query
 */
function dokan_admin_shop_order_remove_parents($query)
{
    if ($query->is_main_query() && $query->query['post_type'] == 'shop_order') {
        $query->set('orderby', 'ID');
        $query->set('order', 'DESC');
    }
}
Beispiel #8
0
/**
 * Integrate EP into proper queries
 * 
 * @param  WP_Query $query
 * @since  2.1
 */
function ep_admin_integrate($query)
{
    // Lets make sure this doesn't interfere with the CLI
    if (defined('WP_CLI') && WP_CLI) {
        return;
    }
    if (!$query->is_main_query()) {
        return;
    }
    /**
     * We limit to these post types to not conflict with other modules like WooCommerce
     *
     * @since  2.1
     * @var array
     */
    $post_types = array('post' => 'post', 'page' => 'page');
    $supported_post_types = apply_filters('ep_admin_supported_post_types', $post_types);
    $post_type = $query->get('post_type');
    if (empty($post_type)) {
        $post_type = 'post';
    }
    if (is_array($post_type)) {
        foreach ($post_type as $pt) {
            if (empty($supported_post_types[$pt])) {
                return;
            }
        }
        $query->set('ep_integrate', true);
    } else {
        if (!empty($supported_post_types[$post_type])) {
            $query->set('ep_integrate', true);
        }
    }
}
Beispiel #9
0
/**
 * Set geodir page variable in WP_Query instance.
 *
 * @since 1.0.0
 * @package GeoDirectory
 *
 * @param WP_Query $query The WP_Query instance.
 * @return WP_Query
 */
function geodir_modified_query($query)
{
    if ($query->is_main_query() && (geodir_is_page('add-listing') && isset($_REQUEST['pid']) && $_REQUEST['pid'] != '' || geodir_is_page('listing') || geodir_is_page('author') || geodir_is_page('search') || geodir_is_page('detail'))) {
        $query->set('is_geodir_loop', true);
    }
    return $query;
}
Beispiel #10
0
/**
 * reversing the order of posts
 *
 * @wp-hook pre_get_posts
 * @param   WP_Query $query
 * @return  WP_Query $query
 */
function cora_filter_pre_get_posts_reverse_order(WP_Query $query)
{
    if ($query->is_main_query()) {
        $query->set('order', 'ASC');
        $query->set('orderby', 'ID');
    }
    return $query;
}
 /**
  * This filter is needed to display correctly the posts with the '--- MORE ---' separator
  * in archives.
  * Without it, the post content is truncated at the beginning of <!--more-->, thus keeping
  * only the first language.
  * *
  * 'the_posts' filter is used by @see get_posts(), which is commonly used in all sorts of places,
  * including, for instance, @see wp_get_associated_nav_menu_items while deleting a post.
  * So, to minimize potential side effects, we limit the scope to main queries, or
  * when the 'wpglobus_force_filter__the_posts' is set
  * (@see WPGlobus_QA::_test_get_posts for example).
  *
  * @param array    $posts
  * @param WP_Query $query
  *
  * @return array
  * @since 1.0.14
  */
 public static function filter__the_posts($posts, &$query)
 {
     if ($query->is_main_query() || $query->get('wpglobus_force_filter__the_posts')) {
         foreach ($posts as $post) {
             WPGlobus_Core::translate_wp_post($post, WPGlobus::Config()->language, WPGlobus::RETURN_IN_DEFAULT_LANGUAGE);
         }
     }
     return $posts;
 }
Beispiel #12
0
/**
 * Remove the featured category on the home page main query
 * @param WP_Query $query
 * @since 1.2
 */
function pmc_eve_query_category($query)
{
    if ($query->is_home() && $query->is_main_query()) {
        $cat = get_category_by_slug('featured');
        if ($cat) {
            $query->set('cat', '-' . $cat->term_id);
        }
    }
}
Beispiel #13
0
 public function handle(\WP_Query $query)
 {
     if (is_admin() || !$query->is_main_query()) {
         return;
     }
     if ($query->is_home()) {
         //$query->set('posts_per_page', '10');
     }
     //$query->set( 'posts_per_page', '2' );
 }
 function charitable_add_user_dashboard_menu(WP_Query $query)
 {
     if (!$query->is_main_query()) {
         return;
     }
     if (!charitable_get_user_dashboard()->in_nav()) {
         return;
     }
     charitable_get_user_dashboard()->nav(array('container_class' => 'user-dashboard-menu'));
 }
Beispiel #15
0
/**
 * Prevents executing WP_Query's default queries on GlotPress requests.
 *
 * The following code effectively avoid running the main WP_Query queries by setting values before
 * they are run.
 *
 * @link http://wordpress.stackexchange.com/a/145386/40969 Original source.
 *
 * @since 1.0.0
 *
 * @param array    $request  The complete SQL query.
 * @param WP_Query $wp_query The WP_Query instance (passed by reference).
 * @return string|false False if GlotPress request, SQL query if not.
 */
function gp_abort_main_wp_query($sql, WP_Query $wp_query)
{
    if ($wp_query->is_main_query()) {
        // Prevent SELECT FOUND_ROWS() query.
        $wp_query->query_vars['no_found_rows'] = true;
        // Prevent post term and meta cache update queries.
        $wp_query->query_vars['cache_results'] = false;
        return false;
    }
    return $sql;
}
 /**
  * フックで表示するレコードに変更があれば変更
  *
  * @param WP_Query $wp_query
  */
 public function pre_get_posts($wp_query)
 {
     if ($wp_query->is_main_query()) {
         $post_type = $wp_query->get('post_type');
         $args = apply_filters('mwform_get_inquiry_data_args-' . $post_type, array());
         if (!empty($args) && is_array($args)) {
             foreach ($args as $key => $value) {
                 $wp_query->set($key, $value);
             }
         }
     }
 }
Beispiel #17
0
/**
 * For some reason, wp_query does not have the post_type set by default on a frontend tax query for custom post types.
 *
 * @since 1.3.0
 * @access private
 *
 * @param WP_Query $wp_query
 */
function jc_event_category_frontend_fix($wp_query)
{
    if ($wp_query->is_main_query()) {
        if ($wp_query->is_tax) {
            $post_type = get_query_var('post_type');
            if (!$post_type) {
                $post_type = array('post', 'event');
                $wp_query->set('post_type', $post_type);
            }
        }
    }
}
Beispiel #18
0
 /**
  * In case the store is set as front page, fool WordPress into thinking
  * this is a wpsc-product post type archive before the database is queried
  * for posts.
  *
  * Action hook: 'pre_get_post'
  *
  * @since  0.1
  * @access private
  *
  * @param  WP_Query $q query object
  */
 public function _action_prepare_front_page($q)
 {
     if (!$q->is_main_query()) {
         return;
     }
     if ($this->is_store_front_page()) {
         $q->set('post_type', 'wpsc-product');
         $q->wpsc_is_store_front_page = true;
         $q->is_post_type_archive = true;
         $q->is_archive = true;
     }
 }
Beispiel #19
0
function tst_main_query_mods(WP_Query $query)
{
    // exclude account_deleted's tasks:
    if (!is_admin() && $query->is_main_query()) {
        if (is_tag() && !$query->get('post_type')) {
            $query->set('post_type', 'tasks');
        }
        $query->set('author', '-' . ACCOUNT_DELETED_ID);
    }
    if ($query->is_main_query() && $query->is_archive() || $query->get('post_type') == 'tasks') {
        if (!empty($_GET['st'])) {
            $query->set('post_status', $_GET['st'] == '-' ? array('publish', 'in_work', 'closed') : $_GET['st']);
        }
        if (!empty($_GET['dl'])) {
            $metas = (array) $query->get('meta_query');
            switch ($_GET['dl']) {
                case '10':
                    $metas[] = array('key' => 'deadline', 'value' => array(date('Ymd'), date('Ymd', strtotime('+10 days'))), 'compare' => 'BETWEEN', 'type' => 'DATE');
                    break;
                case 'lm':
                    $metas[] = array('key' => 'deadline', 'value' => array(date('Ymd'), date('Ymd', strtotime('+1 month'))), 'compare' => 'BETWEEN', 'type' => 'DATE');
                    break;
                case 'mm':
                    $metas[] = array('key' => 'deadline', 'value' => array(date('Ymd', strtotime('+1 month')), date('Ymd', strtotime('+6 months'))), 'compare' => 'BETWEEN', 'type' => 'DATE');
                    break;
            }
            $query->set('meta_query', $metas);
        }
        if (!empty($_GET['rw'])) {
            $metas = (array) $query->get('meta_query');
            $metas[] = array('key' => 'reward', 'value' => $_GET['rw'], 'compare' => '=');
            $query->set('meta_query', $metas);
        }
        if (!empty($_GET['tt'])) {
            $query->set('tag_slug__in', (array) $_GET['tt']);
        }
    }
}
Beispiel #20
0
 /**
  * In case the store is set as front page, fool WordPress into thinking
  * this is a wpsc-product post type archive before the database is queried
  * for posts.
  *
  * Action hook: 'pre_get_post'
  *
  * @since  0.1
  * @access private
  *
  * @param  WP_Query $q query object
  */
 public function _action_prepare_front_page($q)
 {
     if (!$q->is_main_query()) {
         return;
     }
     if ($q->is_singular() && 'wpsc-product' == $q->get('post_type')) {
         add_filter('posts_where', array($this, '_prepare_single_product'), 10, 2);
     }
     if ($this->is_store_front_page()) {
         $q->set('post_type', 'wpsc-product');
         $q->wpsc_is_store_front_page = true;
         $q->is_post_type_archive = true;
         $q->is_archive = true;
     }
 }
Beispiel #21
0
/**
 * Pre get posts for customizing the post type
 *
 * @param 					WP_Query $query
 * @return 					void
 */
function snihub_pre_get_posts($query)
{
    if ($query->is_home() && $query->is_main_query()) {
        $query->set('post_type', 'snippet');
        $query->set('meta_query', array(array('key' => 'no_index', 'compare' => 'NOT EXISTS')));
        if (get_query_var('hot_snippets', false)) {
            $query->set('order', 'DESC');
            $query->set('orderby', 'meta_value_num');
            $query->set('meta_key', 'likes');
        }
        if (get_query_var('snippets_by', false)) {
            $query->set('author', get_query_var('snippets_by', '0'));
        }
    }
}
Beispiel #22
0
/**
 * Display all existing portfolio posts on the page (without pagination)
 * Because in this theme we use the https://mixitup.kunkalabs.com/ plugin to display portfolio posts
 * If your theme displays portfolio posts in a different way, feel free to change or remove this function
 * @internal
 * @param WP_Query $query
 */
function _fw_ext_portfolio_theme_action_set_posts_per_page($query)
{
    if (!$query->is_main_query()) {
        return;
    }
    /**
     * @var FW_Extension_Portfolio $portfolio
     */
    $portfolio = fw()->extensions->get('portfolio');
    $is_portfolio_taxonomy = $query->is_tax($portfolio->get_taxonomy_name());
    $is_portfolio_archive = $query->is_archive() && isset($query->query['post_type']) && $query->query['post_type'] == $portfolio->get_post_type_name();
    if ($is_portfolio_taxonomy || $is_portfolio_archive) {
        $query->set('posts_per_page', -1);
    }
}
 /**
  * Inspect and possibly adapt the main query in order to force the main events page to the
  * front of the house.
  *
  * @param $query
  * @return WP_Query
  */
 public function parse_query(WP_Query $query)
 {
     // Is this the main query / is it trying to find our front events page? If not, don't interfere
     $events_on_front = self::FAKE_POST_ID === (int) $query->get('page_id');
     if (!$events_on_front || !$query->is_main_query()) {
         return $query;
     }
     // We don't need this to run again after this point
     remove_action('parse_query', array($this, 'parse_query'), 25);
     // Let's set the relevant flags in order to cause the main events page to show
     $query->set('page_id', 0);
     $query->set('post_type', Tribe__Events__Main::POSTTYPE);
     $query->set('eventDisplay', 'default');
     $query->set('eventrocket_frontpage', true);
     // Some extra tricks required to help avoid problems when the default view is list view
     $query->is_page = false;
     $query->is_singular = false;
     return $query;
 }
 /**
  * Action pre_get_posts
  *
  * Sort speaking gigs by the appropriate columns.
  *
  * @since 3.1.0
  *
  * @param \WP_Query $query The query object.
  *
  * @return void
  */
 public function action_pre_get_posts($query)
 {
     /**
      * We only want our code to run in the main WP query
      * AND if an orderby query variable is designated.
      */
     if ($query->is_main_query() && ($orderby = $query->get('orderby'))) {
         switch ($orderby) {
             case 'location':
                 $query->set('meta_key', '_conference_location');
                 break;
             case 'conference':
                 $query->set('meta_key', '_conference_name');
                 break;
             case 'conference_date':
                 $query->set('meta_key', '_presentation_date');
                 break;
         }
         $query->set('orderby', 'meta_value');
     }
 }
 public function sort_list(WP_Query $query)
 {
     if (!mpp_admin_is_gallery_list()) {
         return;
     }
     //check if the post type
     if (!$query->is_main_query() || $query->get('post_type') != mpp_get_gallery_post_type()) {
         return;
     }
     //if we are here, we may need to sort
     $orderby = isset($_REQUEST['orderby']) ? $_REQUEST['orderby'] : '';
     $sort_order = isset($_REQUEST['order']) ? $_REQUEST['order'] : '';
     if (!$orderby || !$sort_order) {
         return;
     }
     if ($orderby == 'user_id') {
         $query->set('orderby', 'author');
     } elseif ($orderby == 'media_count') {
         $query->set('meta_key', '_mpp_media_count');
         $query->set('orderby', 'meta_value_num');
     }
     $query->set('order', $sort_order);
 }
 /**
  *    pre_get_posts
  *
  * @access 	public
  * @param 	\WP_Query $WP_Query
  * @return 	\WP_Query
  */
 public function pre_get_posts(WP_Query $WP_Query)
 {
     //EEH_Debug_Tools::printr( $WP_Query, '$WP_Query  <br /><span style="font-size:10px;font-weight:normal;">' . __FILE__ . '<br />line no: ' . __LINE__ . '</span>', 'auto' );
     if (!$WP_Query->is_main_query() && !$WP_Query->is_archive()) {
         return $WP_Query;
     }
     //		$WP_Query->set( 'post_type', array( $this->CPT['post_type'] ));
     //		$WP_Query->set( 'fields', 'ids' );
     return $WP_Query;
 }
Beispiel #27
0
 /**
  * Explicitly set that this is_search, as without a 's'
  * query var it may be interpreted as one type of archive
  * or another.
  *
  * @param WP_Query $wp_query A WP_Query object (passed by ref)
  * @return null
  * @author Simon Wheatley
  **/
 function action_parse_query(WP_Query $wp_query)
 {
     if (!$wp_query->is_main_query()) {
         return;
     }
     if (isset($wp_query->query['facetious']) && !empty($wp_query->query['facetious'])) {
         $wp_query->is_search = true;
     }
 }
 /**
  * limit filter for admin queries
  *
  * @param          string limits clause
  * @param WP_Query $query
  *
  * @return string modified limits clause
  */
 public static function events_search_limits($limits, $query)
 {
     if (!$query->is_main_query() || $query->get('post_type') != Tribe__Events__Main::POSTTYPE) {
         return $limits;
     }
     global $current_screen;
     $paged = (int) $query->get('paged');
     if (empty($paged)) {
         $paged = 1;
     }
     if (is_admin()) {
         $option = str_replace('-', '_', "{$current_screen->id}_per_page");
         $per_page = get_user_option($option);
         $per_page = $per_page ? (int) $per_page : 20;
         // 20 is default in backend
     } else {
         $per_page = (int) tribe_get_option('postsPerPage', 10);
     }
     $page_start = ($paged - 1) * $per_page;
     $limits = 'LIMIT ' . $page_start . ', ' . $per_page;
     return $limits;
 }
 /**
  * Exclude featured posts from the blog query when the blog is the front-page,
  * and user has not checked the "Display tag content in all listings" checkbox.
  *
  * Filter the home page posts, and remove any featured post ID's from it.
  * Hooked onto the 'pre_get_posts' action, this changes the parameters of the
  * query before it gets any posts.
  *
  * @uses Featured_Content::get_featured_post_ids();
  * @uses Featured_Content::get_setting();
  * @param WP_Query $query
  * @return WP_Query Possibly modified WP_Query
  */
 public static function pre_get_posts($query)
 {
     // Bail if not home or not main query.
     if (!$query->is_home() || !$query->is_main_query()) {
         return;
     }
     // Bail if the blog page is not the front page.
     if ('posts' !== get_option('show_on_front')) {
         return;
     }
     $featured = self::get_featured_post_ids();
     // Bail if no featured posts.
     if (!$featured) {
         return;
     }
     $settings = self::get_setting();
     // Bail if the user wants featured posts always displayed.
     if (true == $settings['show-all']) {
         return;
     }
     // We need to respect post ids already in the blacklist.
     $post__not_in = $query->get('post__not_in');
     if (!empty($post__not_in)) {
         $featured = array_merge((array) $post__not_in, $featured);
         $featured = array_unique($featured);
     }
     $query->set('post__not_in', $featured);
 }
 /**
  * Add the attachment query var to the $query object.
  * This is used as a fallback for when pretty permalinks
  * are not enabled.
  *
  * @param WP_Query $query The WordPress main query
  *
  * @since 3.2.0
  * @return void
  */
 public function attachment_query_var($query)
 {
     if ($query->is_main_query() && isset($_GET['wpas-attachment'])) {
         $query->set('wpas-attachment', filter_input(INPUT_GET, 'wpas-attachment', FILTER_SANITIZE_NUMBER_INT));
     }
 }