<?php require_once "functions.php"; include "config.php"; $Header("Setting Product Variation"); $r = rand(1, 9999999); $sr = rand(1, 5); $p = $sr * 1.25; $master_product_data = array('name' => "An API Created Variable Product", 'price' => $p, 'sku' => "API{$r}", 'visibility' => 'visible', 'product_type' => 'variable', 'type' => 'product', 'status' => 'instock', 'attributes' => array('size' => array('name' => 'Size', 'value' => array('Small', 'Medium', 'Large'), 'is_variation' => 'yes', 'is_visible' => 'yes', 'is_taxonomy' => 'no'))); // Try uploading an image $new_product_data = array('name' => "An API Created Product 203 Variation #1", 'price' => $p, 'sku' => "API{$r}V1", 'visibility' => 'visible', 'product_type' => 'simple', 'type' => 'product_variation', 'status' => 'instock', 'size_attribute' => 'small'); $new_product_data2 = array('name' => "An API Created Product 203 Variation #2", 'price' => $p, 'sku' => "API{$r}V2", 'visibility' => 'visible', 'product_type' => 'simple', 'type' => 'product_variation', 'status' => 'instock', 'size_attribute' => 'medium'); $master_product_data['variations'] = array($new_product_data, $new_product_data2); $data = array('action' => 'woocommerce_json_api', 'proc' => 'set_products', 'arguments' => array('token' => $token), 'payload' => array($master_product_data), 'model_filters' => array('WCAPI_product_meta_attributes_table' => array('size_attribute' => array('name' => 'attribute_size', 'type' => 'string', 'values' => array('small', 'medium', 'large'), 'sizehint' => 2)))); $result = curl_post($url, $data); $result = json_decode($result, true); $product = $result['payload'][0]; keyExists('variations', $product, 'Is the variations key set?'); hasAtLeast($product['variations'], 1, "Has at least 1 variation?");
/////////////////////////////////////////////////////////////////// // STEP 1: Get available categories. $data = array('action' => 'woocommerce_json_api', 'proc' => 'get_categories', 'arguments' => array('token' => $token)); $json = curl_post($url, $data); $result = json_decode($json, true); $categories = $result['payload']; // STEP 2: Get a product $data = array('action' => 'woocommerce_json_api', 'proc' => 'get_products', 'arguments' => array('token' => $token, 'per_page' => 2, 'page' => 1, 'order_by' => 'ID', 'order' => 'desc', 'include' => array('variations' => false, 'images' => false, 'featured_image' => false, 'reviews' => false))); $json = curl_post($url, $data); $result = json_decode($json, true); $products = $result['payload']; // STEP 3: Assign a category to the product you want $category_count = count($products[0]['categories']); $products[0]['categories'][] = $categories[0]; // STEP 4: Send it back to the server: $result['payload'] = array($products[0]); $result['proc'] = 'set_products'; $json = curl_post($url, $result); $result = json_decode($json, true); $products = $result['payload']; hasAtLeast($products[0]['categories'], $category_count + 1, "Was the category connected?"); /////////////////////////////////////////////////////// // Disconnecting a Category from a Product // ////////////////////////////////////////////////////// $products[0]['categories'][0]['__disconnect__'] = true; $result['payload'] = array($products[0]); $result['proc'] = 'set_products'; $json = curl_post($url, $result); $result = json_decode($json, true); $products = $result['payload']; equal(true, $products[0]['categories'][0]['__disconnected__'], 'Was the category disconnected?');