如何获取ID最大的自定义帖子(不是按日期排列的最后一篇帖子)

时间:2020-07-14 作者:Artem

我想得到最后一个ID的帖子,即使它不是截止日期的最后一篇帖子。该帖子属于自定义帖子类型。

我需要这个来为我的订单分配自定义id号。创建新订单时,我将查找ID最大的帖子,从其meta中获取其订单号,增加订单号并将其分配给新订单。当订单以任何方式更改时,我都会更新订单帖子,并更新其日期,使其出现在帖子列表的顶部。因此,WP获得的最后一个按日期发布的帖子不一定具有最大的ID号。我想得到的职位与最大的职位ID。

这是我的帖子ID的示例列表

3460346534643463346234613459

我需要3465

这是我的代码:

$args = array(
   \'post_type\' => \'my_order_cpt\',
   \'post_status\' => array(\'confirmed\', \'paid\', ..... , \'closed\'),
   \'numberposts\' => 1,
   \'orderby\' => \'ID\',
   \'order\'   => \'DESC\'
);
$numbers = get_posts($args);
然而,这给了我截止日期的最后一篇文章。以我为例,是3460。

我找到的所有答案,例如。here, 描述按日期获取最后一篇文章。

我知道有一种方法可以通过wpdb查询做到这一点(“SELECT meta\\u value FROMwp_postmeta 其中meta\\u key=“[插件前缀]\\u order\\u number”order BY CAST(meta\\u值为无符号)DESC LIMIT 1”检查帖子是否不是草稿,是否不在垃圾桶中),或者获取所有帖子类型并使用数组,但是否有方法使用get\\u posts()?也许,使用meta\\u查询?订单号是一个单独的元字段,名为“[插件前缀]\\u订单号”。

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

事实证明,当我试图获取最大的ID时,我有点错了。我需要的是通过订单号本身获取帖子,然后再进行排序!以下是我的想法:

$num_args = array(
    \'post_type\' => \'my_store_order\',
    \'post_status\' => array(\'mystatus_1\', \'mystatus_2\', \'mystatus_N\'),
    \'numberposts\' => 1,
    \'meta_query\' => array(
        \'my_clause\' => array(
            \'key\' => \'my_order_number\',
            \'type\' => \'numeric\',
            \'compare\' => \'EXIST\'
        )
    ),
    \'orderby\' => \'my_clause\',
    \'order\' => \'DESC\'
);
此外,由于post meta是一个字符串,我添加了“type”=>;\'“数字”,因此在排序时,它将被视为一个数字(1,2,10 vs 1,10,2)

This post 帮了我很多

相关推荐