排除博客列表页面上的类别

时间:2013-07-17 作者:omar_hussein

我有一个网站,有一个新闻页面(“新闻”类别的存档)和一个单独的博客页面。当我为新闻页面发帖时,我选择了“新闻”类别。因此,在新闻页面上,您只能看到标记为新闻的帖子,但在博客页面上,您可以看到所有帖子。我想做的是最好在博客页面上显示除“新闻”帖子以外的所有帖子。我该怎么做?

<!--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">&nbsp;&nbsp;<?php echo get_the_time(\'M, d, Y\') ?></li>
                                <li class="post_comment">&nbsp;&nbsp;
                                <?php comments_popup_link(\'No Comments.\', \'1 Comment.\', \'% Comments.\'); ?>
                                </li>
                                <br />
                                <li class="posted_by">&nbsp;&nbsp;
                                <?php the_author_posts_link(); ?>
                                </li>
                                <br />
                                <li class="post_category">&nbsp;&nbsp;
                                <?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\'); ?>&nbsp;<span class="button-tip"></span></a> </div>
                    </div>
                    <!--End Post-->
以上是博客中的代码。php,我正在尝试编辑的php文件,因为它是我博客页面的模板(如果有用的话)

3 个回复
最合适的回答,由SO网友:omar_hussein 整理而成

谢谢你回答我的问题,但在尝试做其他事情后,我终于找到了答案,我认为这是最简单、最短的答案。在发布帖子的主循环中,您将看到以下内容

<?php if (have_posts()) : while (have_posts()) : the_post(); ?>
在此代码之前,请添加以下行,

<?php query_posts(\'cat=-4\'); ?>
其中4是类别id,-表示“不”,类似于!在C中,这意味着所有不在类别ID 4中的帖子都将显示在该页面上

SO网友:Johannes Pille

来自插件或主题的函数。php文件:

function wpse106861_mod_query( $query ) {
    /* are we on the blog page ? */
    if ( $query->is_home() && $query->is_main_query() ) {
        /* get ID of news category */
        $news_id = get_cat_ID( \'news\' );
        /* exclude posts in new from query */
        $query->set( \'category__not_in\' => array( $news_id ) );
    }
}
add_action( \'pre_get_posts\', \'wpse106861_mod_query\' );
Update<关于评论:is_home 应该在任何博客索引页面上返回true,无论这是静态页面还是首页。您也可以通过稍微更改条件,直接查看首页:

if ( $query->is_front_page() && $query->is_main_query() )

Related Reading

SO网友:Krzysiek Dróżdż

你可以用pre_get_posts 滤器这样做:

function my_exclude_category( $query ) {
    if ( $query->is_home() && $query->is_main_query() ) {
        $query->set( \'category__not_in\', array( 1, 1347 ) );  // where 1 and 1347 are IDs of excluded categories
    }
}
add_action( \'pre_get_posts\', \'my_exclude_category\' );
另外,我假设这个博客页面被设置为您的帖子页面。

结束

相关推荐

如何才能在使用GET_POSTS函数查询帖子时获得想要的分页

我正在使用WP3。我有一个post_list.php 这将显示所有的职位订单,按职位日期描述。一切正常,除了pagination.我有15个帖子,为了测试的目的,我想每个页面显示2个帖子,其他人将显示下一页像这样。Prev 1 2 3 4 5 Next post\\u列表的某些部分。phpdefine(\'WP_USE_THEMES\', false); require_once \'../blog/wp-load.php\'; $query_args = array(