Beispiel #1
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 #2
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' );
 }
Beispiel #3
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'));
        }
    }
}
 /**
  * Get the fork's parent post, set up a query, and load correct template.
  *
  * Duplicates the functionality of /wp-includes/template-loader.php and includes
  * a lot of copypasta, but that's only to ensure that it follows the same logic.
  *
  */
 function choose_template()
 {
     $p = get_queried_object_id();
     if (get_post_type($p) !== 'fork') {
         return;
     }
     $pp = get_post($p)->post_parent;
     $parent = get_post($pp);
     if ($parent->post_type == 'page') {
         $query = array('page_id' => $pp);
     } else {
         $query = array('p' => $pp);
     }
     $t = new WP_Query($query);
     $template = false;
     if ($t->is_404() && ($template = get_404_template())) {
     } elseif ($t->is_search() && ($template = get_search_template())) {
     } elseif ($t->is_tax() && ($template = get_taxonomy_template())) {
     } elseif ($t->is_front_page() && ($template = get_front_page_template())) {
     } elseif ($t->is_home() && ($template = get_home_template())) {
     } elseif ($t->is_attachment() && ($template = get_attachment_template())) {
         remove_filter('the_content', 'prepend_attachment');
     } elseif ($t->is_single() && ($template = get_single_template())) {
     } elseif ($t->is_page && ($template = get_page_template())) {
     } elseif ($t->is_category() && ($template = get_category_template())) {
     } elseif ($t->is_tag() && ($template = get_tag_template())) {
     } elseif ($t->is_author() && ($template = get_author_template())) {
     } elseif ($t->is_date() && ($template = get_date_template())) {
     } elseif ($t->is_archive() && ($template = get_archive_template())) {
     } elseif ($t->is_comments_popup() && ($template = get_comments_popup_template())) {
     } elseif ($t->is_paged() && ($template = get_paged_template())) {
     } else {
         $template = get_index_template();
     }
     if ($template = apply_filters('template_include', $template)) {
         include $template;
     }
     return;
 }
 /**
  * Checks where we are are and determines if we should show events in the main loop
  *
  * @param WP_Query $query
  * @return WP_Query
  * @since 2.1
  */
 public static function showInLoops($query)
 {
     if (!is_admin() && tribe_get_option('showInLoops') && ($query->is_home() || $query->is_tag) && empty($query->query_vars['post_type']) && false == $query->query_vars['suppress_filters']) {
         // 3.3 know-how for main query check
         // if (method_exists($query, 'is_main_query')) {
         if (self::is_main_loop($query)) {
             self::$isMainLoop = true;
             $post_types = array('post', TribeEvents::POSTTYPE);
             $query->set('post_type', $post_types);
         }
     }
     return $query;
 }
Beispiel #6
0
 /**
  * Exclude featured posts from the home page blog query.
  *
  * 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.
  *
  * @since Fastfood 0.37
  *
  * @param WP_Query $query WP_Query object.
  * @return WP_Query Possibly-modified WP_Query.
  */
 function pre_get_posts($query)
 {
     // Bail if not home or not main query.
     if (!$query->is_home() || !$query->is_main_query()) {
         return;
     }
     $query->set('ignore_sticky_posts', 1);
 }
Beispiel #7
0
/**
 * Sets `WP_Query->is_home` to false during GlotPress requests.
 *
 * @since 1.0.0
 *
 * @param WP_Query $query The WP_Query instance.
 */
function gp_set_is_home_false($query)
{
    if (is_glotpress() && $query->is_home() && $query->is_main_query()) {
        $query->is_home = false;
    }
}
Beispiel #8
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;
}
 /**
  * If this is the home posts page; this will return
  * false if the framework has swapped it out for a
  * homepage layout from theme options. Checks against
  * current WP_Query object at pre_get_posts.
  *
  * @since 2.3.0
  *
  * @param WP_Query $q Current WP_Query object being worked with
  * @return bool
  */
 private function is_blog($q)
 {
     if (!$q->is_home()) {
         return false;
     }
     if (themeblvd_get_option('homepage_content') == 'posts') {
         return true;
     }
     if (get_option('show_on_front') == 'page' && get_option('page_for_posts')) {
         return true;
     }
     return false;
     // Shouldn't get this far
 }
