/**
 * 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');
    }
}
示例#2
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);
        }
    }
}
 /**
  * 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);
     }
 }
示例#4
0
文件: post.php 项目: Chrico/cora-2014
/**
 * 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;
}
示例#5
0
 /**
  * pre_get_posts callback
  *
  * @since  1.0.0
  * @param  \WP_Query $q
  * @return void
  */
 public function cq_pre_get_posts(\WP_Query $q)
 {
     // If posts_per_page is -1, then there's no limit set,
     // but we do need a limit to be able to keep the order of UNION sub-queries:
     // @see http://stackoverflow.com/a/7587423/2078474
     if ($q->get('posts_per_page') && '-1' == $q->get('posts_per_page')) {
         $q->set('posts_per_page', 999999);
     }
     // Remove SQL_CALC_FOUND_ROWS from the SQL query:
     $q->set('no_found_rows', 1);
 }
 /**
  * Filter query by active language in admin.
  *
  * @param WP_Query $query
  *
  * @return mixed
  */
 public function filter_query_by_active_language($query)
 {
     global $pagenow;
     if ('nav-menus.php' === $pagenow and $query->query['post_type'] != 'nav_menu_item') {
         $active_lang = FW_Request::GET('fw_translate_to', $this->get_parent()->get_admin_active_language());
         $query->set('meta_key', 'translation_lang');
         $query->set('meta_value', $active_lang);
         $query->set('meta_compare', '=');
     }
     return $query;
 }
示例#7
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'));
        }
    }
}
示例#8
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;
}
 /**
  * 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);
     }
 }
示例#10
0
 /**
  * Limits posts that users see to their own
  *
  * @param WP_Query $query The query object
  * @return WP_Query
  */
 public function limitPostsToUser($query)
 {
     if ($query->is_admin) {
         global $user_ID;
         $query->set('author', $user_ID);
     }
     return $query;
 }
示例#11
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);
        }
    }
}
示例#12
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);
            }
        }
    }
}
 /**
  * フックで表示するレコードに変更があれば変更
  *
  * @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);
             }
         }
     }
 }
 /**
  * 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');
     }
 }
/**
 * filter on a particular group
 *
 * @param WP_Query $query
 * @param int $id
 * @return WP_Query
 */
function queasy_question_filter_query_by_group(WP_Query $query, $id)
{
    $meta = array();
    if (!empty($id)) {
        $meta[] = array(array('key' => 'queasy_question_group', 'value' => $id, 'compare' => '='));
    }
    if (count($meta)) {
        $meta['relation'] = 'AND';
        $query->set('meta_query', $meta);
    }
    return $query;
}
示例#16
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;
     }
 }
示例#17
0
 /**
  * @since 1.15
  * @param WP_Query $query
  */
 public function filter_pre_get_posts_by_gravityview_form_id(&$query)
 {
     global $pagenow;
     if (!is_admin()) {
         return;
     }
     if ('edit.php' !== $pagenow || !rgget('gravityview_form_id') || !isset($query->query_vars['post_type'])) {
         return;
     }
     if ($query->query_vars['post_type'] == 'gravityview') {
         $query->set('meta_query', array(array('key' => '_gravityview_form_id', 'value' => rgget('gravityview_form_id'))));
     }
 }
 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);
 }
示例#19
0
 /**
  * Fires after the query variable object is created, but before the actual query is run.
  *
  * @since 2.0.0
  *
  * @param WP_Query $query The WP_Query instance (passed by reference).
  */
 function pre_get_posts($query)
 {
     $liking = false;
     $liking_user = $query->get('liking_user');
     if (is_int($liking_user) && $liking_user >= 0) {
         $liking_type = $query->get('liking_type');
         if (empty($liking_type)) {
             $query->set('liking_type', 'like');
         }
         $liking = true;
     }
     $orderby = $query->get('orderby');
     if (strpos($orderby, 'like_count') !== false) {
         $meta_query = array_filter((array) $query->get('meta_query'));
         $query->set('meta_query', array_merge($meta_query, array('relation' => 'OR', array('key' => 'dp_like_count', 'compare' => 'NOT EXISTS'), array('key' => 'dp_like_count', 'compare' => 'EXISTS'))));
         $query->set('orderby', str_replace('like_count', 'meta_value_num', $orderby));
         $query->set('meta_key', '');
         //add_filter( 'posts_join', array( $this, 'posts_join' ), 10, 2 );
         //add_filter( 'posts_groupby', array( $this, 'posts_groupby' ), 10, 2 );
         //add_filter( 'posts_orderby', array( $this, 'posts_orderby' ), 10, 2 );
     } else {
         //remove_filter( 'posts_orderby', array( $this, 'posts_orderby' ) );
     }
     //		if ( $query ) {
     //			add_filter( 'posts_join', array( $this, 'posts_join' ), 10, 2 );
     //			add_filter( 'posts_where', array( $this, 'posts_where' ), 10, 2 );
     //			add_filter( 'posts_orderby', array( $this, 'posts_orderby' ), 10, 2 );
     //
     //		} else {
     //			remove_filter( 'posts_join', array( $this, 'posts_join' ) );
     //			remove_filter( 'posts_where', array( $this, 'posts_where' ) );
     //			remove_filter( 'posts_orderby', array( $this, 'posts_orderby' ), 10, 2 );
     //
     //
     //		}
 }
