如何在category.php中对帖子进行排序,而不使用Wordpress中的query_posts

时间:2013-01-15 17:46:17

标签: wordpress

看来,当我需要对帖子进行分类时,标准WP循环可以顺利运行。当在category.php中使用时,它仅显示添加到特定类别的帖子,例如:我有两个类别,电影和音乐,我有分配给每个类别的帖子,我也有分配到这两个类别的帖子。如果是这样,分配给两个类别的帖子将完美地显示在两个类别中,而分配给一个类别的帖子仅显示在一个类别页面上。我试图按日期或ID对它们进行排序,但使用query_posts不起作用。它会导致显示所有类别页面上的所有帖子,除非它们按特定类别分组。有没有办法以不同的方式对它们进行排序?

编辑

这是标准循环,一切都很完美。正如我上面所写,在拥有“电影”类别页面时,仅分配给“电影”类别的帖子会显示在该页面上,就像每个类别页面一样。但我认为,按日期和降序排序。

<div class="category_info"><?php echo category_description(); ?></div>
<?php if (have_posts()) : while (have_posts()) : the_post(); ?>
<div class="categorymain">
<h4 class="posttitle"><?php the_title(); ?></h4>
<?php echo intro_text(250); ?>
<a href="<?php the_permalink() ?>" class="readmore">read more »</a>
</div><!--end categorymain-->
<?php endwhile; endif; ?>

但是,当我用

包装所有内容时
<?php query_posts('order=ASC'); ?>
//...above code here
<?php wp_reset_query();?>
一切都毁了。在“电影”类别页面上显示“电影”类别的帖子,但也显示来自其他所有类别的帖子,与“电影”无关,这种情况发生在每个类别页面上。我希望我说清楚:)哦,顺便说一句,所有内容都在category.php中编码。  向大家致意:)


编辑

我提出了一个无缝的解决方案,就是:

<?php global $wp_query;
$args = array_merge( $wp_query->query, array( 'category__in' => array(get_query_var('cat')), 'order' => 'DESC', 'orderby' => 'title' ));
query_posts( $args );
?>

2 个答案:

答案 0 :(得分:0)

$categories = get_the_category();
query_posts('order=ASC&cat='.$categories[0]); ?>
//...above code here
<?php wp_reset_query();?>

我建议你阅读: http://codex.wordpress.org/Class_Reference/WP_Query#Category_Parameters

看看获取类别功能:http://codex.wordpress.org/Function_Reference/get_the_category

答案 1 :(得分:-2)

<?php if (have_posts()) : ?>
<?php query_posts('cat=1&posts_per_page='.get_option('posts_per_page')); ?>