我想向 WordPress 网站添加新帖子,并使用 WordPress 4.7 REST API 和客户端的 JSON-Tool "" 设置未来的bash
发布日期curl
。jq
我已将 basic-auth 插件添加到 WordPress,以便我可以使用这种类型的身份验证。
我最初是这样上传帖子的:
curl -s --location --basic --user 'name:password' \
--url "https://<server>/wp-json/wp/v2/posts" \
-d "title=Testpost" -d "content=This is a new post." | \
jq -r '"id: \(.id), date: \(.date), status: \(.status), title: \(.title.raw)"'
> id: 45, date: 2017-02-07T10:10:31, status: draft, title: Testpost
好的,这正如预期的那样。让我们看看更改帖子是否有效:
curl -s --location --basic --user 'name:password' \
--url "https://<server>/wp-json/wp/v2/posts/45" \
-d "title=Other title" | \
jq -r '"date: \(.date), status: \(.status), title: \(.title.raw)"'
> date: 2017-02-07T10:20:32, status: draft, title: Other title
好的,工作。
现在我想在下午 3 点发布帖子(" curl
" 参数缩小,因为它们没有改变):
curl ... "/wp-json/wp/v2/posts/45" \
-d "date=2017-02-07T15:00:00" | \
jq -r '"id: \(.id), date: \(.date), status: \(.status)"'
> id: 45, date: 2017-02-07T10:29:32, status: draft
没有。日期更改为发出请求的时间,而不是请求的发布日期。好的,也许状态“待定”?
curl ... "/wp-json/wp/v2/posts/45" \
-d "status=pending" -d "date=2017-02-07T15:00:00" | \
jq -r '"id: \(.id), date: \(.date), status: \(.status)"'
> id: 45, date: 2017-02-07T10:36:24, status: pending
好吧,状态设置为“待定”,但日期仍然是错误的。也许明确地将状态设置为“未来”?
curl ... "/wp-json/wp/v2/posts/45" \
-d "status=future" -d "date=2017-02-07T15:00:00" | \
jq -r '"id: \(.id), date: \(.date), status: \(.status)"'
> id: 45, date: 2017-02-07T10:36:48, status: publish
什么???这里发生了什么?现在,该帖子以当前日期发布。正是我不想拥有的。
但是,如果我现在用已发布的帖子重新发出相同的请求
curl ... "/wp-json/wp/v2/posts/45" \
-d "status=future" -d "date=2017-02-07T15:00:00" | \
jq -r '"id: \(.id), date: \(.date), status: \(.status)"'
> id: 45, date: 2017-02-07T16:00:00, status: future
......它完成了这项工作 - 至少在某种程度上。不知何故,时间被解释为 UTC,但最终帖子被正确设置为“未来”状态。
问题 1:如何在不首先发布的情况下使帖子进入这种状态?
问题 2:为什么日期被解释为 UTC?不就是“ date_gmt
”吗?
我在这里想念什么?