WP_QUERY定制订单和分页

时间:2015-02-05 作者:Michael

在使用时将自定义顺序与分页相结合时,我看到一些奇怪的行为WP_Query. 我的查询的参数如下:

$args = array(
    \'post_type\'       => \'news\',
    \'posts_per_page\'  => 10,
    \'meta_key\'        => \'news_date\',
    \'orderby\'         => \'meta_value_num\',
    \'order\'           => \'DESC\',
    \'paged\'           => $my_page
);
变量$my_page 包含从URL中提取的当前页码,如果URL中未定义,则将其设置为1。

此查询返回正确数量的结果,但顺序不正确。删除paged 参数导致实现了正确的顺序,但显然破坏了分页。

我做错什么了吗?谢谢

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

您希望按“日期”而不是“meta\\u value\\u num”排序,因为它是按数字排序的。因此,如果您是按价格订购物品,那么您应该使用“meta\\u value\\u num”。meta\\u键“news\\u date”很可能是日期格式。

您还应该使用“meta\\u type”=>“DATE”将meta\\u值强制转换为DATE。

$args = array(
    \'post_type\'       => \'news\',
    \'posts_per_page\'  => 10,
    \'meta_key\'        => \'news_date\',
    \'meta_type\'       => \'DATE\'
    \'orderby\'         => \'meta_value\',
    \'order\'           => \'DESC\',
    \'paged\'           => (int)$my_page
);
如果您获得了正确的顺序,您可以通过将分页*posts\\u per\\u页面乘以自己来计算偏移量。还要确保$paged变量是整数,如果从查询字符串中获取,则它不是整数。

结束

相关推荐

是否使用WP_QUERY使用日期重新查询和排序结果?

我正在编写一个函数来按时间顺序查找用户下一个即将到来的事件(存储为CPT)。如果我使用普通查询并执行以下操作\'post_type\' => \'ticket\', // another CPT set up to act as ticket \'orderby\' => \'meta_value_num\', \'meta_key\' => \'event_date\', // currently just Ymd but can be changed to u