Beispiel #10
0
 /**
  * Alternates the 'posts_per_page' query_var on post type archive pages
  *
  * @param WP_Query $query
  */
 public function alter_post_type_archive($query)
 {
     if (is_admin() || !$query->is_main_query()) {
         return;
     }
     if (!$query->is_home() && !$query->is_post_type_archive()) {
         return;
     }
     $post_type = 'post';
     if (!is_home()) {
         // Get query var
         $post_type = $query->get('post_type');
     }
     if (post_type_supports($post_type, $this->global_feature)) {
         $posts_per_page = (int) g1_get_theme_option('post_type_' . $post_type, 'posts_per_page');
         if (-1 === $posts_per_page || $posts_per_page > 0) {
             $query->set('posts_per_page', $posts_per_page);
         }
     }
 }
 /**
  * Parse which page we are on using URL
  */
 public function getPageObject($pageUrl)
 {
     global $wp_rewrite;
     // If post type, we are using url_to_postid function
     $postId = url_to_postid($pageUrl);
     if ($postId) {
         $postType = get_post_type_object(get_post($postId)->post_type);
         return array('value' => $postId, 'title' => get_the_title($postId), 'type' => get_post($postId)->post_type, 'label' => is_array($postType->labels) ? $postType->labels['name'] : $postType->labels->name);
     }
     $path = str_replace(get_site_url(), '', $pageUrl);
     $path = trim($path, '/');
     // If path is empty, then it is front page
     if (empty($path)) {
         return array('value' => get_option('page_on_front') ? get_option('page_on_front') : '', 'title' => '', 'type' => 'front_page', 'label' => __('Home Page'));
     }
     // Otherwise, we will try to match through rewrite or by query
     $rewrite = $wp_rewrite->wp_rewrite_rules();
     if (is_array($rewrite) && count($rewrite) > 0) {
         foreach ($rewrite as $match => $query) {
             if (preg_match("#^{$match}#", $path, $matches) || preg_match("#^{$match}#", urldecode($path), $matches)) {
                 $query = preg_replace("!^.*\\?!", '', $query);
                 $query = addslashes(WP_MatchesMapRegex::apply($query, $matches));
                 parse_str($query, $query_vars);
                 break;
             }
         }
     } else {
         $query = preg_replace("!^.*\\?!", '', $path);
         parse_str($query, $query_vars);
     }
     // Workaround for fail pagename rewrite match
     if (isset($query_vars['pagename']) && strpos($query_vars['pagename'], '?') !== false) {
         $query = preg_replace("!^.*\\?!", '', $query_vars['pagename']);
         parse_str($query, $query_vars);
     }
     $querypost = new WP_Query($query_vars);
     if ($querypost->is_date()) {
         if ($querypost->query_vars['m']) {
             $date = $querypost->query_vars['m'];
         } else {
             if ($querypost->is_day()) {
                 $date = $querypost->query_vars['year'] . zeroise($querypost->query_vars['monthnum'], 2) . zeroise($querypost->query_vars['day'], 2);
             } else {
                 if ($querypost->is_month()) {
                     $date = $querypost->query_vars['year'] . zeroise($querypost->query_vars['monthnum'], 2);
                 } else {
                     if ($querypost->is_year()) {
                         $date = $querypost->query_vars['year'];
                     }
                 }
             }
         }
         return array('value' => $date, 'title' => '', 'type' => 'archive', 'label' => __("Archive"));
     } else {
         if ($querypost->is_category() || $querypost->is_tag() || $querypost->is_tax()) {
             $tax_query = $querypost->tax_query->queries;
             $taxonomy = get_taxonomy($tax_query[0]['taxonomy']);
             if ($tax_query[0]['field'] == 'term_id') {
                 $term_id = $tax_query[0]['terms'][0];
             } else {
                 if ($tax_query[0]['field'] == 'slug') {
                     $term_id = get_term_by('slug', $tax_query[0]['terms'][0], $taxonomy->name)->term_id;
                 }
             }
             return array('value' => $term_id, 'title' => get_term($term_id, $taxonomy->name)->name, 'type' => $taxonomy->name, 'label' => is_array($taxonomy->labels->name) ? $taxonomy->labels['name'] : $taxonomy->labels->name);
         } else {
             if ($querypost->is_search()) {
                 return array('value' => $querypost->query_vars['s'], 'title' => '', 'type' => 'search', 'label' => __("Search"));
             } else {
                 if ($querypost->is_home()) {
                     return array('value' => '', 'title' => '', 'type' => 'home', 'label' => __("Blog Home Page"));
                 }
             }
         }
     }
 }
