Wordpress Rest Api 在自定义端点上使用 POST 更新内容

Posted

技术标签:

【中文标题】Wordpress Rest Api 在自定义端点上使用 POST 更新内容【英文标题】:Wordpress Rest Api Update content with POST on custom endpoint 【发布时间】:2020-02-06 16:45:20 【问题描述】:

我正在为 Post Type Post 创建一个自定义端点。 来自 javascript 的请求工作正常,但无法理解如何更新,例如帖子的内容。

我已经创建并注册了一个路由,我已经为一个路由创建了一个回调函数,我已经创建了一个小表单,我可以在其中插入帖子 ID 和内容。

这是路线的代码

add_action('rest_api_init', function() 
    register_rest_route('wl/v1', 'postsAdd/(?P<id>\d+)', [
        'methods' => 'POST',
        'callback' =>'wl_post_write',
    ]);
)

这是回调函数

function wl_post_write( $request ) 
    $parameters = $request->get_params();
    return $parameters;

来自 javascript 的 XMLHTTPRrequest 是

    var ourPostData = 
        "content": content
    

    var updatePost = new XMLHttpRequest(); 

    updatePost.open("Post", mySiteData.siteURL + '/wp-json/wl/v1/postsAdd/'+id+'/?post_type=post');

    updatePost.setRequestHeader("X-WP-Nonce", mySiteData.nonce);

    updatePost.setRequestHeader("Content-Type","application/json;charset=UTF-8");

    updatePost.send( JSON.stringify(ourPostData) );

    console.log(updatePost.responseText);

变量“content”和“id”是我在表单域中写入的值。

responseText的console.log是:

    "id":"51","post_type":"post","content":"my new post content"

上面的代码返回了我随请求发送的正确参数,但这不会更新 id 为 51 的帖子中的内容。

我不明白如何更新它。

非常感谢

【问题讨论】:

【参考方案1】:

您需要通过您的请求的授权。请参阅此线程以使用 POST 方法为自定义休息端点传递正确的授权:Populate ACF Fields using Wordpress Rest API JS

谢谢

【讨论】:

您好,感谢您的回答。我使用这个 updatePost.setRequestHeader('Authorization', 'Basic' + param);其中 param 是 username:password 的 base64 编码。此授权与 wordpress 默认 API Rest with POST 一起使用。无论如何,经过授权,帖子也没有更新 你能用你正在做的授权更新你的代码 sn-ps 吗?另外我想知道 GET 方法是否适合你? 带有 POST 方法的默认 wordpress 端点适用于该授权 - 我能够创建和更新帖子。从自定义端点看来,授权有效,但帖子的更新无效。 GET 方法也适用于默认和自定义端点。

以上是关于Wordpress Rest Api 在自定义端点上使用 POST 更新内容的主要内容,如果未能解决你的问题,请参考以下文章

使用操作挂钩创建自定义Wordpress REST API端点

无法显示来自 Wordpress REST API 自定义端点的自定义字段

使用自定义Wordpress API端点更新WooCommerce产品

带有自定义 API Rest Endpoint 的 WordPress 和 JWT

WordPress 自定义 API 端点 POST 请求在 React 中失败

使用 WordPress REST API 通过 AJAX 更改密码