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

     2023-02-19     145

关键词:

【中文标题】如何在 Wordpress API v2 中过滤特定日期之后修改的帖子【英文标题】:How to filter posts modified after specific date in Wordpress API v2 【发布时间】:2018-04-13 16:31:04 【问题描述】:

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

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

我已经尝试使用 https://github.com/WP-API/rest-filter 提到的 in this issue /wp-json/wp/v2/posts?filter[date_query][0][column]=post_modified_gmt&filter[date_query][0][after]=1+month+ago,但是这个 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

【问题讨论】:

【参考方案1】:

原生支持 - WordPress 5.7

从 WordPress 5.7 开始,支持按修改后日期而非发布日期进行查询。不再需要自定义解决方法。

用法:

/wp-json/wp/v2/posts??modified_after=2021-01-01T00:00:00Z

备注:https://make.wordpress.org/core/2021/02/23/rest-api-changes-in-wordpress-5-7/

【讨论】:

显然还没有记录:developer.wordpress.org/rest-api/reference/posts【参考方案2】:

我已经创建了一个WordPress插件WP REST API – Filter posts date wise using given column,有需要的可以使用。

使用这个插件,我们可以指定列(datedate_gmtmodifiedmodified_gmt 中的任何一个)作为查询参数date_query_column 来查询before 中给出的值和/或after查询参数。

用法

date_query_column 参数与before 和/或after 参数结合使用在任何post 端点上,例如/wp/v2/posts/wp/v2/pages

/wp-json/wp/v2/posts??after=2017-11-08T13:07:09&date_query_column=modified

Github Repository 相同。

【讨论】:

【参考方案3】:

好像不支持,略过docs

以下是一些解决方法:

1)自定义modified_after休息查询参数

我们可以为post 帖子类型添加modified_after 休息查询参数:

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

注意事项:

我们可能在post_modified_gmt 列中使用了modified_gmt_after

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

要将其扩展到其他帖子类型,我们可以使用rest_$post_type_collection_paramsrest_$post_type_query 过滤器。

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

2)自定义date_query_columnrest查询参数

另一种方法是引入自定义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

希望对你有帮助!

【讨论】:

我可以在 fork 之后在 github.com/WP-API/rest-filter/blob/master/plugin.php#L18 添加上面的 add_filter 代码吗?使用更新的插件可以工作吗? @VigneshSundar 我不建议修改核心代码,而是create a custom plugin。这样您就不会在每次更新 WordPress 核心时丢失修改。 但我认为rest-filter不是WP-API merged with WordPress core的一部分,它是一个我们可以单独添加的插件&更新WordPress不会影响这个 我的方法是不考虑那个插件。出于同样的原因,我也会避免修改 3rd 方插件。我现在在手机上,所以我稍后会检查它 感谢您的指导,我将创建新插件,但仅供参考,刚才我从 rest-filter 描述中看到了几句话 - 'removed from the API when it was merged into WordPress core'

有没有办法在 WordPress 中获取相关帖子 API?

】有没有办法在WordPress中获取相关帖子API?【英文标题】:IsthereanywaytogetrelatedpostsAPIinWordPress?【发布时间】:2019-07-3011:38:17【问题描述】:我需要创建一个API,以按类别过滤器呈现相关帖子。我已经在我的functions.php文件中编写... 查看详情

如何在 Spring Cloud Gateway 中添加特定于路由的自定义过滤器

】如何在SpringCloudGateway中添加特定于路由的自定义过滤器【英文标题】:HowtoaddacustomfilterspecifictoarouteinSpringCloudGateway【发布时间】:2020-02-2909:28:26【问题描述】:所以我是SpringCloudGateway的新手,刚刚开始使用它。我在浏览文档时... 查看详情

如何渲染wordpress api的内容?

】如何渲染wordpressapi的内容?【英文标题】:Howtorendercontentofwordpressapi?【发布时间】:2019-08-1802:25:40【问题描述】:我正在为wordpress解决方案创建一个移动应用程序,在研究wordpressrestapi时,我发现json架构的呈现方式存在问题;... 查看详情

Wordpress 在 nav_menu_submenu_css_class 过滤器中获取显示位置

】Wordpress在nav_menu_submenu_css_class过滤器中获取显示位置【英文标题】:Wordpressgetdisplaylocationinnav_menu_submenu_css_classfilter【发布时间】:2018-01-2207:24:38【问题描述】:也许我想太多了。希望我不是。我想在wp_nav_menu中的所有子菜单中... 查看详情

如何使用 WordPress REST api 返回某个月份的所有帖子

】如何使用WordPressRESTapi返回某个月份的所有帖子【英文标题】:HowcanIreturnallpostsfromacertainmonthusingtheWordPressRESTapi【发布时间】:2015-08-2710:32:23【问题描述】:我正在使用RESTapi在WordPress中构建一个简单的Angular博客应用程序,到目... 查看详情

WordPress REST API - 超过 10 个帖子