示例#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;
     }
 }
示例#21
0
文件: hooks.php 项目: halkibsi/Unyson
/**
 * 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);
    }
}
示例#22
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']);
        }
    }
}
 /**
  * Filter WP Admin users list table to include users of the specified type.
  *
  * @param WP_Query $query
  *
  * @since 2.7.0
  */
 public function users_table_filter_by_type($query)
 {
     global $pagenow;
     if (is_admin() && 'users.php' === $pagenow && !empty($_REQUEST['bp-member-type'])) {
         $type_slug = sanitize_text_field($_REQUEST['bp-member-type']);
         // Check that the type is registered.
         if (null == bp_get_member_type_object($type_slug)) {
             return;
         }
         // Get the list of users that are assigned to this member type.
         $type = bp_get_term_by('slug', $type_slug, bp_get_member_type_tax_name());
         if (empty($type->term_id)) {
             return;
         }
         $user_ids = bp_get_objects_in_term($type->term_id, bp_get_member_type_tax_name());
         if ($user_ids && !is_wp_error($user_ids)) {
             $query->set('include', (array) $user_ids);
         }
     }
 }
 /**
  *	_set_paging
  *
  * @access public
  * @param WP_Query $WP_Query
  * @return void
  */
 public function _set_paging($WP_Query)
 {
     if ($WP_Query->is_main_query() && apply_filters('FHEE__EE_CPT_Strategy___set_paging', TRUE)) {
         $page = get_query_var('page') ? get_query_var('page') : NULL;
         $paged = get_query_var('paged') ? get_query_var('paged') : $page;
         $WP_Query->set('paged', $paged);
     }
 }
																
			<?php 
wp_reset_query();
?>

			</div>

			<div class="pane popular-ads-grid-holder">

				<div class="popular-ads-grid">

					<?php 
