5ucms论坛
标题:
WordPress REST API 根据自定义字段排序
[打印本页]
作者:
admin
时间:
2021-5-17 12:04
标题:
WordPress REST API 根据自定义字段排序
https://www.wpzhiku.com/wordpress-rest-api-gen-ju-zi/
在主题的function.php里加
为文章添加按自定义字段排序方式
如果我们需要让文章按自定义字段方式进行排序,方法是类似的。下面的代码为 WP REST API 添加了 views、area、random 排序方式。
add_filter('rest_post_collection_params', function($params)
{
$params[ 'orderby' ][ 'enum' ][] = 'views';
$params[ 'orderby' ][ 'enum' ][] = 'area';
$params[ 'orderby' ][ 'enum' ][] = 'random';
return $params;
}, 10, 1);
复制代码
只添加了排序方法还没用,我们还需要把按这些自定义参数排序的逻辑添加到 REST API 查询中,代码如下,从代码中可以看出,修改 REST API 查询的方法和自定义WP_Query的方法类似。
add_filter('rest_post_query', function ($query_vars, $request)
{
$orderby = $request->get_param('orderby');
if (isset($orderby) && $orderby === 'views') {
$query_vars[ "orderby" ] = "meta_value_num";
$query_vars[ "meta_key" ] = "wl_pageviews";
}
if (isset($orderby) && $orderby === 'area') {
$query_vars[ "orderby" ] = "meta_value_num";
$query_vars[ "meta_key" ] = "area";
}
if (isset($orderby) && $orderby === 'random') {
$query_vars[ "orderby" ] = "random";
}
return $query_vars;
}, 10, 2);
复制代码
排序是程序开发中必不可少的逻辑之一,WorPress REST API 默认为我们提供了几个基础的排序方式,很多情况下都不够用,好在我们可以通过本文中的方法添加自己需要的逻辑进行排序,来帮助用户更方便的查找过滤数据。
作者:
admin
时间:
2021-5-17 12:05
如果你加的字段像我一样是rank字段,后台自己填数字的
那就把上边的三个 留下一个,比如 留area
然后把area部分的 area meta_value_num area 都改为 rank
然后注意 自定义的rank值,需要每篇文章里都填!不能为空,否则在一些API输出中不显示,比如含search的输出
默认是从大到小排序
用法:
/wp-json/wp/v2/posts?per_page=12&page=1&search=123&orderby=rank
复制代码
作者:
admin
时间:
2021-6-11 09:02
注意 这种排序方法的数值范围 经测试只支持 -999~999 范围,超出会变成排在最后,原因未知
欢迎光临 5ucms论坛 (http://bbs.5ucms.com/)
Powered by Discuz! X3.2