使用Python向WordPress发布带图文章时遇404错误求助
解决Python向WordPress发布带图片文章的缩略图错误
问题原因
你直接将图片URL赋值给post.thumbnail,但WordPress的thumbnail字段要求的是媒体库中附件的ID,而非图片的外部/本地URL,这就导致WordPress无法找到对应的附件资源,触发了"未找到图片"的404错误。
修复步骤与代码
需要先将图片上传到WordPress媒体库,获取到附件ID后,再将该ID设置为文章缩略图:
修改后的完整代码:
from wordpress_xmlrpc import Client, WordPressPost from wordpress_xmlrpc.methods.posts import NewPost from wordpress_xmlrpc.methods.media import UploadFile from wordpress_xmlrpc.compat import xmlrpc_client url = 'http://my_website.blog/xmlrpc.php' username = 'MY_username' password = 'MY_password' def upload_image_to_wp(image_path): # 读取本地图片文件 with open(image_path, 'rb') as img_file: data = { 'name': 'post_thumbnail.jpg', # 自定义上传后的文件名 'type': 'image/jpeg', # 根据图片类型调整,png填image/png,webp填image/webp 'bits': xmlrpc_client.Binary(img_file.read()), 'overwrite': False # 禁止覆盖同名文件 } client = Client(url, username, password) # 上传图片到媒体库,返回附件详情 response = client.call(UploadFile(data)) # 提取并返回附件ID return response['id'] def send_post(title, content, image_path): client = Client(url, username, password) # 先上传图片获取附件ID thumbnail_id = upload_image_to_wp(image_path) post = WordPressPost() post.title = title post.content = content post.post_status = 'publish' post.slug = '' post.thumbnail = thumbnail_id # 这里传入附件ID而非图片URL client.call(NewPost(post)) # 调用示例:传入本地图片的路径 send_post("测试文章标题", "测试文章内容", "./test_cover.jpg")
注意事项
- 确保传入的图片路径正确,且Python进程有读取该文件的权限
- 如果要使用外部网络图片,需要先将图片下载到本地,再执行上传流程,WordPress无法直接将外部URL作为附件ID使用
内容的提问来源于stack exchange,提问作者Matin
相关产品推荐
相关产品推荐

