邪恶的拖把 发表于 2022-7-20 09:22:00

wordpress restful api 自动化发图文之环境配置

本帖最后由 邪恶的拖把 于 2022-7-20 09:32 编辑

1、 安装lamp,Nginx很难设置,使用Apache
2、安装完wordpress之后,点击控制面板上的Settings——》点击Permalinks——》选择 Postname
就像这样

3、配置SSL,只有https才可开启Application Password

4、点击控制面板上的Users——》点击Profile——》拉到最底New Application Password Name框框中随便输入名字然后点击 Add New Application Password,就像下面这样,记得保存密码,此密码不可二次查看

5、到网站根目录/www/wwwroot/www.yourwebsite.com ,有一个.htaccess文件, 用vi加入下面这句话
RewriteRule .* -

6、查看Apache配置文件/www/server/apache/conf/httpd.conf 搜索AllowOverride None, 改成AllowOverride All,正常情况下系统会自动配置好这一步。

7、测试一下, 浏览器输入https://www.yourwebsite.com/wp-json/wp/v2/posts ,正常工作会显示json

8、如果一切顺利的话,我们来尝试一下发布一篇文章吧

url = "https://yourwebsite.com/wp-json/wp/v2"
user = "your-username"
password = "your-application-password"
credentials = user + ':' + password
token = base64.b64encode(credentials.encode())
header = {'Authorization': 'Basic ' + token.decode('utf-8')}
post = {
'title'    : 'Hello World',
'status'   : 'publish',
'content': 'This is my first post created using rest API',
'categories': 5, // category ID
'featured_media': imageID,#注意这个字段
}
responce = requests.post(url , headers=header, json=post)
print(responce.text)

由于我们要发布的是图文,而不是纯文字, featured_media 字段可以帮助我们添加图片, 必须先将图片上传至服务器,再返回图片ID, 将ID赋给featured_media 字段,但是由于此方法过于垃圾,文章中并不能显示图片,完全不能满足我们混合图文的需求,所以不再赘述细节。 我们可以选择这样操作:
直接将图片链接赋给 content字段,就像这样 "content": "<img src=\"http://www.yourwebsite.com/wp-content/uploads/2022/07/659d51c01abe598f4e51504535773d76.jpg\" />" 请注意它的写法,这样图片就会出现在我们的文章中了。
那我们怎么获得wordpress 媒体库中的图片链接呢?
media = {
    'file': open("D:/imagelib_cover_img/71341cefbdef373b2a5ae03960215b61.jpg", 'rb'),
}

image = requests.post(url + '/media', headers=headers, files=media)
print(str(json.loads(image.content)['link']))
先上传张图片,再返回图片的link,还有很多字段可以查看,通过拼装字段就可以知道图片的地址。关于更多字段可以参考:
https://developer.wordpress.org/rest-api/reference/posts/

最后如果post方法出现401错误,不妨将Application password 更换一下,再做尝试。










邪恶的拖把 发表于 2022-7-20 09:27:19

出现401错误 可能是权限问题或者用户名密码错误
404错误是请求的连接写错了
出现错误多问谷老师;P

geili 发表于 2022-7-20 15:16:02

大佬这个不错,昨天刚使用了wordpress的xmlrpc来进行入库。早点知道有这个restful api 就用这个了。:dizzy:

newcb 发表于 2022-7-20 15:24:53

如果文章数量是十万级的,速度会怎么样?

billwong 发表于 2022-7-21 08:43:54

newcb 发表于 2022-7-20 15:24
如果文章数量是十万级的,速度会怎么样?

建议使用 sql 入库,速度比api 快多了

邪恶的拖把 发表于 2022-7-21 11:36:22

newcb 发表于 2022-7-20 15:24
如果文章数量是十万级的,速度会怎么样?

十万不多啊

邪恶的拖把 发表于 2022-7-21 11:37:15

billwong 发表于 2022-7-21 08:43
建议使用 sql 入库,速度比api 快多了

sql 不是麻烦嘛

sead 发表于 2022-7-24 14:04:56

采集后 wp 推送?
如果针对采集,预处理图片路径直接上传文件夹,量大sql入库最快,发布日期预设就自动有新文章了,一次搞定。

newcb 发表于 2023-1-16 19:59:14

这个是什么语言啊,PHP吗?

邪恶的拖把 发表于 2023-1-16 21:16:29

newcb 发表于 2023-1-16 19:59
这个是什么语言啊,PHP吗?

大蟒蛇 python

tacoloco 发表于 2023-1-16 22:37:31

有用,感谢
页: [1]
查看完整版本: wordpress restful api 自动化发图文之环境配置