如何使用postMash在定制循环中对帖子进行排序?

时间:2012-05-03 作者:Northernlights

我使用postMash插件让客户端能够轻松地重新排序帖子,而无需更改每个帖子的时间戳,而且效果很好。但是,我使用自定义循环将类别中的最新帖子调用到主页上,如下所示:

$i=0;
$events = get_posts( array ( \'category\' => 6, \'orderby\' => \'menu_order\', \'order\' => \'ASC\' ) );
if ( $events ) {
    echo \'<ul>\';
    foreach ( $events as $event )  {
        $eventDate = get_post_meta($event->ID, \'event-date\', true );
        $eventTime = get_post_meta($event->ID, \'event-time\', true);
        echo "<li>".$eventDate;
        if ($eventDate && $eventTime) {
            echo " - ";
        }
        echo $eventTime."<br>";
        echo "<a href=\'".get_permalink($event->ID)."\'>".get_the_title($event->ID)."</a></li><br>";
    if (++$i == 3) break;
}
echo \'</ul>\';
}

插件成功地重新排序了类别页面上的帖子,但不在此自定义循环内。。

以下是插件url:http://wordpress.org/extend/plugins/postmash/

1 个回复
最合适的回答,由SO网友:Chris_O 整理而成

该插件已有3年历史。我不确定它是否使用menu\\u order列来设置顺序,但如果使用,您可以使用以下内容过滤pre\\u get\\u帖子或自定义查询:

\'orderby\' => \'menu_order\',
\'order\'   => \'ASC\'
这一切都必须在$post对象添加到$events数组之前完成,因此如果您添加了前面的代码,它将有助于回答:if($events)

此外,如果您在foreach循环中的某个地方执行var\\u dump($事件),我们可以了解帖子的排序方式。

在您的评论之后编辑,查看var\\u转储,下面是发生的事情:

按照正确的菜单顺序获得5篇文章,然后break语句会导致foreach循环从0开始,然后再次发布相同的5篇文章。它这样做了三次

1-2-3-4-5断开1-2-3-4-5断开1-2-3-4-5断开

请参阅格式化的$post数组转储:http://pastebin.com/hHPxbzda

如果只想显示前3个,只需将其添加到get\\u posts数组中:
\'posts_per_page\' => 3

结束