/** * Gte woocommerce data for product * * @param $value * @param $data * * @return string */ function vc_gitem_template_attribute_woocommerce_product($value, $data) { $label = ''; /** * @var null|Wp_Post $post ; * @var string $data ; */ extract(array_merge(array('post' => null, 'data' => ''), $data)); require_once WC()->plugin_path() . '/includes/abstracts/abstract-wc-product.php'; $product = new WC_Product($post); if (preg_match('/_labeled$/', $data)) { $data = preg_replace('/_labeled$/', '', $data); $label = apply_filters('vc_gitem_template_attribute_woocommerce_product_' . $data . '_label', Vc_Vendor_Woocommerce::getProductFieldLabel($data) . ': '); } $price_format = get_woocommerce_price_format(); switch ($data) { case 'id': $value = (int) $product->is_type('variation') ? $product->get_variation_id() : $product->id; break; case 'sku': $value = $product->get_sku(); break; case 'price': $value = sprintf($price_format, wc_format_decimal($product->get_price(), 2), get_woocommerce_currency()); break; case 'regular_price': $value = sprintf($price_format, wc_format_decimal($product->get_regular_price(), 2), get_woocommerce_currency()); break; case 'sale_price': $value = sprintf(get_woocommerce_price_format(), $product->get_sale_price() ? wc_format_decimal($product->get_sale_price(), 2) : '', get_woocommerce_currency()); break; case 'price_html': $value = $product->get_price_html(); break; case 'reviews_count': $value = count(get_comments(array('post_id' => $post->ID, 'approve' => 'approve'))); break; case 'short_description': $value = apply_filters('woocommerce_short_description', $product->get_post_data()->post_excerpt); break; case 'dimensions': $units = get_option('woocommerce_dimension_unit'); $value = $product->length . $units . 'x' . $product->width . $units . 'x' . $product->height . $units; break; case 'raiting_count': $value = $product->get_rating_count(); break; case 'weight': $value = $product->get_weight() ? wc_format_decimal($product->get_weight(), 2) : ''; break; case 'on_sale': $value = $product->is_on_sale() ? 'yes' : 'no'; // @todo change break; default: $value = $product->{$data}; } return strlen($value) > 0 ? $label . apply_filters('vc_gitem_template_attribute_woocommerce_product_' . $data . '_value', $value) : ''; }
/** * Get standard product data that applies to every product type * * @since 2.1 * @param WC_Product $product * @return array */ private function get_product_data($product) { return array('title' => $product->get_name(), 'id' => $product->get_id(), 'created_at' => $this->server->format_datetime($product->get_date_created(), false, true), 'updated_at' => $this->server->format_datetime($product->get_date_modified(), false, true), 'type' => $product->get_type(), 'status' => $product->get_status(), 'downloadable' => $product->is_downloadable(), 'virtual' => $product->is_virtual(), 'permalink' => $product->get_permalink(), 'sku' => $product->get_sku(), 'price' => wc_format_decimal($product->get_price(), 2), 'regular_price' => wc_format_decimal($product->get_regular_price(), 2), 'sale_price' => $product->get_sale_price() ? wc_format_decimal($product->get_sale_price(), 2) : null, 'price_html' => $product->get_price_html(), 'taxable' => $product->is_taxable(), 'tax_status' => $product->get_tax_status(), 'tax_class' => $product->get_tax_class(), 'managing_stock' => $product->managing_stock(), 'stock_quantity' => $product->get_stock_quantity(), 'in_stock' => $product->is_in_stock(), 'backorders_allowed' => $product->backorders_allowed(), 'backordered' => $product->is_on_backorder(), 'sold_individually' => $product->is_sold_individually(), 'purchaseable' => $product->is_purchasable(), 'featured' => $product->is_featured(), 'visible' => $product->is_visible(), 'catalog_visibility' => $product->get_catalog_visibility(), 'on_sale' => $product->is_on_sale(), 'weight' => $product->get_weight() ? wc_format_decimal($product->get_weight(), 2) : null, 'dimensions' => array('length' => $product->get_length(), 'width' => $product->get_width(), 'height' => $product->get_height(), 'unit' => get_option('woocommerce_dimension_unit')), 'shipping_required' => $product->needs_shipping(), 'shipping_taxable' => $product->is_shipping_taxable(), 'shipping_class' => $product->get_shipping_class(), 'shipping_class_id' => 0 !== $product->get_shipping_class_id() ? $product->get_shipping_class_id() : null, 'description' => apply_filters('the_content', $product->get_description()), 'short_description' => apply_filters('woocommerce_short_description', $product->get_short_description()), 'reviews_allowed' => $product->get_reviews_allowed(), 'average_rating' => wc_format_decimal($product->get_average_rating(), 2), 'rating_count' => $product->get_rating_count(), 'related_ids' => array_map('absint', array_values(wc_get_related_products($product->get_id()))), 'upsell_ids' => array_map('absint', $product->get_upsell_ids()), 'cross_sell_ids' => array_map('absint', $product->get_cross_sell_ids()), 'categories' => wc_get_object_terms($product->get_id(), 'product_cat', 'name'), 'tags' => wc_get_object_terms($product->get_id(), 'product_tag', 'name'), 'images' => $this->get_images($product), 'featured_src' => wp_get_attachment_url(get_post_thumbnail_id($product->get_id())), 'attributes' => $this->get_attributes($product), 'downloads' => $this->get_downloads($product), 'download_limit' => $product->get_download_limit(), 'download_expiry' => $product->get_download_expiry(), 'download_type' => 'standard', 'purchase_note' => apply_filters('the_content', $product->get_purchase_note()), 'total_sales' => $product->get_total_sales(), 'variations' => array(), 'parent' => array()); }
/** * Get standard product data that applies to every product type * * @since 2.1 * @param WC_Product $product * @return WC_Product */ private function get_product_data($product) { return array('title' => $product->get_title(), 'id' => (int) $product->is_type('variation') ? $product->get_variation_id() : $product->id, 'created_at' => $this->server->format_datetime($product->get_post_data()->post_date_gmt), 'updated_at' => $this->server->format_datetime($product->get_post_data()->post_modified_gmt), 'type' => $product->product_type, 'status' => $product->get_post_data()->post_status, 'downloadable' => $product->is_downloadable(), 'virtual' => $product->is_virtual(), 'permalink' => $product->get_permalink(), 'sku' => $product->get_sku(), 'price' => $product->get_price(), 'regular_price' => $product->get_regular_price(), 'sale_price' => $product->get_sale_price() ? $product->get_sale_price() : null, 'price_html' => $product->get_price_html(), 'taxable' => $product->is_taxable(), 'tax_status' => $product->get_tax_status(), 'tax_class' => $product->get_tax_class(), 'managing_stock' => $product->managing_stock(), 'stock_quantity' => $product->get_stock_quantity(), 'in_stock' => $product->is_in_stock(), 'backorders_allowed' => $product->backorders_allowed(), 'backordered' => $product->is_on_backorder(), 'sold_individually' => $product->is_sold_individually(), 'purchaseable' => $product->is_purchasable(), 'featured' => $product->is_featured(), 'visible' => $product->is_visible(), 'catalog_visibility' => $product->visibility, 'on_sale' => $product->is_on_sale(), 'product_url' => $product->is_type('external') ? $product->get_product_url() : '', 'button_text' => $product->is_type('external') ? $product->get_button_text() : '', 'weight' => $product->get_weight() ? $product->get_weight() : null, 'dimensions' => array('length' => $product->length, 'width' => $product->width, 'height' => $product->height, 'unit' => get_option('woocommerce_dimension_unit')), 'shipping_required' => $product->needs_shipping(), 'shipping_taxable' => $product->is_shipping_taxable(), 'shipping_class' => $product->get_shipping_class(), 'shipping_class_id' => 0 !== $product->get_shipping_class_id() ? $product->get_shipping_class_id() : null, 'description' => wpautop(do_shortcode($product->get_post_data()->post_content)), 'short_description' => apply_filters('woocommerce_short_description', $product->get_post_data()->post_excerpt), 'reviews_allowed' => 'open' === $product->get_post_data()->comment_status, 'average_rating' => wc_format_decimal($product->get_average_rating(), 2), 'rating_count' => (int) $product->get_rating_count(), 'related_ids' => array_map('absint', array_values($product->get_related())), 'upsell_ids' => array_map('absint', $product->get_upsells()), 'cross_sell_ids' => array_map('absint', $product->get_cross_sells()), 'parent_id' => $product->post->post_parent, 'categories' => wp_get_post_terms($product->id, 'product_cat', array('fields' => 'names')), 'tags' => wp_get_post_terms($product->id, 'product_tag', array('fields' => 'names')), 'images' => $this->get_images($product), 'featured_src' => (string) wp_get_attachment_url(get_post_thumbnail_id($product->is_type('variation') ? $product->variation_id : $product->id)), 'attributes' => $this->get_attributes($product), 'downloads' => $this->get_downloads($product), 'download_limit' => (int) $product->download_limit, 'download_expiry' => (int) $product->download_expiry, 'download_type' => $product->download_type, 'purchase_note' => wpautop(do_shortcode(wp_kses_post($product->purchase_note))), 'total_sales' => metadata_exists('post', $product->id, 'total_sales') ? (int) get_post_meta($product->id, 'total_sales', true) : 0, 'variations' => array(), 'parent' => array(), 'grouped_products' => array()); }
/** * Gets the weight of the product, if one is defined, in woocommerce product units * * @since 3.0 * @param WC_Product $product the product * @return WC_Price_Calculator_Measurement weight measurement for the product */ public static function get_weight_measurement($product) { return new WC_Price_Calculator_Measurement(get_option('woocommerce_weight_unit'), $product->get_weight(), 'weight', __('Weight', WC_Measurement_Price_Calculator::TEXT_DOMAIN)); }
/** * Get standard product data that applies to every product type * * @since 2.1 * @param WC_Product $product * @return WC_Product */ private function get_product_data($product, $fields = null) { if ($fields) { $field_list = explode(',', $fields); } $product_data = array(); if (!$fields || $fields && in_array('title', $field_list)) { $product_data['title'] = $product->get_title(); } if (!$fields || $fields && in_array('id', $field_list)) { $product_data['id'] = (int) $product->is_type('variation') ? $product->get_variation_id() : $product->id; } if (!$fields || $fields && in_array('created_at', $field_list)) { $product_data['created_at'] = $this->server->format_datetime($product->get_post_data()->post_date_gmt); } if (!$fields || $fields && in_array('updated_at', $field_list)) { $product_data['updated_at'] = $this->server->format_datetime($product->get_post_data()->post_modified_gmt); } if (!$fields || $fields && in_array('type', $field_list)) { $product_data['type'] = $product->product_type; } if (!$fields || $fields && in_array('status', $field_list)) { $product_data['status'] = $product->get_post_data()->post_status; } if (!$fields || $fields && in_array('downloadable', $field_list)) { $product_data['downloadable'] = $product->is_downloadable(); } if (!$fields || $fields && in_array('virtual', $field_list)) { $product_data['virtual'] = $product->is_virtual(); } if (!$fields || $fields && in_array('permalink', $field_list)) { $product_data['permalink'] = $product->get_permalink(); } if (!$fields || $fields && in_array('sku', $field_list)) { $product_data['sku'] = $product->get_sku(); } if (!$fields || $fields && in_array('price', $field_list)) { $product_data['price'] = $product->get_price(); } if (!$fields || $fields && in_array('regular_price', $field_list)) { $product_data['regular_price'] = $product->get_regular_price(); } if (!$fields || $fields && in_array('sale_price', $field_list)) { $product_data['sale_price'] = $product->get_sale_price() ? $product->get_sale_price() : null; } if (!$fields || $fields && in_array('price_html', $field_list)) { $product_data['price_html'] = $product->get_price_html(); } if (!$fields || $fields && in_array('taxable', $field_list)) { $product_data['taxable'] = $product->is_taxable(); } if (!$fields || $fields && in_array('tax_status', $field_list)) { $product_data['tax_status'] = $product->get_tax_status(); } if (!$fields || $fields && in_array('tax_class', $field_list)) { $product_data['tax_class'] = $product->get_tax_class(); } if (!$fields || $fields && in_array('managing_stock', $field_list)) { $product_data['managing_stock'] = $product->managing_stock(); } if (!$fields || $fields && in_array('stock_quantity', $field_list)) { $product_data['stock_quantity'] = $product->get_stock_quantity(); } if (!$fields || $fields && in_array('in_stock', $field_list)) { $product_data['in_stock'] = $product->is_in_stock(); } if (!$fields || $fields && in_array('backorders_allowed', $field_list)) { $product_data['backorders_allowed'] = $product->backorders_allowed(); } if (!$fields || $fields && in_array('backordered', $field_list)) { $product_data['backordered'] = $product->is_on_backorder(); } if (!$fields || $fields && in_array('sold_individually', $field_list)) { $product_data['sold_individually'] = $product->is_sold_individually(); } if (!$fields || $fields && in_array('purchaseable', $field_list)) { $product_data['purchaseable'] = $product->is_purchasable(); } if (!$fields || $fields && in_array('featured', $field_list)) { $product_data['featured'] = $product->is_featured(); } if (!$fields || $fields && in_array('visible', $field_list)) { $product_data['visible'] = $product->is_visible(); } if (!$fields || $fields && in_array('catalog_visibility', $field_list)) { $product_data['catalog_visibility'] = $product->visibility; } if (!$fields || $fields && in_array('on_sale', $field_list)) { $product_data['on_sale'] = $product->is_on_sale(); } if (!$fields || $fields && in_array('product_url', $field_list)) { $product_data['product_url'] = $product->is_type('external') ? $product->get_product_url() : ''; } if (!$fields || $fields && in_array('button_text', $field_list)) { $product_data['button_text'] = $product->is_type('external') ? $product->get_button_text() : ''; } if (!$fields || $fields && in_array('weight', $field_list)) { $product_data['weight'] = $product->get_weight() ? $product->get_weight() : null; } if (!$fields || $fields && in_array('dimensions', $field_list)) { $product_data['dimensions'] = array('length' => $product->length, 'width' => $product->width, 'height' => $product->height, 'unit' => get_option('woocommerce_dimension_unit')); } if (!$fields || $fields && in_array('shipping_required', $field_list)) { $product_data['shipping_required'] = $product->needs_shipping(); } if (!$fields || $fields && in_array('shipping_taxable', $field_list)) { $product_data['shipping_taxable'] = $product->is_shipping_taxable(); } if (!$fields || $fields && in_array('shipping_class', $field_list)) { $product_data['shipping_class'] = $product->get_shipping_class(); } if (!$fields || $fields && in_array('shipping_class_id', $field_list)) { $product_data['shipping_class_id'] = 0 !== $product->get_shipping_class_id() ? $product->get_shipping_class_id() : null; } if (!$fields || $fields && in_array('description', $field_list)) { $product_data['description'] = wpautop(do_shortcode($product->get_post_data()->post_content)); } if (!$fields || $fields && in_array('short_description', $field_list)) { $product_data['short_description'] = apply_filters('woocommerce_short_description', $product->get_post_data()->post_excerpt); } if (!$fields || $fields && in_array('reviews_allowed', $field_list)) { $product_data['reviews_allowed'] = 'open' === $product->get_post_data()->comment_status; } if (!$fields || $fields && in_array('average_rating', $field_list)) { $product_data['average_rating'] = wc_format_decimal($product->get_average_rating(), 2); } if (!$fields || $fields && in_array('rating_count', $field_list)) { $product_data['rating_count'] = (int) $product->get_rating_count(); } if (!$fields || $fields && in_array('related_ids', $field_list)) { $product_data['related_ids'] = array_map('absint', array_values($product->get_related())); } if (!$fields || $fields && in_array('upsell_ids', $field_list)) { $product_data['upsell_ids'] = array_map('absint', $product->get_upsells()); } if (!$fields || $fields && in_array('cross_sell_ids', $field_list)) { $product_data['cross_sell_ids'] = array_map('absint', $product->get_cross_sells()); } if (!$fields || $fields && in_array('parent_id', $field_list)) { $product_data['parent_id'] = $product->post->post_parent; } if (!$fields || $fields && in_array('categories', $field_list)) { $product_data['categories'] = wp_get_post_terms($product->id, 'product_cat', array('fields' => 'names')); } if (!$fields || $fields && in_array('tags', $field_list)) { $product_data['tags'] = wp_get_post_terms($product->id, 'product_tag', array('fields' => 'names')); } if (!$fields || $fields && in_array('images', $field_list)) { $product_data['images'] = $this->get_images($product); } if (!$fields || $fields && in_array('featured_src', $field_list)) { $product_data['featured_src'] = (string) wp_get_attachment_url(get_post_thumbnail_id($product->is_type('variation') ? $product->variation_id : $product->id)); } if (!$fields || $fields && in_array('attributes', $field_list)) { $product_data['attributes'] = $this->get_attributes($product); } if (!$fields || $fields && in_array('downloads', $field_list)) { $product_data['downloads'] = $this->get_downloads($product); } if (!$fields || $fields && in_array('download_limit', $field_list)) { $product_data['download_limit'] = (int) $product->download_limit; } if (!$fields || $fields && in_array('download_expiry', $field_list)) { $product_data['download_expiry'] = (int) $product->download_expiry; } if (!$fields || $fields && in_array('download_type', $field_list)) { $product_data['download_type'] = $product->download_type; } if (!$fields || $fields && in_array('purchase_note', $field_list)) { $product_data['purchase_note'] = wpautop(do_shortcode(wp_kses_post($product->purchase_note))); } if (!$fields || $fields && in_array('total_sales', $field_list)) { $product_data['total_sales'] = metadata_exists('post', $product->id, 'total_sales') ? (int) get_post_meta($product->id, 'total_sales', true) : 0; } if (!$fields || $fields && in_array('variations', $field_list)) { $product_data['variations'] = array(); } if (!$fields || $fields && in_array('parent', $field_list)) { $product_data['parent'] = array(); } if (!$fields || $fields && in_array('grouped_products', $field_list)) { $product_data['grouped_products'] = array(); } if (!$fields || $fields && in_array('menu_order', $field_list)) { $product_data['menu_order'] = $product->post->menu_order; } return $product_data; }
/** * Build a Google Shopping Content Product from a WC Product * @param WC_Product $wc_product * @return Google_Service_ShoppingContent_Product */ function woogle_build_product($wc_product) { // Create Google Shopping Content Product require_once plugin_dir_path(woogle_get_plugin_file()) . 'vendor/google-api-php-client/src/Google/Service/ShoppingContent.php'; $product = new Google_Service_ShoppingContent_Product(); // Custom Attributes $product_custom_attributes = array(); // Product identifiers $sku = $wc_product->get_sku(); if (empty($sku)) { if ($wc_product->is_type('variation')) { $product->setOfferId($wc_product->variation_id); } else { $product->setOfferId($wc_product->id); } } else { $product->setOfferId($sku); } if ($wc_product->is_type('variation')) { $product->setItemGroupId($wc_product->parent->id); } $woocommerce_id_attribute = new Google_Service_ShoppingContent_ProductCustomAttribute(); $woocommerce_id_attribute->setName('woocommerce_id'); $woocommerce_id_attribute->setValue($wc_product->id); $woocommerce_id_attribute->setType('int'); $product_custom_attributes[] = $woocommerce_id_attribute; // Title $woogle_title = get_post_meta($wc_product->id, '_woogle_title', true); if (!empty($woogle_title)) { $product->setTitle(html_entity_decode(strip_tags($woogle_title))); } else { $product->setTitle(html_entity_decode(strip_tags($wc_product->get_title()))); } // Description $woogle_description = get_post_meta($wc_product->id, '_woogle_description', true); if (!empty($woogle_description)) { $product->setDescription(html_entity_decode(strip_tags($woogle_description))); } else { $product->setDescription(html_entity_decode(strip_tags($wc_product->post->post_content))); } $product->setLink($wc_product->get_permalink()); $image = $wc_product->get_image(); $post_thumbnail_id = get_post_thumbnail_id($wc_product->id); if ($post_thumbnail_id) { $image_src = wp_get_attachment_image_src($post_thumbnail_id); $product->setImageLink(@$image_src[0]); } $product->setContentLanguage(substr(get_locale(), 0, 2)); $product->setTargetCountry(WC()->countries->get_base_country()); $product->setChannel('online'); $product->setAvailability($wc_product->is_in_stock() ? 'in stock' : 'out of stock'); // Condition $condition = get_post_meta($wc_product->id, '_woogle_condition', true); if (!empty($condition)) { $product->setCondition($condition); } else { $product->setcondition('new'); } // Category $category = get_post_meta($wc_product->id, '_woogle_category', true); if (!empty($category)) { $product->setGoogleProductCategory($category); } // Brand $brand = get_post_meta($wc_product->id, '_woogle_brand', true); if (!empty($brand)) { $product->setBrand($brand); } // GTIN $gtin = get_post_meta($wc_product->id, '_woogle_gtin', true); if (!empty($gtin)) { $product->setGtin($gtin); } // MPN $mpn = get_post_meta($wc_product->id, '_woogle_mpn', true); if (!empty($mpn)) { $product->setMpn($mpn); } if (empty($gtin) && empty($mpn)) { $product->setIdentifierExists(false); } // Price $price = new Google_Service_ShoppingContent_Price(); $price->setValue($wc_product->get_regular_price()); $price->setCurrency(get_woocommerce_currency()); $product->setPrice($price); // Sale price $wc_sale_price = $wc_product->get_sale_price(); if (!empty($wc_sale_price)) { $sale_price = new Google_Service_ShoppingContent_Price(); $sale_price->setValue($wc_sale_price); $sale_price->setCurrency(get_woocommerce_currency()); $product->setSalePrice($sale_price); $post_id = $wc_product->is_type('variation') ? $wc_product->variation_id : $wc_product->id; $sale_price_dates_from = get_post_meta($post_id, '_sale_price_dates_from', true); $sale_price_dates_to = get_post_meta($post_id, '_sale_price_dates_to', true); if (!empty($sale_price_dates_from) && !empty($sale_price_dates_to)) { $effective_date_start = date('c', intval($sale_price_dates_from)); $effective_date_end = date('c', intval($sale_price_dates_to)); $product->setSalePriceEffectiveDate("{$effective_date_start}/{$effective_date_end}"); } } // Shipping fields // Shipping weight $wc_product_weight = $wc_product->get_weight(); if (!empty($wc_product_weight)) { $shipping_weight = new Google_Service_ShoppingContent_ProductShippingWeight(); $shipping_weight->setValue($wc_product_weight); $shipping_weight->setUnit(get_option('woocommerce_weight_unit', 'kg')); $product->setShippingWeight($shipping_weight); } // Shipping dimensions $wc_dimension_unit = get_option('woocommerce_dimension_unit', 'cm'); $wc_product_length = $wc_product->get_length(); if (!empty($wc_product_length)) { $dimension = new Google_Service_ShoppingContent_ProductShippingDimension(); $dimension->setValue($wc_product_length); $dimension->setUnit($wc_dimension_unit); $product->setShippingLength($dimension); } $wc_product_width = $wc_product->get_width(); if (!empty($wc_product_width)) { $dimension = new Google_Service_ShoppingContent_ProductShippingDimension(); $dimension->setValue($wc_product_width); $dimension->setUnit($wc_dimension_unit); $product->setShippingWidth($dimension); } $wc_product_height = $wc_product->get_height(); if (!empty($wc_product_height)) { $dimension = new Google_Service_ShoppingContent_ProductShippingDimension(); $dimension->setValue($wc_product_height); $dimension->setUnit($wc_dimension_unit); $product->setShippingHeight($dimension); } // Attributes $color = null; $material = null; $pattern = null; $size = null; $age_group = null; $gender = null; $adult = null; if ($wc_product->is_type('variation')) { // Variable product $wc_variation_attributes = $wc_product->get_variation_attributes(); foreach ($wc_variation_attributes as $name => $value) { if (!empty($value)) { $attribute = new Google_Service_ShoppingContent_ProductCustomAttribute(); $attribute->setName($name); $attribute->setValue($value); $attribute->setType('text'); $product_custom_attributes[] = $attribute; // Google attributes if (empty($color)) { $color = woogle_maybe_get_attribute('color', $name, $value); } if (empty($material)) { $material = woogle_maybe_get_attribute('material', $name, $value); } if (empty($pattern)) { $pattern = woogle_maybe_get_attribute('pattern', $name, $value); } if (empty($size)) { $size = woogle_maybe_get_attribute('size', $name, $value); } if (empty($age_group)) { $age_group = woogle_maybe_get_attribute('age-group', $name, $value); } if (empty($gender)) { $gender = woogle_maybe_get_attribute('gender', $name, $value); } if (empty($adult)) { $adult = woogle_maybe_get_attribute('adult', $name, $value); } } } } else { // Simple product $wc_attributes = $wc_product->get_attributes(); foreach ($wc_attributes as $name => $wc_attribute) { if ($wc_attribute['is_taxonomy']) { $term_values = array(); $terms = wp_get_post_terms($wc_product->id, $name); foreach ($terms as $term) { $term_values[] = $term->slug; } if (!empty($term_values)) { $value = implode(',', $term_values); $attribute = new Google_Service_ShoppingContent_ProductCustomAttribute(); $attribute->setName($name); $attribute->setValue($value); $attribute->setType('text'); $product_custom_attributes[] = $attribute; // Google attributes if (empty($color)) { $color = woogle_maybe_get_attribute('color', $name, $value); } if (empty($material)) { $material = woogle_maybe_get_attribute('material', $name, $value); } if (empty($pattern)) { $pattern = woogle_maybe_get_attribute('pattern', $name, $value); } if (empty($size)) { $size = woogle_maybe_get_attribute('size', $name, $value); } if (empty($age_group)) { $age_group = woogle_maybe_get_attribute('age-group', $name, $value); } if (empty($gender)) { $gender = woogle_maybe_get_attribute('gender', $name, $value); } if (empty($adult)) { $adult = woogle_maybe_get_attribute('adult', $name, $value); } } } } } /* * Physical properties */ // Color if (empty($color)) { $color = get_post_meta($wc_product->id, '_woogle_color', true); } if (!empty($color)) { $product->setColor($color); } // Material if (empty($material)) { $material = get_post_meta($wc_product->id, '_woogle_material', true); } if (!empty($material)) { $product->setMaterial($material); } // Pattern if (empty($pattern)) { $pattern = get_post_meta($wc_product->id, '_woogle_pattern', true); } if (!empty($pattern)) { $product->setPattern($pattern); } // Size if (empty($size)) { $size = get_post_meta($wc_product->id, '_woogle_size', true); } if (!empty($size)) { $product->setSizes(explode(', ', $size)); $product->setSizeSystem(WC()->countries->get_base_country()); } /* * Target consumer */ // Age Group if (empty($age_group)) { $age_group = get_post_meta($wc_product->id, '_woogle_age_group', true); } if (!empty($age_group)) { $product->setAgeGroup($age_group); } // Gender if (empty($gender)) { $gender = get_post_meta($wc_product->id, '_woogle_gender', true); } if (!empty($gender)) { $product->setGender($gender); } // Gender if (empty($adult)) { $adult = get_post_meta($wc_product->id, '_woogle_adult', true); } if (!empty($adult) && $adult != 'no') { $product->setAdult(true); } $product->setCustomAttributes($product_custom_attributes); return $product; }