】WordPressRESTAPI-超过10个帖子【英文标题】:WordPressRESTAPI-morethan10posts【发布时间】:2018-11-0221:11:04【问题描述】:我搜索了这个问题并尝试了几种解决方案,但都没有成功。我的主要路线在这里:https://cnperformance.wpengine.com/wp-json... 查看详情

如何在 Python 中使用 wordpress api 上传图片?

】如何在Python中使用wordpressapi上传图片?【英文标题】:HowtouploadanimagewiththewordpressapiinPython?【发布时间】:2021-10-0312:24:19【问题描述】:希望你没事。我想从我的电脑上传一张图片到我的wordpress库中。我在Python中编写了几行使... 查看详情

推特机器人可以发布推文(或引用)mla V2 API 吗? (基本访问)

...我是Twitter机器人的新手。我已经开始阅读一些教程,但在运行代码时出现此错误:TweepError:[\'message\':\'YoucurrentlyhaveEssen 查看详情

Wordpress - 如何通过其分类过滤添加的自定义帖子?

】Wordpress-如何通过其分类过滤添加的自定义帖子?【英文标题】:Wordpress-howtofiltertheaddedcustompostthroughitstaxonomy?【发布时间】:2022-01-1908:08:23【问题描述】:我在我的functions.php中添加了一个新的自定义帖子,如何通过其分类对现... 查看详情

如何使用 wordpress react API 在 react 中显示插件内容

】如何使用wordpressreactAPI在react中显示插件内容【英文标题】:HowtodisplayplugincontentinreactusingwordpressreactAPI【发布时间】:2021-04-0205:29:18【问题描述】:我有一个使用知识库插件的WordPress博客,现在我想使用WordPressRESTAPI将添加到此K... 查看详情

如何在wordpress中使用mysql事务?

】如何在wordpress中使用mysql事务?【英文标题】:Howtousemysqltransactioninwordpress?【发布时间】:2013-10-0920:15:36【问题描述】:我要删除10个孩子,如果一个是活动的,全部删除都会回滚。【问题讨论】:您可以在一个查询中删除它... 查看详情

使用 WP-API 节点模块时如何限制返回的 Wordpress REST-API 字段

】使用WP-API节点模块时如何限制返回的WordpressREST-API字段【英文标题】:HowtorestrictreturnedWordpressREST-APIfieldswhenusingWP-APINodeModule【发布时间】:2018-05-0210:38:53【问题描述】:如果我在浏览器中调用这个Wordpress博客网址<root...>wp-j... 查看详情

在 wordpress 中应用搜索过滤的插件

】在wordpress中应用搜索过滤的插件【英文标题】:Plugintoapplysearchfilteringinwordpress【发布时间】:2013-03-1106:51:10【问题描述】:我是一名学生,这些天在使用wordpress时正在学习wordpress,但我默认情况下会在我的网站上实现搜索过滤... 查看详情

Headless Wordpress API:如何在 JSON 中删除 html

】HeadlessWordpressAPI:如何在JSON中删除html【英文标题】:HeadlessWordpressAPI:howtoremovehtmlinJSON【发布时间】:2019-01-0806:41:27【问题描述】:我正在通过他们的headlessapi东西从wordpress中获取内容。但是返回的文本显示html标签我只想要没... 查看详情

wordpress rest api 授权

】wordpressrestapi授权【英文标题】:wordpressrestapiAuthorization【发布时间】:2019-01-1601:11:32【问题描述】:您好,我使用此代码通过api在wordpress中上传图片我的代码:<?php$file=$_FILES["RESULT_FileUpload-6"]["tmp_name"];$url=\'http://tst.com/wp-json/... 查看详情

WordPress:如何使用 $wp_query 按类别过滤帖子?

】WordPress:如何使用$wp_query按类别过滤帖子?【英文标题】:WordPress:Howtofilterpostsbycategoryusing$wp_query?【发布时间】:2017-06-1216:41:41【问题描述】:我在WordPress上构建了一个带有静态首页的自定义主题,并且在设置>阅读设置>... 查看详情

如何在 Springfox Swagger 提供的 Swagger /v2/api-docs 中启用 CORS 标头?

】如何在SpringfoxSwagger提供的Swagger/v2/api-docs中启用CORS标头?【英文标题】:HowdoIenableCORSheadersintheSwagger/v2/api-docsofferedbySpringfoxSwagger?【发布时间】:2018-01-2210:35:53【问题描述】:我的项目中有以下文件:@Configuration@Order(Ordered.LOWEST... 查看详情

如何在 wordpress api 中显示原始 json 字符串

】如何在wordpressapi中显示原始json字符串【英文标题】:HowcanIshowtherawjsonstringinwordpressapi【发布时间】:2021-07-2905:30:30【问题描述】:在我的自定义wordpressapi端点上出现此错误:SyntaxError:JSON.parse:unexpectedcharacteratline1column1oftheJSONdata... 查看详情