单个类别的自定义循环,不能按日期排序。我遗漏了什么?

时间:2013-03-22 作者:Gabriel Luethje

我快发疯了。

我所拥有的只是网站主页上的一个简单循环(这是一个静态页面),它应该显示某个类别的最新帖子。问题是,无论我做什么,似乎包含category参数都会使按日期排序不起作用。

这是我正在使用的循环:

<?php
    $announcements = new WP_Query();
    $announcements->query(\'showposts=1&cat=4\');
    while ( $announcements->have_posts() ) : $announcements->the_post();
?>
使用此选项时,最旧的帖子总是出现。我已尝试添加&orderby=date&order=DESC, 但在我移除&cat=4, 在这一点上,事情是按日期排序的。

是我遗漏了什么,还是无法按日期对单个类别进行排序?

2 个回复
SO网友:mousesports

如果它不起作用,很可能你没有至少一个帖子链接到该特定的category 4.

如果你想排序DESCdate, 您不必在查询中指定这些参数,因为它们都是排序的默认值。

另外,不是初始化WP_Query 对象并简单地使用查询方法,尝试养成将参数数组传递给构造函数的习惯。

因此,在您的情况下,请尝试以下操作:

$args = array(\'cat\' => 4, \'posts_per_page\' => 1);
$announcements = new WP_Query($args);

if ($announcements->have_posts() ) : while( $announcements->have_posts() ) : $announcements->the_post(); ?>    
    <h1><?php the_title() ?></h1>
    <div class=\'post-content\'><?php the_content() ?></div>
<?php endwhile; endif; ?>
注意,我做了两件事:

创建了$args 数组并将其传递给WP_Query 构造函数if ($announcements->have_posts()) 在while循环之前查看此链接,了解有关WP_Queryhttp://wp.smashingmagazine.com/2013/01/14/using-wp_query-wordpress/

SO网友:Vasim Shaikh

您可以使用以下代码:

global $post;
$myposts = get_posts( \'numberposts=1&category=1\' );
foreach( $myposts as $post ) :
    the_title();
    the_content();
endforeach;

结束