如何根据连接的定制帖子类型的标题对rest API响应的结果进行排序?

时间:2021-03-24 作者:Mark Howells-Mead

我正在使用rest_photo_query 用于操作的参数的筛选器WP_Query 通过使用我自己的GET 参数。除了一个例外,它工作得又完美又快速。

我可以调整orderby 参数使用rest_sht_photo_collection_params, 而且很容易对结果进行排序meta_value.

这个photo 自定义帖子类型条目连接到第二个自定义帖子类型species 通过species_id.

我需要能够对photo 发布人species 标题

有没有人知道如何做到这一点?当我修改WP_Query 在标准端点中,我的首选是修改WP_Query 不知怎么的争论。

我曾尝试在自定义端点中构建自己的查询,然后通过循环修改生成的数组,但这会使请求速度慢100倍左右。

下面是一个简单字段的部分示例,其中自定义orderbymy_custom_meta_field 添加为meta_value 比较:

switch ($args[\'orderby\']) {
    case \'my_custom_meta_field\':
        $args[\'orderby\'] = \'meta_value\';
        $args[\'meta_key\'] = \'my_custom_meta_field\';
        break;

2 个回复
SO网友:Tom J Nowell

你不能,WP_Query 可以按post元值排序,但不能将该值用作post ID,查找该post,然后按另一个post上的值排序。

如果您有少量帖子,可以通过使用PHP手动排序结果来完成。

从根本上讲,数据的存储方式并不能使其可行。

SO网友:Mark Howells-Mead

我解决了这个问题,为每张照片添加了一个自定义的post meta值,其中包含物种名称,然后通过在照片和物种上使用save\\u post挂钩确保meta是最新的。查询现在可以按要求工作,并在大约100毫秒内返回我需要的数据。这意味着我可以继续使用此解决方案,而不必使用JavaScript。

相关推荐

我可以将主循环更改为‘orderby’自定义回调吗?

我有一个自定义的帖子类型title 是一个名称,我想按中的最后一个单词对循环进行排序title, 姓氏。在自定义查询中,我可以轻松地将名称分开并按最后一个单词进行过滤,但我不想重新编写归档页面的主循环/分页。是否可以将回调传递给orderby 操作中的参数pre_get_posts 还是这是一个失败的事业?谢谢