gpt4 book ai didi

wordpress - 如何在 Wordpress API v2 中过滤特定日期后修改的帖子

转载 作者:行者123 更新时间:2023-12-03 08:21:04 26 4
gpt4 key购买 nike

我正在尝试通过 WordPress REST API 获取(过滤)在特定日期之后修改的帖子 2.0-beta15 & WordPress v4.8.3并使用我的客户端应用程序中的现有帖子进行更新。

使用 afterbefore WordPress 提供的查询参数我可以根据 date 过滤帖子而不是 modified field 。

我试过 /wp-json/wp/v2/posts?filter[date_query][0][column]=post_modified_gmt&filter[date_query][0][after]=1+month+ago使用此 https://github.com/WP-API/rest-filter如前所述 in this issue ,但是这个 date_query过滤器现在也不起作用。

我需要任何选项,例如

http://bankersdaily.in/wp-json/wp/v2/posts?modified_after=2017-10-31T13:32:10&_envelope
http://bankersdaily.in/wp-json/wp/v2/posts?after=2017-10-31T13:32:10&field=modified&_envelope

引用:

https://developer.wordpress.org/rest-api/reference/posts/#list-posts
https://codex.wordpress.org/Class_Reference/WP_Query?#Date_Parameters

最佳答案

看起来它不受支持,浏览 docs

以下是一些解决方法:

1) 定制 modified_after其余查询参数

我们可以添加 modified_after post 的其余查询参数帖子类型:

add_filter( 'rest_post_collection_params', function( $query_params ) {
$query_params['modified_after'] = [
'description' => __( 'Limit response to posts published after a given ISO8601 compliant date.' ),
'type' => 'string',
'format' => 'date-time',
];
return $query_params;
} );

然后相应地修改其余的帖子查询:
add_filter( 'rest_post_query', function( $args, $request ) {
if( isset( $request['modified_after'] ) && ! isset( $request['after'] ) ) {
$args['date_query'][0]['after'] = $request['modified_after'];
$args['date_query'][0]['column'] = 'post_modified';
}
return $args;
}, 10, 2 );

我们让 after优先于 modified_after .

示例:
/wp-json/wp/v2/posts??modified_after=2017-11-07T00:00:00

备注:

我们可能用过 modified_gmt_afterpost_modified_gmt柱子。

使用比 modified_after 更独特的名称可能更好以避免将来可能发生的名称冲突。

要将其扩展到其他帖子类型,我们可以使用 rest_{$post_type}_collection_paramsrest_{$post_type}_query过滤器。

另一种选择是创建自定义端点和参数,在那里要做的工作更多。当然,我们是否应该向当前的rest api添加自定义参数是一个问题。在某些情况下应该没问题,因为我们不会删除或修改响应,或者更改其他参数的工作方式。

2) 定制 date_query_column其余查询参数

另一种方法是引入自定义 date_query_column休息查询参数:
add_filter( 'rest_post_query', function( $args, $request ) {
if ( ! isset( $request['before'] ) && ! isset( $request['after'] ) )
return $args;

if( isset( $request['date_query_column'] ) )
$args['date_query'][0]['column'] = $request['date_query_column'];

return $args;
}, 10, 2 );

add_filter( 'rest_post_collection_params', function( $query_params ) {
$query_params['date_query_column'] = [
'description' => __( 'The date query column.' ),
'type' => 'string',
'enum' => [ 'post_date', 'post_date_gmt', 'post_modified', 'post_modified_gmt', 'comment_date', 'comment_date_gmt' ],
];
return $query_params;
} );

如果 afterbefore参数设置。

示例:
/wp-json/wp/v2/posts??after=2017-11-07T00:00:00&date_query_column=post_modified

希望能帮助到你!

关于wordpress - 如何在 Wordpress API v2 中过滤特定日期后修改的帖子,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/47053462/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com