function woo_ce_extend_order_fields($fields = array()) { // Product Add-ons - http://www.woothemes.com/ if (class_exists('Product_Addon_Admin') || class_exists('Product_Addon_Display')) { $product_addons = woo_ce_get_product_addons(); if (!empty($product_addons)) { foreach ($product_addons as $product_addon) { if (!empty($product_addon)) { $fields[] = array('name' => sprintf('order_items_product_addon_%s', $product_addon->post_name), 'label' => sprintf(__('Order Items: %s', 'woo_ce'), ucfirst($product_addon->post_title)), 'hover' => sprintf(apply_filters('woo_ce_extend_order_fields_product_addons', '%s: %s'), __('Product Add-ons', 'woo_ce'), $product_addon->form_title)); } } } unset($product_addons, $product_addon); } // WooCommerce Sequential Order Numbers - http://www.skyverge.com/blog/woocommerce-sequential-order-numbers/ // Sequential Order Numbers Pro - http://www.woothemes.com/products/sequential-order-numbers-pro/ if (class_exists('WC_Seq_Order_Number') || class_exists('WC_Seq_Order_Number_Pro')) { $fields[] = array('name' => 'order_number', 'label' => __('Order Number', 'woo_ce')); } // WooCommerce Print Invoice & Delivery Note - https://wordpress.org/plugins/woocommerce-delivery-notes/ if (class_exists('WooCommerce_Delivery_Notes')) { $fields[] = array('name' => 'invoice_number', 'label' => __('Invoice Number', 'woo_ce')); $fields[] = array('name' => 'invoice_date', 'label' => __('Invoice Date', 'woo_ce')); } // WooCommerce PDF Invoices & Packing Slips - http://www.wpovernight.com if (class_exists('WooCommerce_PDF_Invoices')) { $fields[] = array('name' => 'pdf_invoice_number', 'label' => __('PDF Invoice Number', 'woo_ce')); $fields[] = array('name' => 'pdf_invoice_date', 'label' => __('PDF Invoice Date', 'woo_ce')); } // WooCommerce Checkout Manager - http://wordpress.org/plugins/woocommerce-checkout-manager/ // WooCommerce Checkout Manager Pro - http://www.trottyzone.com/product/woocommerce-checkout-manager-pro if (function_exists('wccs_install') || function_exists('wccs_install_pro')) { $options = get_option('wccs_settings'); if (isset($options['buttons'])) { $buttons = $options['buttons']; if (!empty($buttons)) { $header = $buttons[0]['type'] == 'heading' ? $buttons[0]['label'] : false; foreach ($buttons as $button) { if ($button['type'] == 'heading') { continue; } $fields[] = array('name' => $button['label'], 'label' => !empty($header) ? sprintf(apply_filters('woo_ce_extend_order_fields_wccs', '%s: %s'), ucfirst($header), ucfirst($button['label'])) : ucfirst($button['label'])); } unset($buttons, $button, $header); } } unset($options); } // Poor Guys Swiss Knife - http://wordpress.org/plugins/woocommerce-poor-guys-swiss-knife/ if (function_exists('wcpgsk_init')) { $options = get_option('wcpgsk_settings'); $billing_fields = isset($options['woofields']['billing']) ? $options['woofields']['billing'] : array(); $shipping_fields = isset($options['woofields']['shipping']) ? $options['woofields']['shipping'] : array(); // Custom billing fields if (!empty($billing_fields)) { foreach ($billing_fields as $key => $billing_field) { $fields[] = array('name' => $key, 'label' => $options['woofields']['label_' . $key]); } unset($billing_fields, $billing_field); } // Custom shipping fields if (!empty($shipping_fields)) { foreach ($shipping_fields as $key => $shipping_field) { $fields[] = array('name' => $key, 'label' => $options['woofields']['label_' . $key]); } unset($shipping_fields, $shipping_field); } unset($options); } // Checkout Field Editor - http://woothemes.com/woocommerce/ if (function_exists('woocommerce_init_checkout_field_editor')) { $billing_fields = get_option('wc_fields_billing', array()); $shipping_fields = get_option('wc_fields_shipping', array()); $custom_fields = get_option('wc_fields_additional', array()); // Custom billing fields if (!empty($billing_fields)) { foreach ($billing_fields as $key => $billing_field) { // Only add non-default Checkout fields to export columns list if (isset($billing_field['custom']) && $billing_field['custom'] == 1) { $fields[] = array('name' => sprintf('wc_billing_%s', $key), 'label' => sprintf(__('Billing: %s', 'woo_ce'), ucfirst($billing_field['label']))); } } } unset($billing_fields, $billing_field); // Custom shipping fields if (!empty($shipping_fields)) { foreach ($shipping_fields as $key => $shipping_field) { // Only add non-default Checkout fields to export columns list if (isset($shipping_field['custom']) && $shipping_field['custom'] == 1) { $fields[] = array('name' => sprintf('wc_shipping_%s', $key), 'label' => sprintf(__('Shipping: %s', 'woo_ce'), ucfirst($shipping_field['label']))); } } } unset($shipping_fields, $shipping_field); // Custom fields if (!empty($custom_fields)) { foreach ($custom_fields as $key => $custom_field) { // Only add non-default Checkout fields to export columns list if (isset($custom_field['custom']) && $custom_field['custom'] == 1) { $fields[] = array('name' => sprintf('wc_additional_%s', $key), 'label' => sprintf(__('Additional: %s', 'woo_ce'), ucfirst($custom_field['label']))); } } } unset($custom_fields, $custom_field); } // Checkout Field Manager - http://61extensions.com if (function_exists('sod_woocommerce_checkout_manager_settings')) { $billing_fields = get_option('woocommerce_checkout_billing_fields', array()); $shipping_fields = get_option('woocommerce_checkout_shipping_fields', array()); $custom_fields = get_option('woocommerce_checkout_additional_fields', array()); // Custom billing fields if (!empty($billing_fields)) { foreach ($billing_fields as $key => $billing_field) { // Only add non-default Checkout fields to export columns list if (strtolower($billing_field['default_field']) != 'on') { $fields[] = array('name' => sprintf('sod_billing_%s', $billing_field['name']), 'label' => sprintf(__('Billing: %s', 'woo_ce'), ucfirst($billing_field['label']))); } } } unset($billing_fields, $billing_field); // Custom shipping fields if (!empty($shipping_fields)) { foreach ($shipping_fields as $key => $shipping_field) { // Only add non-default Checkout fields to export columns list if (strtolower($shipping_field['default_field']) != 'on') { $fields[] = array('name' => sprintf('sod_shipping_%s', $shipping_field['name']), 'label' => sprintf(__('Shipping: %s', 'woo_ce'), ucfirst($shipping_field['label']))); } } } unset($shipping_fields, $shipping_field); // Custom fields if (!empty($custom_fields)) { foreach ($custom_fields as $key => $custom_field) { // Only add non-default Checkout fields to export columns list if (strtolower($custom_field['default_field']) != 'on') { $fields[] = array('name' => sprintf('sod_additional_%s', $custom_field['name']), 'label' => sprintf(__('Additional: %s', 'woo_ce'), ucfirst($custom_field['label']))); } } } unset($custom_fields, $custom_field); } // WooCommerce Checkout Add-Ons - http://www.skyverge.com/product/woocommerce-checkout-add-ons/ if (function_exists('init_woocommerce_checkout_add_ons')) { $fields[] = array('name' => 'order_items_checkout_addon_id', 'label' => __('Order Items: Checkout Add-ons ID', 'woo_ce')); $fields[] = array('name' => 'order_items_checkout_addon_label', 'label' => __('Order Items: Checkout Add-ons Label', 'woo_ce')); $fields[] = array('name' => 'order_items_checkout_addon_value', 'label' => __('Order Items: Checkout Add-ons Value', 'woo_ce')); } // WooCommerce Brands Addon - http://woothemes.com/woocommerce/ // WooCommerce Brands - http://proword.net/Woocommerce_Brands/ if (class_exists('WC_Brands') || class_exists('woo_brands') || taxonomy_exists(apply_filters('woo_ce_brand_term_taxonomy', 'product_brand'))) { $fields[] = array('name' => 'order_items_brand', 'label' => __('Order Items: Brand', 'woo_ce')); } // Product Vendors - http://www.woothemes.com/products/product-vendors/ if (class_exists('WooCommerce_Product_Vendors')) { $fields[] = array('name' => 'order_items_vendor', 'label' => __('Order Items: Product Vendor', 'woo_ce')); } // Cost of Goods - http://www.skyverge.com/product/woocommerce-cost-of-goods-tracking/ if (class_exists('WC_COG')) { $fields[] = array('name' => 'cost_of_goods', 'label' => __('Order Total Cost of Goods', 'woo_ce')); $fields[] = array('name' => 'order_items_cost_of_goods', 'label' => __('Order Items: Cost of Goods', 'woo_ce')); $fields[] = array('name' => 'order_items_total_cost_of_goods', 'label' => __('Order Items: Total Cost of Goods', 'woo_ce')); } // WooCommerce MSRP Pricing - http://woothemes.com/woocommerce/ if (function_exists('woocommerce_msrp_activate')) { $fields[] = array('name' => 'order_items_msrp', 'label' => __('Order Items: MSRP', 'woo_ce')); } // Local Pickup Plus - http://www.woothemes.com/products/local-pickup-plus/ if (class_exists('WC_Local_Pickup_Plus')) { $fields[] = array('name' => 'order_items_pickup_location', 'label' => __('Order Items: Pickup Location', 'woo_ce')); } // WooCommerce Bookings - http://www.woothemes.com/products/woocommerce-bookings/ if (class_exists('WC_Bookings')) { $fields[] = array('name' => 'order_items_booking_id', 'label' => __('Order Items: Booking ID', 'woo_ce'), 'hover' => __('WooCommerce Bookings', 'woo_ce')); $fields[] = array('name' => 'order_items_booking_date', 'label' => __('Order Items: Booking Date', 'woo_ce'), 'hover' => __('WooCommerce Bookings', 'woo_ce')); $fields[] = array('name' => 'order_items_booking_start_date', 'label' => __('Order Items: Start Date', 'woo_ce'), 'hover' => __('WooCommerce Bookings', 'woo_ce')); $fields[] = array('name' => 'order_items_booking_end_date', 'label' => __('Order Items: End Date', 'woo_ce'), 'hover' => __('WooCommerce Bookings', 'woo_ce')); } // Gravity Forms - http://woothemes.com/woocommerce if (class_exists('RGForms') && class_exists('woocommerce_gravityforms')) { // Check if there are any Products linked to Gravity Forms if ($gf_fields = woo_ce_get_gravity_form_fields()) { $fields[] = array('name' => 'order_items_gf_form_id', 'label' => __('Order Items: Gravity Form ID', 'woo_ce')); $fields[] = array('name' => 'order_items_gf_form_label', 'label' => __('Order Items: Gravity Form Label', 'woo_ce')); foreach ($gf_fields as $gf_field) { $gf_field_duplicate = false; // Check if this isn't a duplicate Gravity Forms field foreach ($fields as $field) { if (isset($field['name']) && $field['name'] == sprintf('order_items_gf_%d_%s', $gf_field['formId'], $gf_field['id'])) { // Duplicate exists $gf_field_duplicate = true; break; } } // If it's not a duplicate go ahead and add it to the list if ($gf_field_duplicate !== true) { $fields[] = array('name' => sprintf('order_items_gf_%d_%s', $gf_field['formId'], $gf_field['id']), 'label' => sprintf(apply_filters('woo_ce_extend_order_fields_gf_label', __('Order Items: %s - %s', 'woo_ce')), ucwords(strtolower($gf_field['formTitle'])), ucfirst(strtolower($gf_field['label']))), 'hover' => sprintf(apply_filters('woo_ce_extend_order_fields_gf_hover', '%s: %s (ID: %d)'), __('Gravity Forms', 'woo_ce'), ucwords(strtolower($gf_field['formTitle'])), $gf_field['formId'])); } } unset($gf_fields, $gf_field); } } // WooCommerce Currency Switcher - http://dev.pathtoenlightenment.net/shop if (class_exists('WC_Aelia_CurrencySwitcher')) { $fields[] = array('name' => 'order_currency', 'label' => __('Order Currency', 'woo_ce')); } // WooCommerce TM Extra Product Options - http://codecanyon.net/item/woocommerce-extra-product-options/7908619 if (class_exists('TM_Extra_Product_Options')) { if ($tm_fields = woo_ce_get_extra_product_option_fields()) { foreach ($tm_fields as $tm_field) { $fields[] = array('name' => sprintf('order_items_tm_%s', sanitize_key($tm_field['name'])), 'label' => sprintf(__('Order Items: %s', 'woo_ce'), $tm_field['name'])); } unset($tm_fields, $tm_field); } } // WooCommerce Ship to Multiple Addresses - http://woothemes.com/woocommerce if (class_exists('WC_Ship_Multiple')) { $fields[] = array('name' => 'wcms_number_packages', 'label' => __('Number of Packages', 'woo_ce'), 'hover' => __('Ship to Multiple Addresses', 'woo_ce')); } // Attributes if ($attributes = woo_ce_get_product_attributes()) { foreach ($attributes as $attribute) { $attribute->attribute_label = trim($attribute->attribute_label); if (empty($attribute->attribute_label)) { $attribute->attribute_label = $attribute->attribute_name; } $fields[] = array('name' => sprintf('order_items_attribute_%s', $attribute->attribute_name), 'label' => sprintf(__('Order Items: %s', 'woo_ce'), ucwords($attribute->attribute_label)), 'hover' => sprintf(apply_filters('woo_ce_extend_order_fields_attribute', '%s: %s (#%d)'), __('Attribute', 'woo_ce'), $attribute->attribute_name, $attribute->attribute_id)); } unset($attributes, $attribute); } // Custom Order fields $custom_orders = woo_ce_get_option('custom_orders', ''); if (!empty($custom_orders)) { foreach ($custom_orders as $custom_order) { if (!empty($custom_order)) { $fields[] = array('name' => $custom_order, 'label' => woo_ce_clean_export_label($custom_order), 'hover' => sprintf(apply_filters('woo_ce_extend_order_fields_custom_order_hover', '%s: %s'), __('Custom Order', 'woo_ce'), $custom_order)); } } unset($custom_orders, $custom_order); } // Custom Order Items fields $custom_order_items = woo_ce_get_option('custom_order_items', ''); if (!empty($custom_order_items)) { foreach ($custom_order_items as $custom_order_item) { if (!empty($custom_order_item)) { $fields[] = array('name' => sprintf('order_items_%s', $custom_order_item), 'label' => sprintf(__('Order Items: %s', 'woo_ce'), woo_ce_clean_export_label($custom_order_item)), 'hover' => sprintf(apply_filters('woo_ce_extend_order_fields_custom_order_item_hover', '%s: %s'), __('Custom Order Item', 'woo_ce'), $custom_order_item)); } } } // Custom Product fields $custom_product_fields = woo_ce_get_option('custom_products', ''); if (!empty($custom_product_fields)) { foreach ($custom_product_fields as $custom_product_field) { if (!empty($custom_product_field)) { $fields[] = array('name' => sprintf('order_items_%s', $custom_product_field), 'label' => sprintf(__('Order Items: %s', 'woo_ce'), woo_ce_clean_export_label($custom_product_field)), 'hover' => sprintf(apply_filters('woo_ce_extend_order_fields_custom_product_hover', '%s: %s'), __('Custom Product', 'woo_ce'), $custom_product_field)); } } } return $fields; }
function woo_ce_get_product_data($product_id = 0, $args = array()) { // Get Product defaults $weight_unit = get_option('woocommerce_weight_unit'); $dimension_unit = get_option('woocommerce_dimension_unit'); $height_unit = $dimension_unit; $width_unit = $dimension_unit; $length_unit = $dimension_unit; $product = get_post($product_id); $_product = function_exists('wc_get_product') ? wc_get_product($product_id) : false; $product->parent_id = ''; $product->parent_sku = ''; if ($product->post_type == 'product_variation') { // Assign Parent ID for Variants then check if Parent exists if ($product->parent_id = $product->post_parent) { $product->parent_sku = get_post_meta($product->post_parent, '_sku', true); } else { $product->parent_id = ''; } } $product->product_id = $product_id; $product->sku = get_post_meta($product_id, '_sku', true); $product->name = get_the_title($product_id); $product->permalink = get_permalink($product_id); $product->product_url = method_exists($_product, 'get_permalink') ? $_product->get_permalink() : get_permalink($product_id); $product->slug = $product->post_name; $product->description = $product->post_content; $product->excerpt = $product->post_excerpt; $product->regular_price = get_post_meta($product_id, '_regular_price', true); // Check that a valid price has been provided and that wc_format_localized_price() exists if (isset($product->regular_price) && $product->regular_price != '' && function_exists('wc_format_localized_price')) { $product->regular_price = wc_format_localized_price($product->regular_price); } $product->price = get_post_meta($product_id, '_price', true); if ($product->regular_price != '' && $product->regular_price != $product->price) { $product->price = $product->regular_price; } // Check that a valid price has been provided and that wc_format_localized_price() exists if (isset($product->price) && $product->price != '' && function_exists('wc_format_localized_price')) { $product->price = wc_format_localized_price($product->price); } $product->sale_price = get_post_meta($product_id, '_sale_price', true); // Check that a valid price has been provided and that wc_format_localized_price() exists if (isset($product->sale_price) && $product->sale_price != '' && function_exists('wc_format_localized_price')) { $product->sale_price = wc_format_localized_price($product->sale_price); } $product->sale_price_dates_from = woo_ce_format_sale_price_dates(get_post_meta($product_id, '_sale_price_dates_from', true)); $product->sale_price_dates_to = woo_ce_format_sale_price_dates(get_post_meta($product_id, '_sale_price_dates_to', true)); $product->post_date = woo_ce_format_date($product->post_date); $product->post_modified = woo_ce_format_date($product->post_modified); $product->type = woo_ce_get_product_assoc_type($product_id); if ($product->post_type == 'product_variation') { $product->type = __('Variation', 'woo_ce'); } $product->visibility = woo_ce_format_visibility(get_post_meta($product_id, '_visibility', true)); $product->featured = woo_ce_format_switch(get_post_meta($product_id, '_featured', true)); $product->virtual = woo_ce_format_switch(get_post_meta($product_id, '_virtual', true)); $product->downloadable = woo_ce_format_switch(get_post_meta($product_id, '_downloadable', true)); $product->weight = get_post_meta($product_id, '_weight', true); $product->weight_unit = $product->weight != '' ? $weight_unit : ''; $product->height = get_post_meta($product_id, '_height', true); $product->height_unit = $product->height != '' ? $height_unit : ''; $product->width = get_post_meta($product_id, '_width', true); $product->width_unit = $product->width != '' ? $width_unit : ''; $product->length = get_post_meta($product_id, '_length', true); $product->length_unit = $product->length != '' ? $length_unit : ''; $product->category = woo_ce_get_product_assoc_categories($product_id, $product->parent_id); $product->tag = woo_ce_get_product_assoc_tags($product_id); $product->manage_stock = woo_ce_format_switch(get_post_meta($product_id, '_manage_stock', true)); $product->allow_backorders = woo_ce_format_switch(get_post_meta($product_id, '_backorders', true)); $product->sold_individually = woo_ce_format_switch(get_post_meta($product_id, '_sold_individually', true)); $product->upsell_ids = woo_ce_get_product_assoc_upsell_ids($product_id); $product->crosssell_ids = woo_ce_get_product_assoc_crosssell_ids($product_id); $product->quantity = get_post_meta($product_id, '_stock', true); $product->stock_status = woo_ce_format_stock_status(get_post_meta($product_id, '_stock_status', true), $product->quantity); $product->image = woo_ce_get_product_assoc_featured_image($product_id); $product->product_gallery = woo_ce_get_product_assoc_product_gallery($product_id); $product->tax_status = woo_ce_format_tax_status(get_post_meta($product_id, '_tax_status', true)); $product->tax_class = woo_ce_format_tax_class(get_post_meta($product_id, '_tax_class', true)); $product->external_url = get_post_meta($product_id, '_product_url', true); $product->button_text = get_post_meta($product_id, '_button_text', true); $product->file_download = woo_ce_get_product_assoc_file_downloads($product_id); $product->download_limit = get_post_meta($product_id, '_download_limit', true); $product->download_expiry = get_post_meta($product_id, '_download_expiry', true); $product->download_type = woo_ce_format_download_type(get_post_meta($product_id, '_download_type', true)); $product->purchase_note = get_post_meta($product_id, '_purchase_note', true); $product->product_status = woo_ce_format_product_status($product->post_status); $product->enable_reviews = woo_ce_format_comment_status($product->comment_status); $product->menu_order = $product->menu_order; // Attributes // Scan for global Attributes first if ($attributes = woo_ce_get_product_attributes()) { if ($product->post_type == 'product_variation') { // We're dealing with a single Variation, strap yourself in. foreach ($attributes as $attribute) { $attribute_value = get_post_meta($product_id, sprintf('attribute_pa_%s', $attribute->attribute_name), true); if (!empty($attribute_value)) { $term_id = term_exists($attribute_value, sprintf('pa_%s', $attribute->attribute_name)); if ($term_id !== 0 && $term_id !== null && !is_wp_error($term_id)) { $term = get_term($term_id['term_id'], sprintf('pa_%s', $attribute->attribute_name)); $attribute_value = $term->name; unset($term); } unset($term_id); } $product->{'attribute_' . $attribute->attribute_name} = $attribute_value; unset($attribute_value); } } else { // Either the Variation Parent or a Simple Product, scan for global and custom Attributes $product->attributes = maybe_unserialize(get_post_meta($product_id, '_product_attributes', true)); if (!empty($product->attributes)) { // Check for taxonomy-based attributes foreach ($attributes as $attribute) { if (isset($product->attributes['pa_' . $attribute->attribute_name])) { $product->{'attribute_' . $attribute->attribute_name} = woo_ce_get_product_assoc_attributes($product_id, $product->attributes['pa_' . $attribute->attribute_name], 'product'); } else { $product->{'attribute_' . $attribute->attribute_name} = woo_ce_get_product_assoc_attributes($product_id, $attribute, 'global'); } } // Check for per-Product attributes (custom) foreach ($product->attributes as $key => $attribute) { if ($attribute['is_taxonomy'] == 0) { if (!isset($product->{'attribute_' . $key})) { $product->{'attribute_' . $key} = $attribute['value']; } } } } } } // Advanced Google Product Feed - http://plugins.leewillis.co.uk/downloads/wp-e-commerce-product-feeds/ if (function_exists('woocommerce_gpf_install')) { $product->gpf_data = get_post_meta($product_id, '_woocommerce_gpf_data', true); $product->gpf_availability = isset($product->gpf_data['availability']) ? woo_ce_format_gpf_availability($product->gpf_data['availability']) : ''; $product->gpf_condition = isset($product->gpf_data['condition']) ? woo_ce_format_gpf_condition($product->gpf_data['condition']) : ''; $product->gpf_brand = isset($product->gpf_data['brand']) ? $product->gpf_data['brand'] : ''; $product->gpf_product_type = isset($product->gpf_data['product_type']) ? $product->gpf_data['product_type'] : ''; $product->gpf_google_product_category = isset($product->gpf_data['google_product_category']) ? $product->gpf_data['google_product_category'] : ''; $product->gpf_gtin = isset($product->gpf_data['gtin']) ? $product->gpf_data['gtin'] : ''; $product->gpf_mpn = isset($product->gpf_data['mpn']) ? $product->gpf_data['mpn'] : ''; $product->gpf_gender = isset($product->gpf_data['gender']) ? $product->gpf_data['gender'] : ''; $product->gpf_age_group = isset($product->gpf_data['age_group']) ? $product->gpf_data['age_group'] : ''; $product->gpf_color = isset($product->gpf_data['color']) ? $product->gpf_data['color'] : ''; $product->gpf_size = isset($product->gpf_data['size']) ? $product->gpf_data['size'] : ''; } // All in One SEO Pack - http://wordpress.org/extend/plugins/all-in-one-seo-pack/ if (function_exists('aioseop_activate')) { $product->aioseop_keywords = get_post_meta($product_id, '_aioseop_keywords', true); $product->aioseop_description = get_post_meta($product_id, '_aioseop_description', true); $product->aioseop_title = get_post_meta($product_id, '_aioseop_title', true); $product->aioseop_titleatr = get_post_meta($product_id, '_aioseop_titleatr', true); $product->aioseop_menulabel = get_post_meta($product_id, '_aioseop_menulabel', true); } // WordPress SEO - http://wordpress.org/plugins/wordpress-seo/ if (function_exists('wpseo_admin_init')) { $product->wpseo_focuskw = get_post_meta($product_id, '_yoast_wpseo_focuskw', true); $product->wpseo_metadesc = get_post_meta($product_id, '_yoast_wpseo_metadesc', true); $product->wpseo_title = get_post_meta($product_id, '_yoast_wpseo_title', true); $product->wpseo_googleplus_description = get_post_meta($product_id, '_yoast_wpseo_google-plus-description', true); $product->wpseo_opengraph_description = get_post_meta($product_id, '_yoast_wpseo_opengraph-description', true); } // Ultimate SEO - http://wordpress.org/plugins/seo-ultimate/ if (function_exists('su_wp_incompat_notice')) { $product->useo_meta_title = get_post_meta($product_id, '_su_title', true); $product->useo_meta_description = get_post_meta($product_id, '_su_description', true); $product->useo_meta_keywords = get_post_meta($product_id, '_su_keywords', true); $product->useo_social_title = get_post_meta($product_id, '_su_og_title', true); $product->useo_social_description = get_post_meta($product_id, '_su_og_description', true); $product->useo_meta_noindex = get_post_meta($product_id, '_su_meta_robots_noindex', true); $product->useo_meta_noautolinks = get_post_meta($product_id, '_su_disable_autolinks', true); } // WooCommerce MSRP Pricing - http://woothemes.com/woocommerce/ if (function_exists('woocommerce_msrp_activate')) { $product->msrp = get_post_meta($product_id, '_msrp_price', true); if ($product->msrp == false && $product->post_type == 'product_variation') { $product->msrp = get_post_meta($product_id, '_msrp', true); } // Check that a valid price has been provided and that wc_format_localized_price() exists if (isset($product->msrp) && $product->msrp != '' && function_exists('wc_format_localized_price')) { $product->msrp = wc_format_localized_price($product->msrp); } } // Allow Plugin/Theme authors to add support for additional Product columns $product = apply_filters('woo_ce_product_item', $product, $product_id); return $product; }
function woo_ce_extend_order_items_unique_columns( $fields = array(), $i = 0, $original_columns = array() ) { // WooCommerce Tax Rates $tax_rates = woo_ce_get_order_tax_rates(); if( !empty( $tax_rates ) ) { foreach( $tax_rates as $tax_rate ) { if( isset( $original_columns[sprintf( 'order_item_%d_tax_rate_%d', $i, $tax_rate['rate_id'] )] ) ) $fields[] = sprintf( __( 'Order Item #%d: Tax Rate - %s', 'woo_ce' ), $i, $tax_rate['label'] ); } } unset( $tax_rates, $tax_rate ); // Product Add-ons - http://www.woothemes.com/ if( $product_addons = woo_ce_get_product_addons() ) { foreach( $product_addons as $product_addon ) { if( isset( $original_columns[sprintf( 'order_item_%d_product_addon_%s', $i, $product_addon->post_name )] ) ) $fields[] = sprintf( __( 'Order Item #%d: %s', 'woo_ce' ), $i, $product_addon->post_title ); } } // WooCommerce Checkout Add-Ons - http://www.skyverge.com/product/woocommerce-checkout-add-ons/ if( function_exists( 'init_woocommerce_checkout_add_ons' ) ) { if( isset( $original_columns[sprintf( 'order_item_%d_checkout_addon_id', $i )] ) ) $fields[] = sprintf( __( 'Order Item #%d: %s', 'woo_ce' ), $i, woo_ce_get_order_field( 'order_items_checkout_addon_id', 'name', 'unique' ) ); if( isset( $original_columns[sprintf( 'order_item_%d_checkout_addon_label', $i )] ) ) $fields[] = sprintf( __( 'Order Item #%d: %s', 'woo_ce' ), $i, woo_ce_get_order_field( 'order_items_checkout_addon_label', 'name', 'unique' ) ); if( isset( $original_columns[sprintf( 'order_item_%d_checkout_addon_value', $i )] ) ) $fields[] = sprintf( __( 'Order Item #%d: %s', 'woo_ce' ), $i, woo_ce_get_order_field( 'order_items_check_addon_value', 'name', 'unique' ) ); } // WooCommerce Brands Addon - http://woothemes.com/woocommerce/ // WooCommerce Brands - http://proword.net/Woocommerce_Brands/ if( class_exists( 'WC_Brands' ) || class_exists( 'woo_brands' ) || taxonomy_exists( apply_filters( 'woo_ce_brand_term_taxonomy', 'product_brand' ) ) ) { if( isset( $original_columns[sprintf( 'order_item_%d_brand', $i )] ) ) $fields[] = sprintf( __( 'Order Item #%d: %s', 'woo_ce' ), $i, woo_ce_get_order_field( 'order_items_brand', 'name', 'unique' ) ); } // Product Vendors - http://www.woothemes.com/products/product-vendors/ if( class_exists( 'WooCommerce_Product_Vendors' ) ) { if( isset( $original_columns[sprintf( 'order_item_%d_vendor', $i )] ) ) $fields[] = sprintf( __( 'Order Item #%d: %s', 'woo_ce' ), $i, woo_ce_get_order_field( 'order_items_vendor', 'name', 'unique' ) ); } // Cost of Goods - http://www.skyverge.com/product/woocommerce-cost-of-goods-tracking/ if( class_exists( 'WC_COG' ) ) { if( isset( $original_columns[sprintf( 'order_item_%d_cost_of_goods', $i )] ) ) $fields[] = sprintf( __( 'Order Item #%d: %s', 'woo_ce' ), $i, woo_ce_get_order_field( 'order_items_cost_of_goods', 'name', 'unique' ) ); if( isset( $original_columns[sprintf( 'order_item_%d_total_cost_of_goods', $i )] ) ) $fields[] = sprintf( __( 'Order Item #%d: %s', 'woo_ce' ), $i, woo_ce_get_order_field( 'order_items_total_cost_of_goods', 'name', 'unique' ) ); } // WooCommerce MSRP Pricing - http://woothemes.com/woocommerce/ if( function_exists( 'woocommerce_msrp_activate' ) ) { if( isset( $original_columns[sprintf( 'order_item_%d_msrp', $i )] ) ) $fields[] = sprintf( __( 'Order Item #%d: %s', 'woo_ce' ), $i, woo_ce_get_order_field( 'order_items_msrp', 'name', 'unique' ) ); } // Gravity Forms - http://woothemes.com/woocommerce if( class_exists( 'RGForms' ) && class_exists( 'woocommerce_gravityforms' ) ) { if( isset( $original_columns[sprintf( 'order_item_%d_gf_form_id', $i )] ) ) $fields[] = sprintf( __( 'Order Item #%d: %s', 'woo_ce' ), $i, woo_ce_get_order_field( 'order_items_gf_form_id', 'name', 'unique' ) ); if( isset( $original_columns[sprintf( 'order_item_%d_gf_form_label', $i )] ) ) $fields[] = sprintf( __( 'Order Item #%d: %s', 'woo_ce' ), $i, woo_ce_get_order_field( 'order_items_gf_form_label', 'name', 'unique' ) ); // Check if there are any Products linked to Gravity Forms if( $gf_fields = woo_ce_get_gravity_form_fields() ) { foreach( $gf_fields as $key => $gf_field ) { if( isset( $original_columns[sprintf( 'order_item_%d_gf_%d_%s', $i, $gf_field['formId'], $gf_field['id'] )] ) ) $fields[] = sprintf( apply_filters( 'woo_ce_extend_order_items_unique_columns_gf_fields', __( 'Order Item #%d: %s - %s', 'woo_ce' ) ), $i, $gf_field['formTitle'], $gf_field['label'] ); } } } // Local Pickup Plus - http://www.woothemes.com/products/local-pickup-plus/ if( class_exists( 'WC_Local_Pickup_Plus' ) ) { if( isset( $original_columns[sprintf( 'order_item_%d_pickup_location', $i )] ) ) $fields[] = sprintf( __( 'Order Item #%d: %s', 'woo_ce' ), $i, woo_ce_get_order_field( 'order_items_pickup_location', 'name', 'unique' ) ); } // WooCommerce Bookings - http://www.woothemes.com/products/woocommerce-bookings/ if( class_exists( 'WC_Bookings' ) ) { if( isset( $original_columns[sprintf( 'order_item_%d_booking_id', $i )] ) ) $fields[] = sprintf( __( 'Order Item #%d: %s', 'woo_ce' ), $i, woo_ce_get_order_field( 'order_items_booking_id', 'name', 'unique' ) ); if( isset( $original_columns[sprintf( 'order_item_%d_booking_date', $i )] ) ) $fields[] = sprintf( __( 'Order Item #%d: %s', 'woo_ce' ), $i, woo_ce_get_order_field( 'order_items_booking_date', 'name', 'unique' ) ); if( isset( $original_columns[sprintf( 'order_item_%d_booking_type', $i )] ) ) $fields[] = sprintf( __( 'Order Item #%d: %s', 'woo_ce' ), $i, woo_ce_get_order_field( 'order_items_booking_type', 'name', 'unique' ) ); if( isset( $original_columns[sprintf( 'order_item_%d_booking_start_date', $i )] ) ) $fields[] = sprintf( __( 'Order Item #%d: %s', 'woo_ce' ), $i, woo_ce_get_order_field( 'order_items_booking_start_date', 'name', 'unique' ) ); if( isset( $original_columns[sprintf( 'order_item_%d_booking_end_date', $i )] ) ) $fields[] = sprintf( __( 'Order Item #%d: %s', 'woo_ce' ), $i, woo_ce_get_order_field( 'order_items_booking_end_date', 'name', 'unique' ) ); } // WooCommerce TM Extra Product Options - http://codecanyon.net/item/woocommerce-extra-product-options/7908619 if( class_exists( 'TM_Extra_Product_Options' ) ) { if( $tm_fields = woo_ce_get_extra_product_option_fields() ) { foreach( $tm_fields as $tm_field ) { if( isset( $original_columns[sprintf( 'order_item_%d_tm_%s', $i, sanitize_key( $tm_field['name'] ) )] ) ) $fields[] = sprintf( __( 'Order Item #%d: %s', 'woo_ce' ), $i, $tm_field['name'] ); } } } // Attributes if( $attributes = woo_ce_get_product_attributes() ) { foreach( $attributes as $attribute ) { if( isset( $original_columns[sprintf( 'order_item_%d_attribute_%s', $i, sanitize_key( $attribute->attribute_name ) )] ) ) { if( empty( $attribute->attribute_label ) ) $attribute->attribute_label = $attribute->attribute_name; $fields[] = sprintf( __( 'Order Item #%d: %s', 'woo_ce' ), $i, $attribute->attribute_label ); } } } // Custom Order Items fields $custom_order_items = woo_ce_get_option( 'custom_order_items', '' ); if( !empty( $custom_order_items ) ) { foreach( $custom_order_items as $custom_order_item ) { if( !empty( $custom_order_item ) ) { if( isset( $original_columns[sprintf( 'order_item_%d_%s', $i, $custom_order_item )] ) ) $fields[] = sprintf( __( 'Order Item #%d: %s', 'woo_ce' ), $i, $custom_order_item ); } } } // Custom Product fields $custom_products = woo_ce_get_option( 'custom_products', '' ); if( !empty( $custom_products ) ) { foreach( $custom_products as $custom_product ) { if( !empty( $custom_product ) ) { if( isset( $original_columns[sprintf( 'order_item_%d_%s', $i, $custom_product )] ) ) $fields[] = sprintf( __( 'Order Item #%d: %s', 'woo_ce' ), $i, $custom_product ); } } } return $fields; }
function woo_ce_get_product_fields($format = 'full') { $fields = array(); $fields[] = array('name' => 'parent_id', 'label' => __('Parent ID', 'woo_ce'), 'default' => 1); $fields[] = array('name' => 'parent_sku', 'label' => __('Parent SKU', 'woo_ce'), 'default' => 1); $fields[] = array('name' => 'product_id', 'label' => __('Product ID', 'woo_ce'), 'default' => 1); $fields[] = array('name' => 'sku', 'label' => __('Product SKU', 'woo_ce'), 'default' => 1); $fields[] = array('name' => 'name', 'label' => __('Product Name', 'woo_ce'), 'default' => 1); $fields[] = array('name' => 'slug', 'label' => __('Slug', 'woo_ce'), 'default' => 1); $fields[] = array('name' => 'permalink', 'label' => __('Permalink', 'woo_ce'), 'default' => 1); $fields[] = array('name' => 'description', 'label' => __('Description', 'woo_ce'), 'default' => 1); $fields[] = array('name' => 'excerpt', 'label' => __('Excerpt', 'woo_ce'), 'default' => 1); $fields[] = array('name' => 'type', 'label' => __('Type', 'woo_ce'), 'default' => 1); $fields[] = array('name' => 'visibility', 'label' => __('Visibility', 'woo_ce'), 'default' => 1); $fields[] = array('name' => 'featured', 'label' => __('Featured', 'woo_ce'), 'default' => 1); $fields[] = array('name' => 'virtual', 'label' => __('Virtual', 'woo_ce'), 'default' => 1); $fields[] = array('name' => 'downloadable', 'label' => __('Downloadable', 'woo_ce'), 'default' => 1); $fields[] = array('name' => 'price', 'label' => __('Price', 'woo_ce'), 'default' => 1); $fields[] = array('name' => 'sale_price', 'label' => __('Sale Price', 'woo_ce'), 'default' => 1); $fields[] = array('name' => 'sale_price', 'label' => __('Sale Price', 'woo_ce'), 'default' => 1); $fields[] = array('name' => 'sale_price_dates_from', 'label' => __('Sale Price Dates From', 'woo_ce'), 'default' => 1); $fields[] = array('name' => 'sale_price_dates_to', 'label' => __('Sale Price Dates To', 'woo_ce'), 'default' => 1); $fields[] = array('name' => 'weight', 'label' => __('Weight', 'woo_ce'), 'default' => 1); $fields[] = array('name' => 'weight_unit', 'label' => __('Weight Unit', 'woo_ce'), 'default' => 1); $fields[] = array('name' => 'height', 'label' => __('Height', 'woo_ce'), 'default' => 1); $fields[] = array('name' => 'height_unit', 'label' => __('Height Unit', 'woo_ce'), 'default' => 1); $fields[] = array('name' => 'width', 'label' => __('Width', 'woo_ce'), 'default' => 1); $fields[] = array('name' => 'width_unit', 'label' => __('Width Unit', 'woo_ce'), 'default' => 1); $fields[] = array('name' => 'length', 'label' => __('Length', 'woo_ce'), 'default' => 1); $fields[] = array('name' => 'length_unit', 'label' => __('Length Unit', 'woo_ce'), 'default' => 1); $fields[] = array('name' => 'category', 'label' => __('Category', 'woo_ce'), 'default' => 1); $fields[] = array('name' => 'tag', 'label' => __('Tag', 'woo_ce'), 'default' => 1); $fields[] = array('name' => 'image', 'label' => __('Featured Image', 'woo_ce'), 'default' => 1); $fields[] = array('name' => 'product_gallery', 'label' => __('Product Gallery', 'woo_ce'), 'default' => 1); $fields[] = array('name' => 'tax_status', 'label' => __('Tax Status', 'woo_ce'), 'default' => 1); $fields[] = array('name' => 'tax_class', 'label' => __('Tax Class', 'woo_ce'), 'default' => 1); $fields[] = array('name' => 'file_download', 'label' => __('File Download', 'woo_ce'), 'default' => 1); $fields[] = array('name' => 'download_limit', 'label' => __('Download Limit', 'woo_ce'), 'default' => 1); $fields[] = array('name' => 'download_expiry', 'label' => __('Download Expiry', 'woo_ce'), 'default' => 1); $fields[] = array('name' => 'manage_stock', 'label' => __('Manage Stock', 'woo_ce'), 'default' => 1); $fields[] = array('name' => 'quantity', 'label' => __('Quantity', 'woo_ce'), 'default' => 1); $fields[] = array('name' => 'stock_status', 'label' => __('Stock Status', 'woo_ce'), 'default' => 1); $fields[] = array('name' => 'allow_backorders', 'label' => __('Allow Backorders', 'woo_ce'), 'default' => 1); $fields[] = array('name' => 'sold_individually', 'label' => __('Sold Individually', 'woo_ce'), 'default' => 1); $fields[] = array('name' => 'upsell_ids', 'label' => __('Up-Sells', 'woo_ce'), 'default' => 1); $fields[] = array('name' => 'crosssell_ids', 'label' => __('Cross-Sells', 'woo_ce'), 'default' => 1); $fields[] = array('name' => 'product_url', 'label' => __('Product URL', 'woo_ce'), 'default' => 1); $fields[] = array('name' => 'button_text', 'label' => __('Button Text', 'woo_ce'), 'default' => 1); $fields[] = array('name' => 'purchase_note', 'label' => __('Purchase Note', 'woo_ce'), 'default' => 1); $fields[] = array('name' => 'product_status', 'label' => __('Product Status', 'woo_ce'), 'default' => 1); $fields[] = array('name' => 'comment_status', 'label' => __('Comment Status', 'woo_ce'), 'default' => 1); if ($attributes = woo_ce_get_product_attributes()) { foreach ($attributes as $attribute) { if (empty($attribute->attribute_label)) { $attribute->attribute_label = $attribute->attribute_name; } $fields[] = array('name' => sprintf('attribute_%s', $attribute->attribute_name), 'label' => sprintf(__('Attribute: %s', 'woo_ce'), ucwords($attribute->attribute_label)), 'default' => 1); } } /* $fields[] = array( 'name' => '', 'label' => __( '', 'woo_ce' ), 'default' => 1 ); */ /* Allow Plugin/Theme authors to add support for additional Product columns */ $fields = apply_filters('woo_ce_product_fields', $fields); $remember = woo_ce_get_option('products_fields'); if ($remember) { $remember = maybe_unserialize($remember); $size = count($fields); for ($i = 0; $i < $size; $i++) { if (!array_key_exists($fields[$i]['name'], $remember)) { $fields[$i]['default'] = 0; } } } switch ($format) { case 'summary': $output = array(); $size = count($fields); for ($i = 0; $i < $size; $i++) { $output[$fields[$i]['name']] = 'on'; } return $output; break; case 'full': default: return $fields; } }
function woo_ce_get_product_data( $product_id = 0, $args = array(), $fields = array() ) { // Get Product defaults $weight_unit = get_option( 'woocommerce_weight_unit' ); $dimension_unit = get_option( 'woocommerce_dimension_unit' ); $height_unit = $dimension_unit; $width_unit = $dimension_unit; $length_unit = $dimension_unit; $product = get_post( $product_id ); $_product = ( function_exists( 'wc_get_product' ) ? wc_get_product( $product_id ) : false ); $product->parent_id = ''; $product->parent_sku = ''; if( $product->post_type == 'product_variation' ) { // Assign Parent ID for Variants then check if Parent exists if( $product->parent_id = $product->post_parent ) $product->parent_sku = get_post_meta( $product->post_parent, '_sku', true ); else $product->parent_id = ''; } $product->product_id = $product_id; $product->sku = get_post_meta( $product_id, '_sku', true ); $product->name = get_the_title( $product_id ); if( $product->post_type <> 'product_variation' ) $product->permalink = get_permalink( $product_id ); $product->product_url = ( method_exists( $_product, 'get_permalink' ) ? $_product->get_permalink() : get_permalink( $product_id ) ); $product->slug = $product->post_name; $product->description = woo_ce_format_description_excerpt( $product->post_content ); $product->excerpt = woo_ce_format_description_excerpt( $product->post_excerpt ); $product->price = get_post_meta( $product_id, '_regular_price', true ); $product->sale_price = get_post_meta( $product_id, '_sale_price', true ); // Check if we're dealing with a Variable Product Type $term_taxonomy = 'product_type'; if( has_term( 'variable', $term_taxonomy, $product_id ) ) $product->price = get_post_meta( $product_id, '_price', true ); if( isset( $product->price ) && $product->price != '' ) $product->price = woo_ce_format_price( $product->price ); if( isset( $product->sale_price ) && $product->sale_price != '' ) $product->sale_price = woo_ce_format_price( $product->sale_price ); $product->sale_price_dates_from = woo_ce_format_product_sale_price_dates( get_post_meta( $product_id, '_sale_price_dates_from', true ) ); $product->sale_price_dates_to = woo_ce_format_product_sale_price_dates( get_post_meta( $product_id, '_sale_price_dates_to', true ) ); $product->post_date = woo_ce_format_date( $product->post_date ); $product->post_modified = woo_ce_format_date( $product->post_modified ); $product->type = woo_ce_get_product_assoc_type( $product_id ); if( $product->post_type == 'product_variation' ) { // Override the Product Type for Variations $product->type = __( 'Variation', 'woo_ce' ); // Override the Description and Excerpt if Variation Formatting is enabled if( woo_ce_get_option( 'variation_formatting', 0 ) ) { $parent = get_post( $product->parent_id ); $product->description = $parent->post_content; $product->excerpt = $parent->post_excerpt; unset( $parent ); } } $product->visibility = woo_ce_format_product_visibility( get_post_meta( $product_id, '_visibility', true ) ); $product->featured = woo_ce_format_switch( get_post_meta( $product_id, '_featured', true ) ); $product->virtual = woo_ce_format_switch( get_post_meta( $product_id, '_virtual', true ) ); $product->downloadable = woo_ce_format_switch( get_post_meta( $product_id, '_downloadable', true ) ); $product->weight = get_post_meta( $product_id, '_weight', true ); $product->weight_unit = ( $product->weight != '' ? $weight_unit : '' ); $product->height = get_post_meta( $product_id, '_height', true ); $product->height_unit = ( $product->height != '' ? $height_unit : '' ); $product->width = get_post_meta( $product_id, '_width', true ); $product->width_unit = ( $product->width != '' ? $width_unit : '' ); $product->length = get_post_meta( $product_id, '_length', true ); $product->length_unit = ( $product->length != '' ? $length_unit : '' ); $product->category = woo_ce_get_product_assoc_categories( $product_id, $product->parent_id ); $product->tag = woo_ce_get_product_assoc_tags( $product_id ); $product->manage_stock = woo_ce_format_switch( get_post_meta( $product_id, '_manage_stock', true ) ); $product->allow_backorders = woo_ce_format_switch( get_post_meta( $product_id, '_backorders', true ) ); $product->sold_individually = woo_ce_format_switch( get_post_meta( $product_id, '_sold_individually', true ) ); $product->total_sales = get_post_meta( $product_id, 'total_sales', true ); $product->upsell_ids = woo_ce_get_product_assoc_upsell_ids( $product_id ); $product->crosssell_ids = woo_ce_get_product_assoc_crosssell_ids( $product_id ); $product->quantity = get_post_meta( $product_id, '_stock', true ); $product->quantity = ( function_exists( 'wc_stock_amount' ) ? wc_stock_amount( $product->quantity ) : $product->quantity ); $product->stock_status = woo_ce_format_product_stock_status( get_post_meta( $product_id, '_stock_status', true ), $product->quantity ); $product->image = woo_ce_get_product_assoc_featured_image( $product_id, $product->parent_id ); $product->image_thumbnail = woo_ce_get_product_assoc_featured_image( $product_id, $product->parent_id, 'thumbnail' ); $product->product_gallery = woo_ce_get_product_assoc_product_gallery( $product_id ); $product->product_gallery_thumbnail = woo_ce_get_product_assoc_product_gallery( $product_id, 'thumbnail' ); $product->tax_status = woo_ce_format_product_tax_status( get_post_meta( $product_id, '_tax_status', true ) ); $product->tax_class = woo_ce_format_product_tax_class( get_post_meta( $product_id, '_tax_class', true ) ); $product->shipping_class = woo_ce_get_product_assoc_shipping_class( $product_id ); $product->external_url = get_post_meta( $product_id, '_product_url', true ); $product->button_text = get_post_meta( $product_id, '_button_text', true ); $product->download_file_path = woo_ce_get_product_assoc_download_files( $product_id, 'url' ); $product->download_file_name = woo_ce_get_product_assoc_download_files( $product_id, 'name' ); $product->download_limit = get_post_meta( $product_id, '_download_limit', true ); $product->download_expiry = get_post_meta( $product_id, '_download_expiry', true ); $product->download_type = woo_ce_format_product_download_type( get_post_meta( $product_id, '_download_type', true ) ); $product->purchase_note = get_post_meta( $product_id, '_purchase_note', true ); $product->product_status = woo_ce_format_post_status( $product->post_status ); $product->enable_reviews = woo_ce_format_comment_status( $product->comment_status ); $product->menu_order = $product->menu_order; // Attributes if( $attributes = woo_ce_get_product_attributes() ) { // Scan for global Attributes first if( $product->post_type == 'product_variation' ) { // We're dealing with a single Variation, strap yourself in. foreach( $attributes as $attribute ) { $attribute_value = get_post_meta( $product_id, sprintf( 'attribute_pa_%s', $attribute->attribute_name ), true ); if( !empty( $attribute_value ) ) { $term_id = term_exists( $attribute_value, sprintf( 'pa_%s', $attribute->attribute_name ) ); if( $term_id !== 0 && $term_id !== null && !is_wp_error( $term_id ) ) { $term = get_term( $term_id['term_id'], sprintf( 'pa_%s', $attribute->attribute_name ) ); $attribute_value = $term->name; unset( $term ); } unset( $term_id ); } $product->{'attribute_' . $attribute->attribute_name} = $attribute_value; unset( $attribute_value ); } } else { // Either the Variation Parent or a Simple Product, scan for global and custom Attributes $product->attributes = maybe_unserialize( get_post_meta( $product_id, '_product_attributes', true ) ); if( !empty( $product->attributes ) ) { $default_attributes = maybe_unserialize( get_post_meta( $product_id, '_default_attributes', true ) ); $product->default_attributes = ''; // Check for taxonomy-based attributes foreach( $attributes as $attribute ) { if( !empty( $default_attributes ) && is_array( $default_attributes ) ) { if( array_key_exists( 'pa_' . $attribute->attribute_name, $default_attributes ) ) $product->default_attributes .= $attribute->attribute_label . ': ' . $default_attributes['pa_' . $attribute->attribute_name] . "|"; } if( isset( $product->attributes['pa_' . $attribute->attribute_name] ) ) $product->{'attribute_' . $attribute->attribute_name} = woo_ce_get_product_assoc_attributes( $product_id, $product->attributes['pa_' . $attribute->attribute_name], 'product' ); else $product->{'attribute_' . $attribute->attribute_name} = woo_ce_get_product_assoc_attributes( $product_id, $attribute, 'global' ); } // Check for per-Product attributes (custom) foreach( $product->attributes as $key => $attribute ) { if( $attribute['is_taxonomy'] == 0 ) { if( !isset( $product->{'attribute_' . $key} ) ) $product->{'attribute_' . $key} = $attribute['value']; } } if( !empty( $product->default_attributes ) ) $product->default_attributes = substr( $product->default_attributes, 0, -1 ); } } } // Allow Plugin/Theme authors to add support for additional Product columns $product = apply_filters( 'woo_ce_product_item', $product, $product_id ); // Trim back the Product just to requested export fields if( !empty( $fields ) ) { $fields = array_merge( $fields, array( 'id', 'ID', 'post_parent', 'filter' ) ); if( !empty( $product ) ) { foreach( $product as $key => $data ) { if( !in_array( $key, $fields ) ) unset( $product->$key ); } } } return $product; }
function woo_ce_extend_product_fields($fields) { if ($attributes = woo_ce_get_product_attributes()) { foreach ($attributes as $attribute) { if (empty($attribute->attribute_label)) { $attribute->attribute_label = $attribute->attribute_name; } $fields[] = array('name' => sprintf('attribute_%s', $attribute->attribute_name), 'label' => sprintf(__('Attribute: %s', 'woo_ce'), ucwords($attribute->attribute_label)), 'default' => 1); } } return $fields; }