Custom order for Mysql array

时间:2012-09-30 作者:ordered_chaos

我有一页帖子,每篇帖子都有一个自定义字段“expired”,其中包含一个YYYY-MM-DD格式的日期,用于订购帖子。该日期用于一个脚本,该脚本告诉访问者优惠是否已过期或有效期是否超过X天。

我的数组如下:

$postid = get_the_ID();
$meta1 = get_post_meta($postid, \'shop\', true);
$paged = (get_query_var(\'paged\')) ? get_query_var(\'paged\') : 1;

$args = array(
\'post_type\' => \'post\',
\'meta_query\' => array(
    array(
        \'key\' => \'shop\',
        \'value\' => $meta1
    )
),
\'paged\' => $paged,
\'posts_per_page\' => \'4\',
\'meta_key\' => \'expired\',
\'orderby\' => \'meta_value\',
\'order\' => \'ASC\'
);

$query = new WP_Query( $args );
这将使用meta\\u值“expired”(最早日期)对帖子进行排序。

当“expired”meta\\u值日期早于“TODAY”时,post脚本将显示“expired”

当“过期”meta\\u值日期在“今天”之后时,脚本将显示“X天后过期”

How posts currently display:

当一篇文章“过期”时,它当前会停留在文章列表的顶部。

Post 1: Expired
Post 2: Expired
Post 3: Expires in 3 days
Post 4: Expires in 4 days
Post 5: Expires in 6 days
Instead, I\'d like to automatically order it thus: (备注栏#用于与上述内容进行比较)

Post 3: Expires in 3 days
Post 4: Expires in 4 days
Post 5: Expires in 6 days
Post 2: Expired
Post 1: Expired
如何创建一个自定义订单,一旦帖子过期(即“过期”日期早于今天的日期),它会被放在帖子列表的后面,但仍然位于旧的过期帖子之上?

非常感谢。

1 个回复
SO网友:Jonathan

乍一看,我认为你的查询是不对的。您是否回显变量以确保其正确?如果您正在设置

\'post_per_page\' => 4
你得到了5个帖子,然后有些不对劲了。如果它是一个数字,我相信你可以去掉它周围的引号。如果这不能解决问题,我会回显$meta1以确保查询正确,然后我甚至会尝试

\'order\' => \'DESC\'

结束