从wordpress帖子中排除类别

时间:2013-10-20 19:45:09

标签: php wordpress

我想从浏览我的博文中排除类别。我的类别ID为 62 。类别名称为 perfect_work

这是我的wordpress博客模板代码:

    <div id="left" class="eleven columns">

    <?php
    $temp = $wp_query;
    $wp_query= null;
    $wp_query = new WP_Query();
    $wp_query->query('paged='.$paged);
    ?>

    <?php while ($wp_query->have_posts()) : $wp_query->the_post(); ?>

        <div class="post" id="post-<?php the_ID(); ?>">

            <div class="title">

                <h2><a href="<?php the_permalink() ?>" title="Permanent Link to <?php the_title(); ?>" ><?php the_title(); ?></a></h2>

                <div class="postmeta">  <span>by <?php the_author_posts_link(); ?></span> | <span><?php the_time('l, F jS, Y') ?></span> | <span><?php the_category(', '); ?></span> </div>

            </div>

            <div class="entry">

            <?php $image_attr = wp_get_attachment_image_src(get_post_thumbnail_id($post->ID), 'top_feature'); ?>    

                <a href="<?php the_permalink() ?>"><img src="<?php echo $image_attr[0]; ?>" class="postim scale-with-grid" id="blog-thumb" ></a>
                <?php wpe_excerpt('wpe_excerptlength_archive', ''); ?>
                <div class="clear"></div>
            </div>
        </div>

    <?php endwhile; ?>
    <?php getpagenavi(); ?>
    <?php $wp_query = null; $wp_query = $temp;?>
</div>

我已经尝试过使用

$wp_query = new WP_Query('cat=-62');

它不起作用。我也把

<?php query_posts('cat=-62'); ?>
<?php while ($wp_query->have_posts()) : $wp_query->the_post(); ?>

它的工作但页面导航不起作用,也没有显示其他人的帖子。只有前5场演出。

任何解决方案?

4 个答案:

答案 0 :(得分:1)

获取页码

$paged = get_query_var('paged') ? get_query_var('paged') : 1;

然后你可以使用

$wp_query = new WP_Query('cat=-62&paged=' . $paged);

或使用

$cat_id = get_cat_ID('perfect_work');
$wp_query = new WP_Query('cat=-' . $cat_id . '&paged=' . $paged);

然后循环

if($wp_query->have_posts()) :
    while ($wp_query->have_posts()) : $wp_query->the_post();
        // ...
    endwhile;
endif;

答案 1 :(得分:0)

试试这个,你必须指定showposts来限制帖子

<?php $wp_query->set( 'cat', '-62' ); ?>
<?php query_posts( 'showposts=10' ); ?> 
<?php if( have_posts() ) : ?> 
<?php while( have_posts() ) : the_post(); ?>

.
.
.
<?php endwhile; ?>
<?php endif; ?>
  

注意:减号表示排除所有帖子   从数据库中检索属于该类别。在   转,循环将永远不会有该类别ID的帖子   处理指定数量的其他类别ID的帖子。

答案 2 :(得分:0)

请阅读WP_Query上的代码,它非常详细,请查看category参数部分

只需在您不想要的类别前添加减号-,因此以下代码表示展示类别为10和11的帖子,但不包括类别62

$recent = new WP_Query("showposts=3&cat=10,11,-62")

答案 3 :(得分:0)

您不需要在查询之前或之后使用$temp变量。你应该使用这样的东西:

//This should do the trick
$paged = ( get_query_var('paged') ) ? get_query_var('paged') : 1;

$args = array(
    'cat' => -62,
    'paged' => $paged
);

// the query
$the_query = new WP_Query( $args ); ?>

<?php if ( $the_query->have_posts() ) : ?>

  <!-- the loop -->
  <?php while ( $the_query->have_posts() ) : $the_query->the_post(); ?>
    <h2><?php the_title(); ?></h2>
  <?php endwhile; ?>
  <!-- end of the loop -->

  <!-- pagination here -->
  //The real trick!
  <?php wp_reset_postdata(); ?>

有两点需要注意:

  • 分页查询参数
  • 要重置查询,请使用wp_reset_postdata()