Как придать значение атрибуту продукта с помощью API woocommerce в python - PullRequest
0 голосов
/ 09 марта 2020

Моя цель - придать значение специально созданному атрибуту продукта с использованием API woocommerce.

Но я не знаю, как это сделать. Официальная документация API https://woocommerce.github.io/woocommerce-rest-api-docs/?python#create -a-product-attribute ничего не упоминает об этом.

Я делал создание так:

product_attributes = {
    "attributes": [
        {
            "name" : "color",
            "slug":"color_slug",
            "visible": True,
            "options": [
              "blue",
              "black",
            ]
        }
    ]
    }
wcapi_yachtcharterapp.post("products/attributes", product_attributes).json()

и обновление выглядит так:

product_attributes = {
    "attributes": [
        {
            "name" : "color",
            "slug":"color_slug",
            "visible": True,
            "options": [
              "blue",
              "black",
            ]
        }
    ]
    }
wcapi_yachtcharterapp.put("products/attributes/"+str(post_id), product_attributes).json()

, но ничего не работает.

Я предполагаю, что мне нужно сначала создать атрибут, а затем дать значение.

Есть кто-нибудь идея как это сделать?

1 Ответ

0 голосов
/ 13 марта 2020

Сначала нужно добавить атрибут, а затем условия атрибута. Это нужно сделать в разных конечных точках. Вот как я это делаю:

import yaml
from woocommerce import API
from pprint import pprint
from collections import ChainMap


class WOO_API():
 def __init__(self):
    with open("config.yml", "r") as ymlfile:
        cfg = yaml.full_load(ymlfile)

    self.API = API(
    url=cfg['woocommerce']['url'], # Your store URL
    consumer_key=cfg['woocommerce']['consumer_key'], # Your consumer key
    consumer_secret=cfg['woocommerce']['consumer_secret'], # Your consumer secret
    wp_api=True, # Enable the WP REST API integration
    version="wc/v3" # WooCommerce WP REST API version
    )

 def retrieve_attributes(self):
    return self.API.get("products/attributes").json()

 def add_attribute(self,
                   name,
                   slug,
                   tp="select", 
                   order_by="menu_order", 
                                    has_archives=True):
    data = {
        "name": name,
        "slug": slug,
        "type": tp,
        "order_by": order_by,
        "has_archives": has_archives
    }
    return self.API.post("products/attributes", data).json()

 def retrive_attribute_terms(self, id):
    parameters = {
        'per_page': 100
    }
    return self.API.get("products/attributes/"+id+"/terms", params=parameters).json()

 def add_attribute_terms(self, name, id):
    data = {
        'name' : name
    }
    return self.API.post("products/attributes/"+id+"/terms", data).json()

Идентификатор, используемый в терминах атрибута Конечная точка - это идентификатор атрибута.

Надеюсь, это поможет!

...