/** * @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'); } }
/** * 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); } } }
/** * 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; }
/** * 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; }
/** * 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); } } }
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')); }
/** * 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); } } } }
/** * 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); } } } }
/** * 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; } }
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']); } } }
/** * 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; } }
/** * 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')); } } }
/** * 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; }
/** * 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)); } }