我的页面顶部有一个类别列表,通常应列出其下方的帖子。使用以下命令创建类别列表:
<?php $display_categories = array(4,7,8,9,21,1); $i = 1;
foreach ($display_categories as $category) { ?>
<?php single_cat_title(); ?> //etc
</div>
<?php } ?>
然而,这似乎使按照类别的帖子循环顺序发布。我希望它忽略类别排序和按日期降序排列。我已经创建了一个新的WP_Query,因为根据文档你不能使用query_posts()两次,所以以防万一。
<?php $q = new WP_Query("cat=-1&showposts=15&orderby=date&order=DESC");
if ( $q->have_posts() ) : while ( $q->have_posts() ) : $q->the_post(); ?>
the_title(); // etc
endwhile; endif; ?>
但是,依然似乎是按类别(与上面的列表相同的顺序)排序,然后按日期排序,而不是按日期排序。
答案 0 :(得分:2)
我之前也遇到过这个问题。
试试这个:
<?php
global $post;
$myposts = get_posts('numberposts=5');
foreach($myposts as $post) :
setup_postdata($post);
?>
<div <?php post_class(); ?>>
<div class="title">
<h2><a href="<?php the_permalink(); ?>"><?php the_title(); ?></a></h2>
<p class="small"><?php the_time('F j, Y'); ?> by <?php the_author(); ?></p>
</div>
<?php the_excerpt(); ?>
</div>
<?php
endforeach;
?>
重要的一行是'全球$ post;'。
这应该重置您的全局查询。 'setup_postdata($ post)方法对于访问'the_author()'或'the_content()'等函数是必要的。
-Chris
答案 1 :(得分:0)
query_posts有时很挑剔。尝试这样的事情,看看它是否有效:
query_posts(array('category__not_in'=>array(1),
'showposts'=>15,
'orderby'=>date,
'order'=>DESC));
由于这不是问题,请尝试将update_post_caches($ posts)添加到第二个循环中,如下所示:
<?php $q = new WP_Query("cat=-1&showposts=15&orderby=date&order=DESC");
if ( $q->have_posts() ) : while ( $q->have_posts() ) : $q->the_post(); update_post_caches($posts); ?>
the_title(); // etc
endwhile; endif; ?>
答案 2 :(得分:0)
我对wordpress没有任何经验,但有几种可能性:
query_posts()
的字符串中定义了两次“order”参数,我不知道是否会导致问题。此处描述了参数及其效果: http://codex.wordpress.org/Template_Tags/query_posts#Parameters