我想从浏览我的博文中排除类别。我的类别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场演出。
任何解决方案?
答案 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()