Soporte » Plugins y Hacks » WooCommerce » Cómo agregar categorias API v3

  • Resuelto pecannut

    (@pecannut)


    Buenas. Estoy teniendo problemas al momento de crear un producto mediante la api de wc.
    Resulta que estoy tratando de crear un producto usando este wrapper para java https://github.com/omandryk/wc-api-java el cual toma los atributos en de un map y con eso hace la request. El problema ocurre cuando quiero agregar las categorías por ejemplo, en donde me tira un error que dice «categories»: «categories[0] no es del tipo object.»

    Según lo que leí en la documentación, categories debe ser del tipo array pero no consigo que funcione si en el map agrego el par («categories», arr) siendo arr el array de objects con valor arr[0] = <id categoria>

    Segun entiendo, estas request también pueden hacerse mediante postman pero ahí me sucede lo mismo.. no logro hallar la manera de pasar las categorias mediante el parametro «categories» puesto que me sigue saltando el mismo error.

    Espero haberme explicado claro. Gracias de antemano

Viendo 2 respuestas - de la 1 a la 2 (de un total de 2)
  • Moderador Mariano Perez

    (@mpcdigital)

    Lo primero es saber si estás usando la última versión de WordPress ya que es la única que tiene REST API para escribir (antes había que usar un plugin aparte).
    Esta es la referencia: https://developer.wordpress.org/rest-api/reference/categories/

    Intenta nombrar al id por nombre en vez de por arr[0], puede que no sea el primero.

    Iniciador del debate pecannut

    (@pecannut)

    Gracias por tu respuesta.

    Al final pude encontrarle la vuelta, voy a explicar como lo hice por si alguien más se topa con esta duda.

    La documentación solo dice que ‘categories’ tiene que ser un Array, pero si se está usando el wrapper para java entonces debe ser un array de Object. Luego, el array debe cargarse con un Map<String, Object> por cada entrada del tipo «id»: 9 por ejemplo. Entonces, si yo tuviera 3 categorías con id’s 1, 2 y 3, el Array sería de tamaño 3 y tendría en cada celda un map con el siguiente par (clave, valor): («id», <numero id>).
    Por ejemplo, yo tenía un producto con una sola categoría con id=9. Esto me quedó de la siguiente manera:

    Object[] categorias = new Object[1];
    Map<String, Object> cat1 = new HashMap<>();
    cat1.put("id", "9");
    categorias[0] = cat1;

    Finalmente añadimos «categorias» al mapa de parámetros que usaremos en la request (el par ‘categories’,categorias) y listo.

    Tuve un problema similar para cargar el campo «attributes». El parámetro attributes tiene que ser un array de Object, y cada celda debe contener un Map<String, Object> con los pares correspondientes como por ejemplo (‘name’, «color») o («visible», true).
    En particular el campo «options» debe ser cargado con un Array de String. Entonces, esa entrada en particular nos quedaría («options», arrayOpciones) donde arrayOpciones seria el array de string.

    Espero que haya quedado claro, sino quien tenga dudas me pregunta. Saludos

Viendo 2 respuestas - de la 1 a la 2 (de un total de 2)
  • El debate ‘Cómo agregar categorias API v3’ está cerrado a nuevas respuestas.