Я создал этот небольшой скрипт для создания сообщений wordpres, используя Basic Auth, и он работает. Проблема в том, что я пытаюсь назначить посту несколько категорий.
Ссылка довольно расплывчата. В нем говорится, что поле categories
должно быть массивом. Но он не указывает, должен ли это быть массив из category
объектов или id
из этих категорий должны быть переданы в поле. https://developer.wordpress.org/rest-api/reference/posts/#schema-categories
Поэтому я попытался сделать это неудачно, чтобы получить дополнительную информацию из сообщения об исключении. Сообщение об исключении говорит что-то вроде categories[0] is not an integer
Итак, я попробовал со списком целых чисел. И тогда это работает. Но присваивается только одна категория, только последняя категория в списке.
Итак, как мне добавить больше категорий к сообщению?
N1: Категории с идентификаторами 13
и 16
действительно существуют в моей установке Wordpress.
N2: Я знаю, что могу создать черновик, а затем создать новые запросы для создания категорий, а затем использовать конечную точку обновления публикации для назначения категорий публикациям ... Но теоретически должна быть возможность передать несколько категории, просто создающие сообщение, так как в ссылке xd
N3: Меня не волнует безопасность. Это не требование.
import base64
import requests
r = requests.session()
wp_host = 'wphost.dev'
wp_username = 'FIXME'
wp_password = 'FIXME'
# BUILD BASIC AUTH STRING
basic_auth = str(
base64.b64encode('{user}:{passwd}'.format(
user=wp_username,
passwd=wp_password
).encode()
), 'utf-8')
# PARAMETERS TO POST REQUEST
p = {
'url': 'http://{wp_host}/wp-json/wp/v2/posts'.format(wp_host=wp_host),
'headers': {'Authorization': 'Basic {basic_auth}'.format(basic_auth=basic_auth)},
'data': {
'title': 'My title',
'content': 'My content',
'categories': [13, 16],
'status': 'publish',
},
}
# THE REQUEST ITSELF
r = r.post(url=p['url'], headers=p['headers'], data=p['data'])
# Output
print(r.content)
# ... "categories":[16],"tags":[] ...
base64
иrequests
, это библиотеки python, поэтому вам нужно установить python, а затем из командной строки использоватьpip install <library_name>
- person Jeflopo   schedule 04.03.2018