在我的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的差异,但在这两种情况下总是如此第一个地方最古老的帖子(不是最新的....请有人帮我这个吗?
答案 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__ );
} ?>