I’ve got a site with a News page (archive for category ‘news’) and a separate Blog page. When I make a post for the News page I select the category ‘news’. So, on the news page you only see the posts marked news, but on the blog page you can see all posts. What I would like to do is preferably show all posts EXCEPT the ‘news’ posts on the blog page. How do I do this?
<!--post start-->
<?php if (have_posts()) : while (have_posts()) : the_post(); ?>
<!--post start-->
<div class="post">
<div class="box">
<div class="postimgbox">
<?php if ((function_exists('has_post_thumbnail')) && (has_post_thumbnail())) { ?>
<?php the_post_thumbnail(); ?>
<?php } else {
}
?>
</div>
<ul class="post_meta">
<li class="post_date"> <?php echo get_the_time('M, d, Y') ?></li>
<li class="post_comment">
<?php comments_popup_link('No Comments.', '1 Comment.', '% Comments.'); ?>
</li>
<br />
<li class="posted_by">
<?php the_author_posts_link(); ?>
</li>
<br />
<li class="post_category">
<?php the_category(', '); ?>
</li>
<br />
</ul>
</div>
<div class="post_content">
<h1 class="post_title"><a href="<?php the_permalink() ?>" rel="bookmark" title="Permanent Link to <?php the_title_attribute(); ?>">
<?php the_title(); ?>
</a></h1>
<?php the_excerpt(); ?>
<a class="read_more" href="<?php the_permalink() ?>"><?php _e('Read More', 'infoway'); ?> <span class="button-tip"></span></a> </div>
</div>
<!--End Post-->
Above is the code from blog.php, the php file I am trying to edit as it is the template for my blog page, (if it helps)
From a plugin or your theme’s functions.php file:
Update
As for the comment:
is_home
should return true on any blog index page, regardless of whether that’s a static page or your front page. You can check for the front page directly as well anyhow, by slightly altering the conditional:Related Reading
pre_get_posts
hookget_cat_ID
WP_Query
classYou can do it with
pre_get_posts
filter. Do it like this:PS. I assume that this Blog page is set as your posts page.
Thank you for replying to my question but after trying to do something else I have managed to work out the answer, and what I believe to be the easiest and shortest answer. In the main loop for posting the posts you will see something along the lines of
Before this code add in the following line,
Where 4 is the category id. The – sign means ‘not’ and is similar to ! in C. This will mean all posts not in category ID 4 will be displayed on that page