Beispiel #12
0
 /**
  * Removes or adds products CPT in search
  * @param WP_Query $query
  */
 public function pre_get_posts($query)
 {
     if ($query->is_main_query()) {
         global $etp_blog_grid;
         if ($query->is_search && !empty($_GET['post_type'])) {
             $post_types = $_GET['post_type'];
             $query->set('post_type', $post_types);
         }
         $post_archive = $query->is_category() || $query->is_tag() || $query->is_home();
         if ($post_archive) {
             $etp_blog_grid = explode(',', $this->get('blog-grid', '1,10'));
             $per_page = array_product($etp_blog_grid);
             if ($this->get('blog-layout', 'left-image') && $per_page) {
                 $query->set('posts_per_page', $per_page);
             }
         }
     }
 }
Beispiel #13
0
 public function hide_cats_from_homepage($exclude_cat_IDs_string, \WP_Query $query)
 {
     if ($query->is_home() && $query->is_main_query()) {
         $query->set('cat', $exclude_cat_IDs_string);
     }
 }
Beispiel #14
0
 /**
  * The rule of this ordering is: from the most specific to the least.
  * Most of the default WP Template Hierarchy is the same, but not all is followed.
  *
  * For the full example of our lookup order plesase follow to:
  *
  * For the default WP hierarchy follow to:
  * http://codex.wordpress.org/Template_Hierarchy
  *
  * @param WP_Query $wp_query
  * @return array
  */
 protected function defineLookupOrder(\WP_Query $wp_query)
 {
     $result = [];
     if (!$wp_query) {
         return $result;
     }
     // prepare vars
     $post = !empty($wp_query->posts) ? $wp_query->posts[0] : false;
     $post_type = $post ? $post->post_type : false;
     $post_slug = $post ? $post->post_name : false;
     $query_post_type = $wp_query->query_vars['post_type'];
     if (is_array($query_post_type)) {
         // it's not usual to have multiple post types on a rewrite rule
         // but even if there is, it's extremely inconsistent to rely on
         // a template name with multiple post types
         // if that's the case, the user will have to alter the template
         // order manually
         $query_post_type = false;
     }
     // start the template hierarchy build up
     if ($wp_query->is_404()) {
         // 404-[post-type]
         // 404
         if ($query_post_type) {
             $result[] = '404-' . $query_post_type;
         }
         $result[] = '404';
     } elseif ($wp_query->is_search()) {
         // search
         // archive
         $result[] = 'search';
         $result[] = 'archive';
     } elseif ($wp_query->is_front_page()) {
         // if is page on front:
         // front-page
         // page
         // singular
         // if is posts on front:
         // front-page
         // home
         // archive-[post-type]
         // [post-type]
         // archive
         $result[] = 'front-page';
         if ($post_type) {
             if ($post_type !== 'page') {
                 $result[] = 'home';
                 $result[] = 'archive-' . $post_type;
                 $result[] = $post_type;
                 $result[] = 'archive';
             } else {
                 $result[] = 'page';
                 $result[] = 'singular';
             }
         }
     } elseif ($wp_query->is_home()) {
         // home
         // archive-[post-type]
         // [post-type]
         // archive
         $result[] = 'home';
         if ($post_type) {
             $result[] = 'archive-' . $post_type;
             $result[] = $post_type;
             $result[] = 'archive';
         }
         // for now this is not needed, test more
         // } elseif ($wp_query->is_post_type_archive()) {
         //     $result[] = 'archive-'.$query_post_type;
         //     $result[] = $query_post_type;
         //     $result[] = 'archive';
     } elseif ($wp_query->is_author()) {
         // author-[user-login]
         // author-[user-nicename]
         // author
         // archive
         if ($author = get_userdata($post->post_author)) {
             $result[] = 'author-' . $author->data->user_login;
             if ($author->data->user_login !== $author->data->user_nicename) {
                 $result[] = 'author-' . $author->data->user_nicename;
             }
         }
         $result[] = 'author';
         $result[] = 'archive';
     } elseif ($wp_query->is_tax() || $wp_query->is_tag() || $wp_query->is_category()) {
         // taxonomy-[taxonomy]-[term-slug]
         // taxonomy-[taxonomy]
         // taxonomy-[post-type]
         // taxonomy
         // archive-[post-type]
         // [post-type]
         // archive
         $term = get_queried_object();
         if (!empty($term->slug)) {
             $result[] = 'taxonomy-' . $term->taxonomy . '-' . $term->slug;
             $result[] = 'taxonomy-' . $term->taxonomy;
         }
         if ($query_post_type) {
             $result[] = 'taxonomy-' . $query_post_type;
         }
         $result[] = 'taxonomy';
         if ($query_post_type) {
             $result[] = 'archive-' . $query_post_type;
             $result[] = $query_post_type;
         }
         $result[] = 'archive';
     } elseif ($wp_query->is_date()) {
         // date-[post-type]
         // date
         // archive-[post-type]
         // [post-type]
         // archive
         if ($query_post_type) {
             $result[] = 'date-' . $query_post_type;
         }
         $result[] = 'date';
         if ($query_post_type) {
             $result[] = 'archive-' . $query_post_type;
             $result[] = $query_post_type;
         }
         $result[] = 'archive';
     } elseif ($wp_query->is_archive()) {
         // archive-[post-type]
         // [post-type]
         // archive
         if ($query_post_type) {
             $result[] = 'archive-' . $query_post_type;
             $result[] = $query_post_type;
         }
         $result[] = 'archive';
     } elseif ($wp_query->is_page()) {
         // page-[parent-slug]-[post-slug]
         // page-[post-slug]
         // [page-template-name]
         // page
         // singular
         if ($post->post_parent) {
             if ($parent_slug = get_slug($post->post_parent)) {
                 $result[] = 'page-' . $parent_slug . '-' . $post_slug;
             }
         }
         $result[] = 'page-' . $post_slug;
         // page templates can have their unique names, let's add them before the fallback
         if ($page_template_name = get_page_template_name($post->ID)) {
             $result[] = $page_template_name;
         }
         $result[] = 'page';
         $result[] = 'singular';
     } elseif ($wp_query->is_attachment()) {
         // single-attachment-[slugfied-long-mime-type]
         // single-attachment-[slugfied-short-mime-type]
         // single-attachment
         // attachment
         // single
         // singular
         // slugfied-long-mime-type = image-jpeg
         // slugfied-short-mime-type = jpeg
         if (!empty($post->post_mime_type)) {
             $result[] = 'single-attachment-' . \Bond\to_slug($post->post_mime_type);
             $mime = explode('/', $post->post_mime_type);
             if (count($mime) > 1) {
                 $result[] = 'single-attachment-' . \Bond\to_slug($mime[1]);
             }
             $result[] = 'single-attachment-' . $mime[0];
         }
         $result[] = 'single-attachment';
         $result[] = 'attachment';
         $result[] = 'single';
         $result[] = 'singular';
     } elseif ($wp_query->is_single()) {
         // single-[post-type]-[post-slug]
         // single-[post-type]
         // [post-type]
         // single
         // singular
         $result[] = 'single-' . $post_type . '-' . $post_slug;
         $result[] = 'single-' . $post_type;
         $result[] = $post_type;
         $result[] = 'single';
         $result[] = 'singular';
     }
     // everything is handled, allow a filter and go
     $result = apply_filters($this->hooks_prefix . '/lookup_order', $result);
     return $result;
 }
 /**
  * Exclude featured posts from the home page blog query.
  *
  * 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.
  *
  * @static
  * @access public
  *
  * @param WP_Query $query WP_Query object.
  * @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;
     }
     $page_on_front = get_option('page_on_front');
     // Bail if the blog page is not the front page.
     if (!empty($page_on_front)) {
         return;
     }
     $featured = self::get_featured_post_ids();
     // Bail if no featured posts.
     if (!$featured) {
         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);
 }
 /**
  * Don't show child posts on the front page of the site, they'll be pulled in separately as updates to a live post.
  *
  * @param WP_Query $query The current query
  *
  * @return WP_Query
  */
 public function filter_children_from_query(WP_Query $query)
 {
     $post_type = $query->get('post_type');
     // only applies to indexes and post format
     if (($query->is_home() || $query->is_archive()) && (empty($post_type) || in_array($post_type, apply_filters('livepress_post_types', array('post'))))) {
         $parent = $query->get('post_parent');
         if (empty($parent)) {
             $query->set('post_parent', 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);
 }
 public static function registerAsHomepage(WP_Query $query)
 {
     /* @var $query WP_Query */
     if ($query->is_main_query() && $query->is_home() && CMA_Settings::getOption(CMA_Settings::OPTION_ANSWERS_AS_HOMEPAGE) && empty($query->query_vars['post_type']) && !$query->is_page) {
         $query->set('post_type', CMA_Thread::POST_TYPE);
         $query->is_archive = true;
         $query->is_page = false;
         $query->is_post_type_archive = true;
         $query->is_home = true;
         $query->set('cma_homepage', 1);
     }
 }