0

I am trying to get alt text of featured image using rest api and python.

Here is my code:

 media = {
 "file": open(f"images/{filename}", "rb"),
 "caption": "caption",
 "description": "description",
 "alt_text": "Custom Alt Text",
 }
upload_image = requests.post(url + "/media", headers=headers, files=media)

Everything works fine instead of alt text. It keeps blank.

Anyone, please help me if I did anything wrong or missed something?

Thanks

1 Answer 1

2

As I saw your code, I think you want to set alt_text for the image.

If you want to upload an image by using WordPress REST API and set an alt_text for it, you can use the following function:

import os
import base64
import requests
from pathlib import Path

# WordPress authentication
WP_URL = 'xxxxxxxxx/wp-json/wp/v2'
WP_USERNAME = 'xxxxx'
WP_PASSWORD = 'xxxxxxxxxxxxxxx'
WP_CREDS = WP_USERNAME + ':' + WP_PASSWORD
WP_TOKEN = base64.b64encode(WP_CREDS.encode())
WP_HEADER = {"Authorization":"Basic " + WP_TOKEN.decode("utf-8")}

def img_upload(img_path, my_alt_text):
    image_extension = Path(img_path).suffix
    if image_extension != '.jpg':
        img_path = img_path.replace(image_extension, '.jpg')

    image_name = os.path.basename(img_path)
    
    data = open(imgPath, 'rb').read()
    
    img_header = { 'Content-Type': 'image/jpg','Content-Disposition' : 'attachment; filename=%s'% image_name}
    
    # Upload the image
    image_json = requests.post(WP_URL + '/media/' , data=data, headers=img_header,
                             auth=(WP_USERNAME, WP_PASSWORD)).json()
    
    # Update the uploaded image data
    update_image = {'alt_text': my_alt_text}
    updated_image_json = requests.post(WP_URL + '/media/' + str(image_json['id']),
                                    headers=WP_HEADER, json=update_image).json()

    return updated_image_json
Sign up to request clarification or add additional context in comments.

Comments

Your Answer

By clicking “Post Your Answer”, you agree to our terms of service and acknowledge you have read our privacy policy.

Start asking to get answers

Find the answer to your question by asking.

Ask question

Explore related questions

See similar questions with these tags.