|
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 默认为我们提供了几个基础的排序方式,很多情况下都不够用,好在我们可以通过本文中的方法添加自己需要的逻辑进行排序,来帮助用户更方便的查找过滤数据。 |
|