Exemple #1
0
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;
}
Exemple #2
0
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;

}
Exemple #4
0
 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;
}