WP类别页面自定义字段和日期的订单发布

时间:2014-01-11 18:04:55

标签: php wordpress categories

在我的WP网站上,我有几个类别,每个类别都有来自社区的帖子,每个帖子都是酒店的1个地址。

在这些类别中,我必须有两个块(必须在同一类别中)我们命名group1的第一个块,第二个块是group2。

当点击类别页面时,访问者首先查看group1中的所有帖子,然后直接查看group2中的帖子。

我已经做过的事情:

我将一个名为Groups的自定义字段放在值1(对于组1)或2(对于组2)中

在我的分类页面中,我已将此代码放在上面

<?php while ( have posts() ...

<?php if (is_category('saalbach-hinterglemm')) { $posts = query_posts($query_string. '&orderby=meta_value&meta_key=Groups&order=ASC' ); } ?>

现在是愚蠢的事情,除了帖子的日期顺序之外,一切都运行正常,我尝试将订单ASC更改为DESC,唯一的变化是group1首先出现的区别,或者在另一种情况下Group2的差异,但在这两种情况下总是如此第一个地方最古老的帖子(不是最新的....请有人帮我这个吗?

2 个答案:

答案 0 :(得分:0)

您可以尝试将date添加到orderby

'&orderby=date,meta_value&meta_key=Groups&order=ASC'

答案 1 :(得分:0)

Wordpress WP_Query不支持order参数的多个值(您的查询参数应为&orderby=meta_value,date&meta_key=Groups&order=ASC,DESC

您可以尝试使用posts_orderby过滤器(codex link here)。

将此代码放入functions.php文件中:

function enforce_specific_order($orderby) {
    global $wpdb;
    return $wpdb->prefix."postmeta.meta_value ASC, ".$wpdb->prefix."posts.post_date DESC";  
} 

然后修改您的代码:

<?php if (is_category('saalbach-hinterglemm')) { 
     add_filter('posts_orderby', 'enforce_specific_order'); 
     $posts = query_posts($query_string. '&meta_key=Groups' );
     remove_filter( current_filter(), __FUNCTION__ ); 
 } ?>