$headers )); if (is_wp_error($wp_response)) { return false; } $products = json_decode(wp_remote_retrieve_body($wp_response), true); if (!is_array($products)) { return false; } $formatted_products = array(); foreach ($products as $product) { $formatted_products[] = array( 'id' => $product['id'], 'name' => $product['name'], 'slug' => $product['slug'], 'sku' => $product['sku'], 'type' => $product['type'], 'status' => $product['status'], 'description' => $product['description'], 'short_description' => $product['short_description'], 'price' => $product['price'], 'regular_price' => $product['regular_price'], 'sale_price' => $product['sale_price'], 'on_sale' => $product['on_sale'], 'stock_status' => $product['stock_status'], 'stock_quantity' => $product['stock_quantity'], 'categories' => $product['categories'] ?? array(), 'tags' => $product['tags'] ?? array(), 'images' => $product['images'] ?? array(), 'attributes' => $product['attributes'] ?? array(), 'variations' => $product['variations'] ?? array(), 'url' => $product['permalink'] ); } return $formatted_products; } /** * Fetch WooCommerce product categories * * @param int $per_page Categories per page * @return array|false Formatted categories array or false on failure */ function igny8_fetch_product_categories($per_page = 100) { if (!igny8_is_woocommerce_active()) { return false; } $consumer_key = get_option('woocommerce_api_consumer_key', ''); $consumer_secret = get_option('woocommerce_api_consumer_secret', ''); $headers = array(); if ($consumer_key && $consumer_secret) { $headers['Authorization'] = 'Basic ' . base64_encode($consumer_key . ':' . $consumer_secret); } $wp_response = wp_remote_get(sprintf( '%s/wp-json/wc/v3/products/categories?per_page=%d', get_site_url(), $per_page ), array( 'headers' => $headers )); if (is_wp_error($wp_response)) { return false; } $categories = json_decode(wp_remote_retrieve_body($wp_response), true); if (!is_array($categories)) { return false; } $formatted_categories = array(); foreach ($categories as $category) { $formatted_categories[] = array( 'id' => $category['id'], 'name' => $category['name'], 'slug' => $category['slug'], 'description' => $category['description'] ?? '', 'count' => $category['count'], 'parent' => $category['parent'] ?? 0, 'image' => $category['image']['src'] ?? null ); } return $formatted_categories; } /** * Fetch WooCommerce product attributes * * @return array|false Formatted attributes array or false on failure */ function igny8_fetch_product_attributes() { if (!igny8_is_woocommerce_active()) { return false; } $consumer_key = get_option('woocommerce_api_consumer_key', ''); $consumer_secret = get_option('woocommerce_api_consumer_secret', ''); $headers = array(); if ($consumer_key && $consumer_secret) { $headers['Authorization'] = 'Basic ' . base64_encode($consumer_key . ':' . $consumer_secret); } $wp_response = wp_remote_get( get_site_url() . '/wp-json/wc/v3/products/attributes', array( 'headers' => $headers ) ); if (is_wp_error($wp_response)) { return false; } $attributes = json_decode(wp_remote_retrieve_body($wp_response), true); if (!is_array($attributes)) { return false; } $formatted_attributes = array(); foreach ($attributes as $attribute) { // Get attribute terms $terms_response = wp_remote_get(sprintf( '%s/wp-json/wc/v3/products/attributes/%d/terms', get_site_url(), $attribute['id'] ), array( 'headers' => $headers )); $terms = array(); if (!is_wp_error($terms_response)) { $terms_data = json_decode(wp_remote_retrieve_body($terms_response), true); if (is_array($terms_data)) { foreach ($terms_data as $term) { $terms[] = array( 'id' => $term['id'], 'name' => $term['name'], 'slug' => $term['slug'] ); } } } $formatted_attributes[] = array( 'id' => $attribute['id'], 'name' => $attribute['name'], 'slug' => $attribute['slug'], 'type' => $attribute['type'], 'order_by' => $attribute['order_by'], 'has_archives' => $attribute['has_archives'], 'terms' => $terms ); } return $formatted_attributes; }