通常在WordPress中上传图片需要登录后台进行上传操作,本文将介绍使用REST API方式上传图片,并可以结合之前介绍过的根据域名URL实现网页截图支持网页版和API进行配合使用。
适用场景:
- 1.对某个网站主页或者某个URL链接进行自动化截图并压缩。
- 2.将截图通过REST API上传到WordPress媒体库中。
如何通过REST API上传图片到WordPress
WordPress默认已经开启了REST API,我们只需要设置一下应用程序密码即可使用,设置应用程序密码在后台用户管理中,找到管理员用户,进行编辑,划到最下方即可看到。
注意:应用程序密码要复制保存好,后面链接API会用到,如果没有复制可以撤消掉重新设置。

通过REST API上传图片到媒体库
import requests
import argparse
# WordPress 站点的 REST API URL
media_url = 'https://www.wxspace.cn/wp-json/wp/v2/media'
# 设置命令行参数
parser = argparse.ArgumentParser(description='上传图片到 WordPress')
parser.add_argument('file_path', type=str, help='图片文件路径')
args = parser.parse_args()
# 认证信息:应用密码
auth = ('管理员用户名', '应用程序密码')
# 获取文件的 MIME 类型,支持 jpg 和 png
def get_mime_type(file_path):
if file_path.endswith('.jpg') or file_path.endswith('.jpeg'):
return 'image/jpeg'
elif file_path.endswith('.png'):
return 'image/png'
else:
return 'application/octet-stream' # 默认类型
# 读取文件并上传
with open(args.file_path, 'rb') as file:
# 获取 MIME 类型
mime_type = get_mime_type(args.file_path)
# 构造上传的文件数据
files = {
'file': (args.file_path, file, mime_type)
}
# 发送上传请求
response = requests.post(media_url, files=files, auth=auth)
# 检查上传结果
if response.status_code == 201:
# 上传成功,获取文件的 URL
media_url = response.json()['source_url']
print(f"文件上传成功,URL:{media_url}")
else:
# 上传失败,打印错误信息
print(f"文件上传失败,错误状态码:{response.status_code}")
print(f"错误信息:{response.text}")
python脚本使用示例,通过传参图片名称进行使用:
python3.9 upload_image_to_wp.py wp-rest-api.jpg
文件上传成功,URL:https://www.wxspace.cn/wp-content/uploads/2025/04/wp-rest-api.jpg
我们还可以结合根据域名URL实现网页截图支持网页版和API进行配合使用。比如截图万象空间首页图片,然后上传到WordPress。
示例脚本如下:
cat jt_and_upload_to_wp.sh
name=`echo $1 | sed 's#https://##' | sed 's#/.*##'`
wget -O ${name}.jpg "https://api.screenshotmachine.com?key=xxxxx&url=${1}&dimension=1280x720&format=jpg&delay=5000&cacheLimit=0"
sleep 1
jpegoptim --max=85 --strip-all ${1}.jpg
python3.9 upload_image_to_wp.py ${1}