You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

使用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

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.09 06:41:32