/**
  * export_products.
  *
  * @version 2.5.9
  * @since   2.5.3
  * @todo    export variations; product attributes;
  */
 function export_products($fields_helper)
 {
     // Standard Fields
     $all_fields = $fields_helper->get_product_export_fields();
     $fields_ids = get_option('wcj_export_products_fields', $fields_helper->get_product_export_default_fields_ids());
     $titles = array();
     foreach ($fields_ids as $field_id) {
         $titles[] = $all_fields[$field_id];
     }
     // Additional Fields
     $total_number = apply_filters('booster_get_option', 1, get_option('wcj_export_products_fields_additional_total_number', 1));
     for ($i = 1; $i <= $total_number; $i++) {
         if ('yes' === get_option('wcj_export_products_fields_additional_enabled_' . $i, 'no')) {
             $titles[] = get_option('wcj_export_products_fields_additional_title_' . $i, '');
         }
     }
     $data = array();
     $data[] = $titles;
     $offset = 0;
     $block_size = 1024;
     while (true) {
         $args = array('post_type' => 'product', 'post_status' => 'any', 'posts_per_page' => $block_size, 'orderby' => 'date', 'order' => 'DESC', 'offset' => $offset, 'fields' => 'ids');
         $loop = new WP_Query($args);
         if (!$loop->have_posts()) {
             break;
         }
         foreach ($loop->posts as $product_id) {
             $_product = wc_get_product($product_id);
             $row = array();
             foreach ($fields_ids as $field_id) {
                 switch ($field_id) {
                     case 'product-id':
                         $row[] = $product_id;
                         break;
                     case 'product-name':
                         $row[] = $_product->get_title();
                         break;
                     case 'product-sku':
                         $row[] = $_product->get_sku();
                         break;
                     case 'product-stock-quantity':
                         $row[] = $_product->is_type('variable') || $_product->is_type('grouped') ? $this->get_variable_or_grouped_product_info($_product, 'stock_quantity') : $_product->get_stock_quantity();
                         break;
                     case 'product-stock':
                         $row[] = $_product->is_type('variable') || $_product->is_type('grouped') ? $this->get_variable_or_grouped_product_info($_product, 'total_stock') : $_product->get_total_stock();
                         break;
                     case 'product-regular-price':
                         $row[] = $_product->is_type('variable') || $_product->is_type('grouped') ? $this->get_variable_or_grouped_product_info($_product, 'regular_price') : $_product->get_regular_price();
                         break;
                     case 'product-sale-price':
                         $row[] = $_product->is_type('variable') || $_product->is_type('grouped') ? $this->get_variable_or_grouped_product_info($_product, 'sale_price') : $_product->get_sale_price();
                         break;
                     case 'product-price':
                         $row[] = $_product->is_type('variable') || $_product->is_type('grouped') ? $this->get_variable_or_grouped_product_info($_product, 'price') : $_product->get_price();
                         break;
                     case 'product-type':
                         $row[] = $_product->get_type();
                         break;
                         /* case 'product-attributes':
                         			$row[] = ( ! empty( $_product->get_attributes() ) ? serialize( $_product->get_attributes() ) : '' );
                         			break; */
                     /* case 'product-attributes':
                     			$row[] = ( ! empty( $_product->get_attributes() ) ? serialize( $_product->get_attributes() ) : '' );
                     			break; */
                     case 'product-image-url':
                         $row[] = wcj_get_product_image_url($product_id, 'full');
                         break;
                     case 'product-short-description':
                         $row[] = $_product->post->post_excerpt;
                         break;
                     case 'product-description':
                         $row[] = $_product->post->post_content;
                         break;
                     case 'product-status':
                         $row[] = $_product->post->post_status;
                         break;
                     case 'product-url':
                         $row[] = $_product->get_permalink();
                         break;
                     case 'product-shipping-class':
                         $row[] = $_product->get_shipping_class();
                         break;
                     case 'product-shipping-class-id':
                         $row[] = $_product->get_shipping_class_id();
                         break;
                     case 'product-width':
                         $row[] = $_product->get_width();
                         break;
                     case 'product-length':
                         $row[] = $_product->get_length();
                         break;
                     case 'product-height':
                         $row[] = $_product->get_height();
                         break;
                     case 'product-weight':
                         $row[] = $_product->get_weight();
                         break;
                     case 'product-downloadable':
                         $row[] = $_product->downloadable;
                         break;
                     case 'product-virtual':
                         $row[] = $_product->virtual;
                         break;
                     case 'product-sold-individually':
                         $row[] = $_product->sold_individually;
                         break;
                     case 'product-tax-status':
                         $row[] = $_product->get_tax_status();
                         break;
                     case 'product-tax-class':
                         $row[] = $_product->get_tax_class();
                         break;
                     case 'product-manage-stock':
                         $row[] = $_product->manage_stock;
                         break;
                     case 'product-stock-status':
                         $row[] = $_product->stock_status;
                         break;
                     case 'product-backorders':
                         $row[] = $_product->backorders;
                         break;
                     case 'product-featured':
                         $row[] = $_product->featured;
                         break;
                     case 'product-visibility':
                         $row[] = $_product->visibility;
                         break;
                     case 'product-price-including-tax':
                         $row[] = $_product->get_price_including_tax();
                         break;
                     case 'product-price-excluding-tax':
                         $row[] = $_product->get_price_excluding_tax();
                         break;
                     case 'product-display-price':
                         $row[] = $_product->get_display_price();
                         break;
                     case 'product-average-rating':
                         $row[] = $_product->get_average_rating();
                         break;
                     case 'product-rating-count':
                         $row[] = $_product->get_rating_count();
                         break;
                     case 'product-review-count':
                         $row[] = $_product->get_review_count();
                         break;
                     case 'product-categories':
                         $row[] = $_product->get_categories();
                         break;
                     case 'product-tags':
                         $row[] = $_product->get_tags();
                         break;
                     case 'product-dimensions':
                         $row[] = $_product->get_dimensions();
                         break;
                     case 'product-formatted-name':
                         $row[] = $_product->get_formatted_name();
                         break;
                     case 'product-availability':
                         $availability = $_product->get_availability();
                         $row[] = $availability['availability'];
                         break;
                     case 'product-availability-class':
                         $availability = $_product->get_availability();
                         $row[] = $availability['class'];
                         break;
                 }
             }
             // Additional Fields
             $total_number = apply_filters('booster_get_option', 1, get_option('wcj_export_products_fields_additional_total_number', 1));
             for ($i = 1; $i <= $total_number; $i++) {
                 if ('yes' === get_option('wcj_export_products_fields_additional_enabled_' . $i, 'no')) {
                     if ('' != ($additional_field_value = get_option('wcj_export_products_fields_additional_value_' . $i, ''))) {
                         if ('meta' === get_option('wcj_export_products_fields_additional_type_' . $i, 'meta')) {
                             $row[] = get_post_meta($product_id, $additional_field_value, true);
                         } else {
                             global $post;
                             $post = get_post($product_id);
                             setup_postdata($post);
                             $row[] = do_shortcode($additional_field_value);
                             wp_reset_postdata();
                         }
                     } else {
                         $row[] = '';
                     }
                 }
             }
             $data[] = $row;
         }
         $offset += $block_size;
     }
     return $data;
 }
 /**
  * wcj_product_image_url.
  *
  * @version 2.5.7
  * @since   2.5.7
  */
 function wcj_product_image_url($atts)
 {
     return wcj_get_product_image_url($this->the_product->id, $atts['image_size']);
 }