欢迎光临
我们一直在努力

Python通过REST API向wordpress插入文章

Python通过REST API向wordpress插入文章

先安装REST API Authentication for WP – JWT Auth, Basic Auth 插件, 插件市场搜索Basic Auth 橘色圆形图标, 安装完成 点击配置 获取Authorization Basic

def request_create_post_api(title, cid, content, imgUrl):
    # 配置信息
    site_url = ''  #wordpress 地址 http://dojava.cn

    url = f"{site_url}/wp-json/wp/v2/posts"
    headers = {
        "Content-Type": "application/json",
        "Authorization": "Basic YWRtaW46YXNkMTIzNDU1"  # 使用Basic Auth
    }
    data = {
        "title": "文章标题",
        "content": "文章内容",
        "status": "publish",
        "categories": [cid,cid],  # 分类ID 
        "featured_media": upload_image_from_url(imgUrl)
    }
    response = requests.post(url, json=data, headers=headers)
    print("post创建结果==", response.json())
    return response.json()

封面图上传 返回媒体ID


def upload_image_from_url(image_url, alt_text="文章封面图"):
    """
    从远程URL直接上传图片到WordPress媒体库
    返回媒体ID
    """
    try:
        # 从环境变量获取配置
        site_url = ''  #wordpress 地址 http://dojava.cn

        # 获取图片信息
        head_response = requests.head(image_url, allow_redirects=True, timeout=10)
        head_response.raise_for_status()

        # 从响应头获取内容类型
        content_type = head_response.headers.get('Content-Type', 'image/jpeg')

        # 生成唯一文件名
        parsed_url = urlparse(image_url)
        filename = os.path.basename(parsed_url.path) or f"{uuid.uuid4()}.jpg"

        # 下载图片内容
        response = requests.get(image_url, stream=True, timeout=30)
        response.raise_for_status()

        # 准备上传请求
        upload_url = f"{site_url}/wp-json/wp/v2/media"
        headers = {
            'Authorization': 'Basic YWRtaW46YXNkMTIzNDU1',
            'Content-Disposition': f'attachment; filename="{filename}"',
            'Content-Type': content_type
        }

        # 直接上传图片内容
        upload_response = requests.post(
            upload_url,
            headers=headers,
            data=response.content
        )
        upload_response.raise_for_status()

        # 处理响应
        media_data = upload_response.json()
        media_id = media_data['id']

        print(f"✅ 远程图片上传成功! ID: {media_id} | URL: {image_url}")
        return media_id

    except requests.exceptions.RequestException as e:
        print(f"❌ 远程图片上传失败: {str(e)} | URL: {image_url}")
        return None
    except Exception as e:
        print(f"❌ 其他错误: {str(e)}")
        return None

赞(0) 打赏
未经允许不得转载:Fang' 的博客 » Python通过REST API向wordpress插入文章

评论 抢沙发

更好的WordPress主题

支持快讯、专题、百度收录推送、人机验证、多级分类筛选器,适用于垂直站点、科技博客、个人站,扁平化设计、简洁白色、超多功能配置、会员中心、直达链接、文章图片弹窗、自动缩略图等...

联系我们联系我们

觉得文章有用就打赏一下文章作者

非常感谢你的打赏,我们将继续提供更多优质内容,让我们一起创建更加美好的网络世界!

支付宝扫一扫

微信扫一扫

登录

找回密码

注册