Creé este pequeño script para crear publicaciones de wordpres, usando autenticación básica, y funciona. El problema es cuando trato de asignar varias categorías a una publicación.
la referencia es bonita impreciso. Dice que el categories
el campo debe ser una matriz. Pero no especifica si debe ser una matriz de category
objetos o si el id
de estas categorías se debe pasar al campo.
https://developer.wordpress.org/rest-api/reference/posts/#schema-categories
Así que traté de hacer que fallara para poder obtener más información de un mensaje de excepción. El mensaje de excepción dice algo como categories[0] is not an integer
Así que probé con una lista de enteros. Y luego, funciona. Pero solo se asigna una categoría, solo la última categoría de la lista.
Entonces, ¿cómo agrego más categorías a una publicación?
N1: Categorías con identificación 13
y 16
en realidad existe en mi instalación de wordpress.
N2: Sé que podría crear un borrador, luego crear nuevas solicitudes para crear categorías y luego usar un punto final de publicación de actualización para asignar categorías a las publicaciones… Pero en teoría, debería ser posible pasar varias categorías simplemente creando la publicación, ya que está en la referencia xdd
N3: No me importa la seguridad. No es un requisito.
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":[] ...
Hasta que comprenda cómo usar múltiples taxonomías con la API REST de WP. Usaré xmlrpc como solución alternativa. Usando algo como: gist.github.com/jeflopo/a1143e4dda496443c95f218f5bf6ae39
– Jeflopo
28 de abril de 2017 a las 10:53
No puedo instalar bibliotecas, ¿cómo hacer eso?
– ehsan shirzadi
31 de enero de 2018 a las 9:22
@ehsanshirzadi Si te refieres a
base64
yrequests
estas son bibliotecas de python, por lo que necesita instalar python y luego usar la línea de comandopip install <library_name>
– Jeflopo
3 de marzo de 2018 a las 22:21