global $paged, $wp_query, $wp;
$args = wp_parse_args($wp->matched_query);
if (!empty($args['paged']) && 0 == $paged) {
    $wp_query->set('paged', $args['paged']);
    $paged = $args['paged'];
}
$cat_id = get_cat_ID(single_cat_title('', false));
$ads_counter = $redux_demo['home-ads-counter'];
$current = -1;
$current2 = 0;
$popularpost = new WP_Query(array('posts_per_page' => $ads_counter, 'cat' => $cat_id, 'posts_type' => 'post', 'paged' => $paged, 'meta_key' => 'wpb_post_views_count', 'orderby' => 'meta_value_num', 'order' => 'DESC'));
while ($popularpost->have_posts()) {
    $popularpost->the_post();
    $current++;
    $current2++;
    ?>

						<div class="ad-box span3 popular-posts-grid <?php 
    if ($current % 4 == 0) {
示例#26
0
/**
 * Reset the week parameter of the WordPress main query if needed.
 *
 * When cropping an avatar, a $_POST['w'] var is sent, setting the 'week'
 * parameter of the WordPress main query to this posted var. To avoid
 * notices, we need to make sure this 'week' query var is reset to 0.
 *
 * @since  2.2.0
 *
 * @param  WP_Query|null $posts_query the main query object.
 *
 * @uses   bp_is_group_create()
 * @uses   bp_is_group_admin_page()
 * @uses   bp_is_group_admin_screen() to check for a group admin screen
 * @uses   bp_action_variable() to check for the group's avatar creation step
 * @uses   bp_is_user_change_avatar() to check for the user's change profile screen
 */
function bp_core_avatar_reset_query($posts_query = null)
{
    $reset_w = false;
    // Group's avatar edit screen
    if (bp_is_group_admin_page()) {
        $reset_w = bp_is_group_admin_screen('group-avatar');
        // Group's avatar create screen
    } elseif (bp_is_group_create()) {
        /**
         * we can't use bp_get_groups_current_create_step()
         * as it's not set yet
         */
        $reset_w = 'group-avatar' === bp_action_variable(1);
        // User's change avatar screen
    } else {
        $reset_w = bp_is_user_change_avatar();
    }
    // A user or a group is cropping an avatar
    if (true === $reset_w && isset($_POST['avatar-crop-submit'])) {
        $posts_query->set('w', 0);
    }
}
示例#27
0
 /**
  * A recurring event will have the base post's slug in the
  * 'name' query var. We need to remove that and replace it
  * with the correct post's ID
  *
  * @param WP_Query $query
  *
  * @return void
  */
 private function set_post_id_for_recurring_event_query($query)
 {
     $date = $query->get('eventDate');
     $slug = $query->get('name');
     if (empty($date) || empty($slug)) {
         return;
         // we shouldn't be here
     }
     $cache = new Tribe__Events__Cache();
     $post_id = $cache->get('single_event_' . $slug . '_' . $date, 'save_post');
     if (!empty($post_id)) {
         unset($query->query_vars['name']);
         unset($query->query_vars['tribe_events']);
         $query->set('p', $post_id);
         return;
     }
     global $wpdb;
     $parent_sql = "SELECT ID FROM {$wpdb->posts} WHERE post_name=%s AND post_type=%s";
     $parent_sql = $wpdb->prepare($parent_sql, $slug, Tribe__Events__Main::POSTTYPE);
     $parent_id = $wpdb->get_var($parent_sql);
     $parent_start = get_post_meta($parent_id, '_EventStartDate', true);
     if (empty($parent_start)) {
         return;
         // how does this series not have a start date?
     } else {
         $parent_start_date = date('Y-m-d', strtotime($parent_start));
     }
     if ($parent_start_date == $date) {
         $post_id = $parent_id;
     } else {
         /* Look for child posts taking place on the requested date (but not
          * necessarily at the same time as the parent event). This does not
          * cater to scenarios where multiple children take place on the same
          * date but at different times - which is a known limitation to be
          * addressed in a future release.
          */
         $child_sql = "\n\t\t\t\t\t\tSELECT     ID\n\t\t\t\t\t\tFROM       {$wpdb->posts} p\n\t\t\t\t\t\tINNER JOIN {$wpdb->postmeta} m ON m.post_id=p.ID AND m.meta_key='_EventStartDate'\n\t\t\t\t\t\tWHERE      p.post_parent=%d\n\t\t\t\t\t\t  AND      p.post_type=%s\n\t\t\t\t\t\t  AND      LEFT( m.meta_value, 10 ) = %s\n\t\t\t\t\t";
         $child_sql = $wpdb->prepare($child_sql, $parent_id, Tribe__Events__Main::POSTTYPE, $date);
         $post_id = $wpdb->get_var($child_sql);
     }
     if ($post_id) {
         unset($query->query_vars['name']);
         unset($query->query_vars['tribe_events']);
         $query->set('p', $post_id);
         $cache->set('single_event_' . $slug . '_' . $date, $post_id, Tribe__Events__Cache::NO_EXPIRATION, 'save_post');
     }
 }
示例#28
0
	/**
	 * Anywhere that a feed is displaying posts, show comics too.
	 *
	 * @param WP_Query $query
	 */
	public function include_in_feeds( $query ) {
		if ( ! $query->is_feed() )
			return;

		// Don't modify the query if the post type isn't public.
		if ( ! get_post_type_object( 'jetpack-comic' )->public )
			return;

		$query_post_types = $query->get( 'post_type' );

		if ( empty( $query_post_types ) )
			$query_post_types = 'post';

		if ( ! is_array( $query_post_types ) )
			$query_post_types = array( $query_post_types );

		if ( in_array( 'post', $query_post_types ) ) {
			$query_post_types[] = self::POST_TYPE;
			$query->set( 'post_type', $query_post_types );
		}
	}
示例#29
0
 /**
  * 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));
     }
 }