Version Description
- Updates: Tested OK with WC 3.5.7
- Bug Fix:- Image import.
- Support GlotPress(translate.wordpress.org).
Download this release
Release Info
Developer | webtoffee |
Plugin | Product Import Export for WooCommerce |
Version | 1.5.7 |
Comparing to | |
See all releases |
Code changes from version 1.5.6 to 1.5.7
- includes/class-wf-prodimpexpcsv-admin-screen.php +4 -4
- includes/class-wf-prodimpexpcsv-ajax-handler.php +5 -5
- includes/class-wf-prodimpexpcsv-system-status-tools.php +12 -12
- includes/importer/class-wf-csv-parser.php +20 -20
- includes/importer/class-wf-prodimpexpcsv-product-import.php +90 -67
- includes/importer/views/html-wf-import-greeting.php +16 -16
- includes/importer/views/html-wf-import-options.php +13 -13
- includes/views/export/html-wf-export-products.php +16 -16
- includes/views/html-wf-admin-screen.php +4 -4
- includes/views/html-wf-help-guide.php +9 -9
- includes/views/import/html-wf-import-products.php +4 -4
- includes/views/market.php +19 -19
- lang/{wf_csv_import_export-de_DE.mo → product-import-export-for-woo-de_DE.mo} +0 -0
- lang/{wf_csv_import_export-de_DE.po → product-import-export-for-woo-de_DE.po} +0 -0
- lang/{wf_csv_import_export-fr_FR.mo → product-import-export-for-woo-fr_FR.mo} +0 -0
- lang/{wf_csv_import_export-fr_FR.po → product-import-export-for-woo-fr_FR.po} +0 -0
- lang/{wf_csv_import_export-hu_HU.mo → product-import-export-for-woo-hu_HU.mo} +0 -0
- lang/{wf_csv_import_export-hu_HU.po → product-import-export-for-woo-hu_HU.po} +0 -0
- lang/{wf_csv_import_export-it_IT.mo → product-import-export-for-woo-it_IT.mo} +0 -0
- lang/{wf_csv_import_export-it_IT.po → product-import-export-for-woo-it_IT.po} +0 -0
- product-csv-import-export.php → product-import-export-for-woo.php +38 -38
- readme.txt +11 -5
- welcome/welcome.php +5 -5
includes/class-wf-prodimpexpcsv-admin-screen.php
CHANGED
@@ -23,7 +23,7 @@ class WF_ProdImpExpCsv_Admin_Screen {
|
|
23 |
*/
|
24 |
public function admin_notices() {
|
25 |
if (!function_exists('mb_detect_encoding')) {
|
26 |
-
echo '<div class="error"><p>' . __('Product CSV Import Export requires the function <code>mb_detect_encoding</code> to import and export CSV files. Please ask your hosting provider to enable this function.', '
|
27 |
}
|
28 |
}
|
29 |
|
@@ -31,8 +31,8 @@ class WF_ProdImpExpCsv_Admin_Screen {
|
|
31 |
* Admin Menu
|
32 |
*/
|
33 |
public function admin_menu() {
|
34 |
-
$page1 = add_submenu_page('edit.php?post_type=product', __('Product Im-Ex', '
|
35 |
-
$page = add_submenu_page('woocommerce', __('Product Import-Export', '
|
36 |
|
37 |
}
|
38 |
|
@@ -101,7 +101,7 @@ class WF_ProdImpExpCsv_Admin_Screen {
|
|
101 |
|
102 |
if (!get_option('xa_pipe_plugin_review_rated')) {
|
103 |
$header_text = sprintf(
|
104 |
-
__('<div class="updated"><p>You have been using %1$s for a while. If you like the plugin please leave us a %2$s review!<p></div>', '
|
105 |
);
|
106 |
wc_enqueue_js("
|
107 |
jQuery( 'a.xa-pipe-rating-link' ).click( function() {
|
23 |
*/
|
24 |
public function admin_notices() {
|
25 |
if (!function_exists('mb_detect_encoding')) {
|
26 |
+
echo '<div class="error"><p>' . __('Product CSV Import Export requires the function <code>mb_detect_encoding</code> to import and export CSV files. Please ask your hosting provider to enable this function.', 'product-import-export-for-woo') . '</p></div>';
|
27 |
}
|
28 |
}
|
29 |
|
31 |
* Admin Menu
|
32 |
*/
|
33 |
public function admin_menu() {
|
34 |
+
$page1 = add_submenu_page('edit.php?post_type=product', __('Product Im-Ex', 'product-import-export-for-woo'), __('Product Im-Ex', 'product-import-export-for-woo'), apply_filters('woocommerce_csv_product_role', 'manage_woocommerce'), 'wf_woocommerce_csv_im_ex', array($this, 'output'));
|
35 |
+
$page = add_submenu_page('woocommerce', __('Product Import-Export', 'product-import-export-for-woo'), __('Product Import-Export', 'product-import-export-for-woo'), apply_filters('woocommerce_csv_product_role', 'manage_woocommerce'), 'wf_woocommerce_csv_im_ex', array($this, 'output'));
|
36 |
|
37 |
}
|
38 |
|
101 |
|
102 |
if (!get_option('xa_pipe_plugin_review_rated')) {
|
103 |
$header_text = sprintf(
|
104 |
+
__('<div class="updated"><p>You have been using %1$s for a while. If you like the plugin please leave us a %2$s review!<p></div>', 'product-import-export-for-woo'), sprintf('<strong>%s</strong>', esc_html__('Product Import Export for WooCommerce', 'product-import-export-for-woo')), '<a href="https://wordpress.org/support/plugin/product-import-export-for-woo/reviews?rate=5#new-post" target="_blank" class="xa-pipe-rating-link" data-reviewed="' . esc_attr__('Thanks for the review.', 'product-import-export-for-woo') . '">★★★★★</a>'
|
105 |
);
|
106 |
wc_enqueue_js("
|
107 |
jQuery( 'a.xa-pipe-rating-link' ).click( function() {
|
includes/class-wf-prodimpexpcsv-ajax-handler.php
CHANGED
@@ -33,15 +33,15 @@ class WF_ProdImpExpCsv_AJAX_Handler {
|
|
33 |
$image = get_post( $id );
|
34 |
|
35 |
if ( ! $image || 'attachment' != $image->post_type || 'image/' != substr( $image->post_mime_type, 0, 6 ) )
|
36 |
-
die( json_encode( array( 'error' => sprintf( __( 'Failed resize: %s is an invalid image ID.', '
|
37 |
|
38 |
if ( ! current_user_can( 'manage_woocommerce' ) )
|
39 |
-
$this->die_json_error_msg( $image->ID, __( "Your user account doesn't have permission to resize images", '
|
40 |
|
41 |
$fullsizepath = get_attached_file( $image->ID );
|
42 |
|
43 |
if ( false === $fullsizepath || ! file_exists( $fullsizepath ) )
|
44 |
-
$this->die_json_error_msg( $image->ID, sprintf( __( 'The originally uploaded image file cannot be found at %s', '
|
45 |
|
46 |
@set_time_limit( 900 ); // 5 minutes per image should be PLENTY
|
47 |
|
@@ -50,12 +50,12 @@ class WF_ProdImpExpCsv_AJAX_Handler {
|
|
50 |
if ( is_wp_error( $metadata ) )
|
51 |
$this->die_json_error_msg( $image->ID, $metadata->get_error_message() );
|
52 |
if ( empty( $metadata ) )
|
53 |
-
$this->die_json_error_msg( $image->ID, __( 'Unknown failure reason.', '
|
54 |
|
55 |
// If this fails, then it just means that nothing was changed (old value == new value)
|
56 |
wp_update_attachment_metadata( $image->ID, $metadata );
|
57 |
|
58 |
-
die( json_encode( array( 'success' => sprintf( __( '"%1$s" (ID %2$s) was successfully resized in %3$s seconds.', '
|
59 |
}
|
60 |
|
61 |
/**
|
33 |
$image = get_post( $id );
|
34 |
|
35 |
if ( ! $image || 'attachment' != $image->post_type || 'image/' != substr( $image->post_mime_type, 0, 6 ) )
|
36 |
+
die( json_encode( array( 'error' => sprintf( __( 'Failed resize: %s is an invalid image ID.', 'product-import-export-for-woo' ), esc_html( $_REQUEST['id'] ) ) ) ) );
|
37 |
|
38 |
if ( ! current_user_can( 'manage_woocommerce' ) )
|
39 |
+
$this->die_json_error_msg( $image->ID, __( "Your user account doesn't have permission to resize images", 'product-import-export-for-woo' ) );
|
40 |
|
41 |
$fullsizepath = get_attached_file( $image->ID );
|
42 |
|
43 |
if ( false === $fullsizepath || ! file_exists( $fullsizepath ) )
|
44 |
+
$this->die_json_error_msg( $image->ID, sprintf( __( 'The originally uploaded image file cannot be found at %s', 'product-import-export-for-woo' ), '<code>' . esc_html( $fullsizepath ) . '</code>' ) );
|
45 |
|
46 |
@set_time_limit( 900 ); // 5 minutes per image should be PLENTY
|
47 |
|
50 |
if ( is_wp_error( $metadata ) )
|
51 |
$this->die_json_error_msg( $image->ID, $metadata->get_error_message() );
|
52 |
if ( empty( $metadata ) )
|
53 |
+
$this->die_json_error_msg( $image->ID, __( 'Unknown failure reason.', 'product-import-export-for-woo' ) );
|
54 |
|
55 |
// If this fails, then it just means that nothing was changed (old value == new value)
|
56 |
wp_update_attachment_metadata( $image->ID, $metadata );
|
57 |
|
58 |
+
die( json_encode( array( 'success' => sprintf( __( '"%1$s" (ID %2$s) was successfully resized in %3$s seconds.', 'product-import-export-for-woo' ), esc_html( get_the_title( $image->ID ) ), $image->ID, timer_stop() ) ) ) );
|
59 |
}
|
60 |
|
61 |
/**
|
includes/class-wf-prodimpexpcsv-system-status-tools.php
CHANGED
@@ -19,21 +19,21 @@ class WF_ProdImpExpCsv_System_Status_Tools {
|
|
19 |
*/
|
20 |
public function tools( $tools ) {
|
21 |
$tools['delete_products'] = array(
|
22 |
-
'name' => __( 'Delete Products','
|
23 |
-
'button' => __( 'Delete ALL products','
|
24 |
-
'desc' => __( 'This tool will delete all products allowing you to start fresh.', '
|
25 |
'callback' => array( $this, 'delete_products' )
|
26 |
);
|
27 |
$tools['delete_variations'] = array(
|
28 |
-
'name' => __( 'Delete Variations','
|
29 |
-
'button' => __( 'Delete ALL variations','
|
30 |
-
'desc' => __( 'This tool will delete all variations allowing you to start fresh.', '
|
31 |
'callback' => array( $this, 'delete_variations' )
|
32 |
);
|
33 |
$tools['delete_orphaned_variations'] = array(
|
34 |
-
'name' => __( 'Delete Orphans','
|
35 |
-
'button' => __( 'Delete orphaned variations','
|
36 |
-
'desc' => __( 'This tool will delete variations which have no parent.', '
|
37 |
'callback' => array( $this, 'delete_orphaned_variations' )
|
38 |
);
|
39 |
return $tools;
|
@@ -59,7 +59,7 @@ class WF_ProdImpExpCsv_System_Status_Tools {
|
|
59 |
LEFT JOIN {$wpdb->posts} wp ON wp.ID = tr.object_id
|
60 |
WHERE wp.ID IS NULL" );
|
61 |
|
62 |
-
echo '<div class="updated"><p>' . sprintf( __( '%d Products Deleted', '
|
63 |
}
|
64 |
|
65 |
/**
|
@@ -81,7 +81,7 @@ class WF_ProdImpExpCsv_System_Status_Tools {
|
|
81 |
LEFT JOIN {$wpdb->posts} wp ON wp.ID = tr.object_id
|
82 |
WHERE wp.ID IS NULL" );
|
83 |
|
84 |
-
echo '<div class="updated"><p>' . sprintf( __( '%d Variations Deleted', '
|
85 |
}
|
86 |
|
87 |
/**
|
@@ -96,7 +96,7 @@ class WF_ProdImpExpCsv_System_Status_Tools {
|
|
96 |
LEFT JOIN {$wpdb->posts} wp ON wp.ID = products.post_parent
|
97 |
WHERE wp.ID IS NULL AND products.post_type = 'product_variation';" ) );
|
98 |
|
99 |
-
echo '<div class="updated"><p>' . sprintf( __( '%d Variations Deleted', '
|
100 |
}
|
101 |
}
|
102 |
|
19 |
*/
|
20 |
public function tools( $tools ) {
|
21 |
$tools['delete_products'] = array(
|
22 |
+
'name' => __( 'Delete Products','product-import-export-for-woo'),
|
23 |
+
'button' => __( 'Delete ALL products','product-import-export-for-woo' ),
|
24 |
+
'desc' => __( 'This tool will delete all products allowing you to start fresh.', 'product-import-export-for-woo' ),
|
25 |
'callback' => array( $this, 'delete_products' )
|
26 |
);
|
27 |
$tools['delete_variations'] = array(
|
28 |
+
'name' => __( 'Delete Variations','product-import-export-for-woo'),
|
29 |
+
'button' => __( 'Delete ALL variations','product-import-export-for-woo' ),
|
30 |
+
'desc' => __( 'This tool will delete all variations allowing you to start fresh.', 'product-import-export-for-woo' ),
|
31 |
'callback' => array( $this, 'delete_variations' )
|
32 |
);
|
33 |
$tools['delete_orphaned_variations'] = array(
|
34 |
+
'name' => __( 'Delete Orphans','product-import-export-for-woo'),
|
35 |
+
'button' => __( 'Delete orphaned variations','product-import-export-for-woo' ),
|
36 |
+
'desc' => __( 'This tool will delete variations which have no parent.', 'product-import-export-for-woo' ),
|
37 |
'callback' => array( $this, 'delete_orphaned_variations' )
|
38 |
);
|
39 |
return $tools;
|
59 |
LEFT JOIN {$wpdb->posts} wp ON wp.ID = tr.object_id
|
60 |
WHERE wp.ID IS NULL" );
|
61 |
|
62 |
+
echo '<div class="updated"><p>' . sprintf( __( '%d Products Deleted', 'product-import-export-for-woo' ), ( $result + $result2 ) ) . '</p></div>';
|
63 |
}
|
64 |
|
65 |
/**
|
81 |
LEFT JOIN {$wpdb->posts} wp ON wp.ID = tr.object_id
|
82 |
WHERE wp.ID IS NULL" );
|
83 |
|
84 |
+
echo '<div class="updated"><p>' . sprintf( __( '%d Variations Deleted', 'product-import-export-for-woo' ), $result ) . '</p></div>';
|
85 |
}
|
86 |
|
87 |
/**
|
96 |
LEFT JOIN {$wpdb->posts} wp ON wp.ID = products.post_parent
|
97 |
WHERE wp.ID IS NULL AND products.post_type = 'product_variation';" ) );
|
98 |
|
99 |
+
echo '<div class="updated"><p>' . sprintf( __( '%d Variations Deleted', 'product-import-export-for-woo' ), $result ) . '</p></div>';
|
100 |
}
|
101 |
}
|
102 |
|
includes/importer/class-wf-csv-parser.php
CHANGED
@@ -190,12 +190,12 @@ class WF_CSV_Parser {
|
|
190 |
$product['merging'] = true;
|
191 |
|
192 |
|
193 |
-
$WF_CSV_Product_Import->hf_log_data_change('csv-import', sprintf(__('> Row %s - preparing for merge.', '
|
194 |
|
195 |
// Required fields
|
196 |
if (!$post_id && empty($item['sku'])) {
|
197 |
|
198 |
-
$WF_CSV_Product_Import->hf_log_data_change('csv-import', __('> > Cannot merge without id or sku. Importing instead.', '
|
199 |
|
200 |
$merging = false;
|
201 |
} else {
|
@@ -213,13 +213,13 @@ class WF_CSV_Parser {
|
|
213 |
", $item['sku']);
|
214 |
$found_product_id = $wpdb->get_var($db_query);
|
215 |
if (!$found_product_id) {
|
216 |
-
$WF_CSV_Product_Import->hf_log_data_change('csv-import', sprintf(__('> > Skipped. Cannot find product with sku %s. Importing instead.', '
|
217 |
$merging = false;
|
218 |
} else {
|
219 |
|
220 |
$post_id = $found_product_id;
|
221 |
|
222 |
-
$WF_CSV_Product_Import->hf_log_data_change('csv-import', sprintf(__('> > Found product with ID %s.', '
|
223 |
}
|
224 |
}
|
225 |
}
|
@@ -228,17 +228,17 @@ class WF_CSV_Parser {
|
|
228 |
if (!$merging) {
|
229 |
|
230 |
$product['merging'] = false;
|
231 |
-
$WF_CSV_Product_Import->hf_log_data_change('csv-import', sprintf(__('> Row %s - preparing for import.', '
|
232 |
|
233 |
// Required fields
|
234 |
if (isset($item['post_parent']) && $item['post_parent'] === '' && $item['post_title'] === '') {
|
235 |
-
$WF_CSV_Product_Import->hf_log_data_change('csv-import', __('> > Skipped. No post_title set for new product.', '
|
236 |
-
return new WP_Error('parse-error', __('No post_title set for new product.', '
|
237 |
}
|
238 |
if (!empty($item['post_parent']) && $item['post_parent'] !== '' && $item['post_parent'] !== null && $item['parent_sku'] === '') {
|
239 |
-
$WF_CSV_Product_Import->hf_log_data_change('csv-import', __('> > Skipped. No parent set for new variation product.', '
|
240 |
-
//return new WP_Error( 'parse-error', __( 'No post_title set for new product.', '
|
241 |
-
return new WP_Error('parse-error', __('No parent set for new variation product.', '
|
242 |
}
|
243 |
}
|
244 |
|
@@ -473,7 +473,7 @@ class WF_CSV_Parser {
|
|
473 |
|
474 |
// Exists?
|
475 |
if (!taxonomy_exists($taxonomy)) {
|
476 |
-
$WF_CSV_Product_Import->hf_log_data_change('csv-import', sprintf(__('> > Skipping taxonomy "%s" - it does not exist.', '
|
477 |
continue;
|
478 |
}
|
479 |
|
@@ -482,7 +482,7 @@ class WF_CSV_Parser {
|
|
482 |
$term = strtolower(trim($value));
|
483 |
|
484 |
if (!array_key_exists($term, $this->allowed_product_types)) {
|
485 |
-
$WF_CSV_Product_Import->hf_log_data_change('csv-import', sprintf(__('> > > Product type "%s" not allowed - using simple.', '
|
486 |
$term_id = $this->allowed_product_types['simple'];
|
487 |
} else {
|
488 |
$term_id = $this->allowed_product_types[$term];
|
@@ -534,7 +534,7 @@ class WF_CSV_Parser {
|
|
534 |
*/
|
535 |
$term_may_exist = term_exists($term, $taxonomy, absint($parent));
|
536 |
|
537 |
-
$WF_CSV_Product_Import->hf_log_data_change('csv-import', sprintf(__('> > (' . __LINE__ . ') Term %s (%s) exists? %s', '
|
538 |
|
539 |
if (is_array($term_may_exist)) {
|
540 |
$possible_term = get_term($term_may_exist['term_id'], 'product_cat');
|
@@ -554,7 +554,7 @@ class WF_CSV_Parser {
|
|
554 |
if (!is_wp_error($t)) {
|
555 |
$term_id = $t['term_id'];
|
556 |
} else {
|
557 |
-
$WF_CSV_Product_Import->hf_log_data_change('csv-import', sprintf(__('> > (' . __LINE__ . ') Failed to import term %s, parent %s - %s', '
|
558 |
break;
|
559 |
}
|
560 |
}
|
@@ -591,7 +591,7 @@ class WF_CSV_Parser {
|
|
591 |
if (!is_wp_error($t)) {
|
592 |
$term_id = $t['term_id'];
|
593 |
} else {
|
594 |
-
$WF_CSV_Product_Import->hf_log_data_change('csv-import', sprintf(__('> > Failed to import term %s %s', '
|
595 |
break;
|
596 |
}
|
597 |
}
|
@@ -640,7 +640,7 @@ class WF_CSV_Parser {
|
|
640 |
|
641 |
$attribute_label = ucwords(str_replace('-', ' ', $nicename)); // for importing attribute name as human readable string
|
642 |
|
643 |
-
$WF_CSV_Product_Import->hf_log_data_change('csv-import', sprintf(__('> > Attribute taxonomy "%s" does not exist. Adding it. Nicename: %s', '
|
644 |
|
645 |
$exists_in_db = $wpdb->get_var("SELECT attribute_id FROM " . $wpdb->prefix . "woocommerce_attribute_taxonomies WHERE attribute_name = '" . $nicename . "';");
|
646 |
|
@@ -648,7 +648,7 @@ class WF_CSV_Parser {
|
|
648 |
// Create the taxonomy
|
649 |
$wpdb->insert($wpdb->prefix . "woocommerce_attribute_taxonomies", array('attribute_name' => $nicename, 'attribute_label' => $attribute_label, 'attribute_type' => 'select', 'attribute_orderby' => 'menu_order'));
|
650 |
} else {
|
651 |
-
$WF_CSV_Product_Import->hf_log_data_change('csv-import', sprintf(__('> > Attribute taxonomy %s already exists in DB.', '
|
652 |
}
|
653 |
|
654 |
// Register the taxonomy now so that the import works!
|
@@ -691,13 +691,13 @@ class WF_CSV_Parser {
|
|
691 |
if (!is_wp_error($t)) {
|
692 |
$term_id = $t['term_id'];
|
693 |
|
694 |
-
$WF_CSV_Product_Import->hf_log_data_change('csv-import', sprintf(__('> > Inserted Raw Term %s ID = %s', '
|
695 |
} else {
|
696 |
-
$WF_CSV_Product_Import->hf_log_data_change('csv-import', sprintf(__('> > Failed to import term %s %s', '
|
697 |
break;
|
698 |
}
|
699 |
} else {
|
700 |
-
$WF_CSV_Product_Import->hf_log_data_change('csv-import', sprintf(__('> > Raw Term %s ID = %s', '
|
701 |
}
|
702 |
|
703 |
if ($term_id) {
|
190 |
$product['merging'] = true;
|
191 |
|
192 |
|
193 |
+
$WF_CSV_Product_Import->hf_log_data_change('csv-import', sprintf(__('> Row %s - preparing for merge.', 'product-import-export-for-woo'), $this->row));
|
194 |
|
195 |
// Required fields
|
196 |
if (!$post_id && empty($item['sku'])) {
|
197 |
|
198 |
+
$WF_CSV_Product_Import->hf_log_data_change('csv-import', __('> > Cannot merge without id or sku. Importing instead.', 'product-import-export-for-woo'));
|
199 |
|
200 |
$merging = false;
|
201 |
} else {
|
213 |
", $item['sku']);
|
214 |
$found_product_id = $wpdb->get_var($db_query);
|
215 |
if (!$found_product_id) {
|
216 |
+
$WF_CSV_Product_Import->hf_log_data_change('csv-import', sprintf(__('> > Skipped. Cannot find product with sku %s. Importing instead.', 'product-import-export-for-woo'), $item['sku']));
|
217 |
$merging = false;
|
218 |
} else {
|
219 |
|
220 |
$post_id = $found_product_id;
|
221 |
|
222 |
+
$WF_CSV_Product_Import->hf_log_data_change('csv-import', sprintf(__('> > Found product with ID %s.', 'product-import-export-for-woo'), $post_id));
|
223 |
}
|
224 |
}
|
225 |
}
|
228 |
if (!$merging) {
|
229 |
|
230 |
$product['merging'] = false;
|
231 |
+
$WF_CSV_Product_Import->hf_log_data_change('csv-import', sprintf(__('> Row %s - preparing for import.', 'product-import-export-for-woo'), $this->row));
|
232 |
|
233 |
// Required fields
|
234 |
if (isset($item['post_parent']) && $item['post_parent'] === '' && $item['post_title'] === '') {
|
235 |
+
$WF_CSV_Product_Import->hf_log_data_change('csv-import', __('> > Skipped. No post_title set for new product.', 'product-import-export-for-woo'));
|
236 |
+
return new WP_Error('parse-error', __('No post_title set for new product.', 'product-import-export-for-woo'));
|
237 |
}
|
238 |
if (!empty($item['post_parent']) && $item['post_parent'] !== '' && $item['post_parent'] !== null && $item['parent_sku'] === '') {
|
239 |
+
$WF_CSV_Product_Import->hf_log_data_change('csv-import', __('> > Skipped. No parent set for new variation product.', 'product-import-export-for-woo'));
|
240 |
+
//return new WP_Error( 'parse-error', __( 'No post_title set for new product.', 'product-import-export-for-woo' ) );
|
241 |
+
return new WP_Error('parse-error', __('No parent set for new variation product.', 'product-import-export-for-woo'));
|
242 |
}
|
243 |
}
|
244 |
|
473 |
|
474 |
// Exists?
|
475 |
if (!taxonomy_exists($taxonomy)) {
|
476 |
+
$WF_CSV_Product_Import->hf_log_data_change('csv-import', sprintf(__('> > Skipping taxonomy "%s" - it does not exist.', 'product-import-export-for-woo'), $taxonomy));
|
477 |
continue;
|
478 |
}
|
479 |
|
482 |
$term = strtolower(trim($value));
|
483 |
|
484 |
if (!array_key_exists($term, $this->allowed_product_types)) {
|
485 |
+
$WF_CSV_Product_Import->hf_log_data_change('csv-import', sprintf(__('> > > Product type "%s" not allowed - using simple.', 'product-import-export-for-woo'), $term));
|
486 |
$term_id = $this->allowed_product_types['simple'];
|
487 |
} else {
|
488 |
$term_id = $this->allowed_product_types[$term];
|
534 |
*/
|
535 |
$term_may_exist = term_exists($term, $taxonomy, absint($parent));
|
536 |
|
537 |
+
$WF_CSV_Product_Import->hf_log_data_change('csv-import', sprintf(__('> > (' . __LINE__ . ') Term %s (%s) exists? %s', 'product-import-export-for-woo'), sanitize_text_field($term), esc_html($taxonomy), $term_may_exist ? print_r($term_may_exist, true) : '-' ));
|
538 |
|
539 |
if (is_array($term_may_exist)) {
|
540 |
$possible_term = get_term($term_may_exist['term_id'], 'product_cat');
|
554 |
if (!is_wp_error($t)) {
|
555 |
$term_id = $t['term_id'];
|
556 |
} else {
|
557 |
+
$WF_CSV_Product_Import->hf_log_data_change('csv-import', sprintf(__('> > (' . __LINE__ . ') Failed to import term %s, parent %s - %s', 'product-import-export-for-woo'), sanitize_text_field($term), sanitize_text_field($parent), sanitize_text_field($taxonomy)));
|
558 |
break;
|
559 |
}
|
560 |
}
|
591 |
if (!is_wp_error($t)) {
|
592 |
$term_id = $t['term_id'];
|
593 |
} else {
|
594 |
+
$WF_CSV_Product_Import->hf_log_data_change('csv-import', sprintf(__('> > Failed to import term %s %s', 'product-import-export-for-woo'), esc_html($raw_term), esc_html($taxonomy)));
|
595 |
break;
|
596 |
}
|
597 |
}
|
640 |
|
641 |
$attribute_label = ucwords(str_replace('-', ' ', $nicename)); // for importing attribute name as human readable string
|
642 |
|
643 |
+
$WF_CSV_Product_Import->hf_log_data_change('csv-import', sprintf(__('> > Attribute taxonomy "%s" does not exist. Adding it. Nicename: %s', 'product-import-export-for-woo'), $taxonomy, $nicename));
|
644 |
|
645 |
$exists_in_db = $wpdb->get_var("SELECT attribute_id FROM " . $wpdb->prefix . "woocommerce_attribute_taxonomies WHERE attribute_name = '" . $nicename . "';");
|
646 |
|
648 |
// Create the taxonomy
|
649 |
$wpdb->insert($wpdb->prefix . "woocommerce_attribute_taxonomies", array('attribute_name' => $nicename, 'attribute_label' => $attribute_label, 'attribute_type' => 'select', 'attribute_orderby' => 'menu_order'));
|
650 |
} else {
|
651 |
+
$WF_CSV_Product_Import->hf_log_data_change('csv-import', sprintf(__('> > Attribute taxonomy %s already exists in DB.', 'product-import-export-for-woo'), $taxonomy));
|
652 |
}
|
653 |
|
654 |
// Register the taxonomy now so that the import works!
|
691 |
if (!is_wp_error($t)) {
|
692 |
$term_id = $t['term_id'];
|
693 |
|
694 |
+
$WF_CSV_Product_Import->hf_log_data_change('csv-import', sprintf(__('> > Inserted Raw Term %s ID = %s', 'product-import-export-for-woo'), esc_html($raw_term), $term_id));
|
695 |
} else {
|
696 |
+
$WF_CSV_Product_Import->hf_log_data_change('csv-import', sprintf(__('> > Failed to import term %s %s', 'product-import-export-for-woo'), esc_html($raw_term), esc_html($taxonomy)));
|
697 |
break;
|
698 |
}
|
699 |
} else {
|
700 |
+
$WF_CSV_Product_Import->hf_log_data_change('csv-import', sprintf(__('> > Raw Term %s ID = %s', 'product-import-export-for-woo'), esc_html($raw_term), $term_id));
|
701 |
}
|
702 |
|
703 |
if ($term_id) {
|
includes/importer/class-wf-prodimpexpcsv-product-import.php
CHANGED
@@ -97,7 +97,7 @@ class WF_ProdImpExpCsv_Product_Import extends WP_Importer {
|
|
97 |
if ( !empty($_GET['clearmapping']) || $this->handle_upload() )
|
98 |
$this->import_options();
|
99 |
else
|
100 |
-
_e( 'Error with handle_upload!', '
|
101 |
break;
|
102 |
case 2 :
|
103 |
$this->header();
|
@@ -122,10 +122,10 @@ class WF_ProdImpExpCsv_Product_Import extends WP_Importer {
|
|
122 |
<thead>
|
123 |
<tr>
|
124 |
<th class="status"> </th>
|
125 |
-
<th class="row"><?php _e( 'Row', '
|
126 |
-
<th><?php _e( 'SKU', '
|
127 |
-
<th><?php _e( 'Product', '
|
128 |
-
<th class="reason"><?php _e( 'Status Msg', '
|
129 |
</tr>
|
130 |
</thead>
|
131 |
<tfoot>
|
@@ -168,7 +168,7 @@ class WF_ProdImpExpCsv_Product_Import extends WP_Importer {
|
|
168 |
data: data,
|
169 |
type: 'POST',
|
170 |
success: function( response ) {
|
171 |
-
|
172 |
if ( response ) {
|
173 |
|
174 |
try {
|
@@ -219,7 +219,7 @@ class WF_ProdImpExpCsv_Product_Import extends WP_Importer {
|
|
219 |
} catch(err) {}
|
220 |
|
221 |
} else {
|
222 |
-
$('#import-progress tbody').append( '<tr class="error"><td class="status" colspan="5">' + '<?php _e( 'AJAX Error', '
|
223 |
}
|
224 |
|
225 |
var w = $(window);
|
@@ -324,7 +324,7 @@ class WF_ProdImpExpCsv_Product_Import extends WP_Importer {
|
|
324 |
if ( response !== Object( response ) || ( typeof response.success === "undefined" && typeof response.error === "undefined" ) ) {
|
325 |
response = new Object;
|
326 |
response.success = false;
|
327 |
-
response.error = "<?php printf( esc_js( __( 'The resize request was abnormally terminated (ID %s). This is likely due to the image exceeding available memory or some other type of fatal error.', '
|
328 |
}
|
329 |
|
330 |
//regen_count ++;
|
@@ -337,8 +337,8 @@ class WF_ProdImpExpCsv_Product_Import extends WP_Importer {
|
|
337 |
|
338 |
|
339 |
all_regen_count = failed_regen_count + regen_count;
|
340 |
-
$('#import-progress tbody .regenerating .progress').css( 'width', ( ( all_regen_count / attachments.length ) * 100 ) + '%' ).html( regen_count + ' / ' + attachments.length + ' <?php echo esc_js(__('thumbnails regenerated.', '
|
341 |
-
//$('#import-progress tbody .regenerating .progress').css( 'width', ( ( regen_count / attachments.length ) * 100 ) + '%' ).html( regen_count + ' / ' + attachments.length + ' <?php //echo esc_js( __( 'thumbnails regenerated', '
|
342 |
|
343 |
// if ( ! response.success ) {
|
344 |
// $('#import-progress tbody').append( '<tr><td colspan="5">' + response.error + '</td></tr>' );
|
@@ -348,7 +348,7 @@ class WF_ProdImpExpCsv_Product_Import extends WP_Importer {
|
|
348 |
//console.log('On Error:-'+JSON.stringify(response, null, 4));
|
349 |
failed_regen_count++;
|
350 |
all_regen_count = failed_regen_count + regen_count;
|
351 |
-
$('#import-progress tbody .regenerating .progress').css( 'width', ( ( all_regen_count / attachments.length ) * 100 ) + '%' ).html( regen_count + ' / ' + attachments.length + ' <?php echo esc_js(__('thumbnails regenerated.', '
|
352 |
//$('#import-progress tbody').append( '<tr><td colspan="5">' + response.error + '</td></tr>' );
|
353 |
}
|
354 |
});
|
@@ -380,7 +380,7 @@ class WF_ProdImpExpCsv_Product_Import extends WP_Importer {
|
|
380 |
</script>
|
381 |
<?php
|
382 |
} else {
|
383 |
-
echo '<p class="error">' . __( 'Error finding uploaded file!', '
|
384 |
}
|
385 |
break;
|
386 |
case 3 :
|
@@ -445,12 +445,12 @@ class WF_ProdImpExpCsv_Product_Import extends WP_Importer {
|
|
445 |
$this->crosssell_skus = isset( $_POST['crosssell_skus']) ? array_filter( (array) $_POST['crosssell_skus'] ) : array();
|
446 |
$this->upsell_skus = isset( $_POST['upsell_skus']) ? array_filter( (array) $_POST['upsell_skus'] ) : array();
|
447 |
|
448 |
-
_e( 'Step 1...', '
|
449 |
|
450 |
wp_defer_term_counting( true );
|
451 |
wp_defer_comment_counting( true );
|
452 |
|
453 |
-
_e( 'Step 2...', '
|
454 |
|
455 |
echo 'Step 3...' . ' '; // Easter egg
|
456 |
|
@@ -465,13 +465,13 @@ class WF_ProdImpExpCsv_Product_Import extends WP_Importer {
|
|
465 |
|
466 |
$wpdb->query("DELETE FROM `$wpdb->options` WHERE `option_name` LIKE ('_transient_wc_product_type_%')");
|
467 |
|
468 |
-
_e( 'Finalizing...', '
|
469 |
|
470 |
$this->backfill_parents();
|
471 |
|
472 |
if ( ! empty( $this->upsell_skus ) ) {
|
473 |
|
474 |
-
_e( 'Linking upsells...', '
|
475 |
|
476 |
foreach ( $this->upsell_skus as $post_id => $skus ) {
|
477 |
$this->link_product_skus( 'upsell', $post_id, $skus );
|
@@ -480,14 +480,14 @@ class WF_ProdImpExpCsv_Product_Import extends WP_Importer {
|
|
480 |
|
481 |
if ( ! empty( $this->crosssell_skus ) ) {
|
482 |
|
483 |
-
_e( 'Linking crosssells...', '
|
484 |
|
485 |
foreach ( $this->crosssell_skus as $post_id => $skus ) {
|
486 |
$this->link_product_skus( 'crosssell', $post_id, $skus );
|
487 |
}
|
488 |
}
|
489 |
// SUCCESS
|
490 |
-
_e( 'Finished. Import complete.', '
|
491 |
|
492 |
$this->import_end();
|
493 |
exit;
|
@@ -546,7 +546,7 @@ class WF_ProdImpExpCsv_Product_Import extends WP_Importer {
|
|
546 |
//if(count(array_intersect_key ( $mapping_from_db[0] , $row)) == count($mapping_from_db[0])){
|
547 |
$reset_action = 'admin.php?clearmapping=1&import=' . $this->import_page . '&step=1&merge=' . $this->merge . '&file_url=' . $this->file_url . '&delimiter=' . $this->delimiter . '&merge_empty_cells=' . $this->merge_empty_cells . '&file_id=' . $this->id . '';
|
548 |
$reset_action = esc_attr(wp_nonce_url($reset_action, 'import-upload'));
|
549 |
-
echo '<h3>' . __( 'Map to fields are pre-selected based on your last import. <a href="'.$reset_action.'">Click here</a> to clear saved mapping.', '
|
550 |
$saved_mapping = $mapping_from_db[0];
|
551 |
$saved_evaluation = $mapping_from_db[1];
|
552 |
//}
|
@@ -583,7 +583,7 @@ class WF_ProdImpExpCsv_Product_Import extends WP_Importer {
|
|
583 |
wp_suspend_cache_invalidation( true );
|
584 |
|
585 |
$this->hf_log_data_change( 'csv-import', '---' );
|
586 |
-
$this->hf_log_data_change( 'csv-import', __( 'Processing products.', '
|
587 |
foreach ( $this->parsed_data as $key => &$item ) {
|
588 |
|
589 |
$product = $this->parser->parse_product( $item, $this->merge_empty_cells );
|
@@ -594,7 +594,7 @@ class WF_ProdImpExpCsv_Product_Import extends WP_Importer {
|
|
594 |
}
|
595 |
unset( $item, $product );
|
596 |
}
|
597 |
-
$this->hf_log_data_change( 'csv-import', __( 'Finished processing products.', '
|
598 |
wp_suspend_cache_invalidation( false );
|
599 |
}
|
600 |
|
@@ -627,13 +627,13 @@ class WF_ProdImpExpCsv_Product_Import extends WP_Importer {
|
|
627 |
|
628 |
}
|
629 |
$this->hf_log_data_change( 'csv-import', '---[ New Import ] PHP Memory: ' . $memory . ', WP Memory: ' . $wp_memory );
|
630 |
-
$this->hf_log_data_change( 'csv-import', __( 'Parsing products CSV.', '
|
631 |
|
632 |
$this->parser = new WF_CSV_Parser( 'product' );
|
633 |
|
634 |
list( $this->parsed_data, $this->raw_headers, $position ) = $this->parser->parse_data( $file, $this->delimiter, $mapping, $start_pos, $end_pos, $eval_field );
|
635 |
|
636 |
-
$this->hf_log_data_change( 'csv-import', __( 'Finished parsing products CSV.', '
|
637 |
|
638 |
unset( $import_data );
|
639 |
|
@@ -675,7 +675,7 @@ class WF_ProdImpExpCsv_Product_Import extends WP_Importer {
|
|
675 |
$file = wp_import_handle_upload();
|
676 |
|
677 |
if ( isset( $file['error'] ) ) {
|
678 |
-
echo '<p><strong>' . __( 'Sorry, there has been an error.', '
|
679 |
echo esc_html( $file['error'] ) . '</p>';
|
680 |
return false;
|
681 |
}
|
@@ -692,7 +692,7 @@ class WF_ProdImpExpCsv_Product_Import extends WP_Importer {
|
|
692 |
|
693 |
} else {
|
694 |
|
695 |
-
echo '<p><strong>' . __( 'Sorry, there has been an error.', '
|
696 |
return false;
|
697 |
|
698 |
}
|
@@ -805,37 +805,58 @@ class WF_ProdImpExpCsv_Product_Import extends WP_Importer {
|
|
805 |
}
|
806 |
|
807 |
if ( ! empty( $processing_product_id ) && isset( $this->processed_posts[ $processing_product_id ] ) ) {
|
808 |
-
$this->add_import_result( 'skipped', __( 'Product already processed', '
|
809 |
-
$this->hf_log_data_change( 'csv-import', __('> Post ID already processed. Skipping.', '
|
810 |
unset( $post );
|
811 |
return;
|
812 |
}
|
813 |
|
814 |
if ( ! empty ( $post['post_status'] ) && $post['post_status'] == 'auto-draft' ) {
|
815 |
-
$this->add_import_result( 'skipped', __( 'Skipping auto-draft', '
|
816 |
-
$this->hf_log_data_change( 'csv-import', __('> Skipping auto-draft.', '
|
817 |
unset( $post );
|
818 |
return;
|
819 |
}
|
820 |
// Check if post exists when importing
|
821 |
|
822 |
if ( ! $merging ) {
|
823 |
-
|
824 |
if(!$processing_product_id && empty($processing_product_sku)) {
|
825 |
// if no sku , no id and no merge + is product in db with same title -> just give message
|
826 |
$usr_msg = 'Product with same title already exist.';
|
827 |
}else{
|
828 |
$usr_msg = 'Product already exists.';
|
829 |
}
|
830 |
-
$this->add_import_result( 'skipped', __( $usr_msg, '
|
831 |
-
$this->hf_log_data_change( 'csv-import', sprintf( __('> “%s”'.$usr_msg, '
|
832 |
unset( $post );
|
833 |
return;
|
834 |
}
|
835 |
-
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
836 |
if ( $processing_product_id && is_string( get_post_status( $processing_product_id ) ) ) {
|
837 |
-
$this->add_import_result( 'skipped', __( 'Importing post ID conflicts with an existing post ID', '
|
838 |
-
$this->hf_log_data_change( 'csv-import', sprintf( __('> “%s” ID already exists.', '
|
839 |
unset( $post );
|
840 |
return;
|
841 |
}
|
@@ -845,9 +866,9 @@ class WF_ProdImpExpCsv_Product_Import extends WP_Importer {
|
|
845 |
// if ( ! $merging ) {
|
846 |
// error_log('<pre>$this->wf_get_product_id_by_sku( $processing_product_sku ):-' . print_r($this->wf_get_product_id_by_sku( $processing_product_sku ), 1) . '</per>', 3, ABSPATH . "/wp-content/uploads/wc-logs/test-log.txt");
|
847 |
// if ( $this->wf_get_product_id_by_sku( $processing_product_sku ) ) {
|
848 |
-
//// $usr_msg = __( 'Product already exists.', '
|
849 |
//// $this->add_import_result( 'skipped',$usr_msg, $processing_product_id, $processing_product_title, $processing_product_sku );
|
850 |
-
//// $this->hf_log_data_change( 'csv-import', sprintf( __('> “%s” Product already exists.', '
|
851 |
//// unset( $post );
|
852 |
//// return;
|
853 |
//
|
@@ -857,15 +878,15 @@ class WF_ProdImpExpCsv_Product_Import extends WP_Importer {
|
|
857 |
// }else{
|
858 |
// $usr_msg = 'Product already exists.';
|
859 |
// }
|
860 |
-
// $this->add_import_result( 'skipped', __( $usr_msg, '
|
861 |
-
// $this->hf_log_data_change( 'csv-import', sprintf( __('> “%s”'.$usr_msg, '
|
862 |
// unset( $post );
|
863 |
// return;
|
864 |
// }
|
865 |
//
|
866 |
// if ( $processing_product_id && is_string( get_post_status( $processing_product_id ) ) ) {
|
867 |
-
// $this->add_import_result( 'skipped', __( 'Importing post ID conflicts with an existing post ID', '
|
868 |
-
// $this->hf_log_data_change( 'csv-import', sprintf( __('> “%s” ID already exists.', '
|
869 |
// unset( $post );
|
870 |
// return;
|
871 |
// }
|
@@ -873,8 +894,8 @@ class WF_ProdImpExpCsv_Product_Import extends WP_Importer {
|
|
873 |
// Check post type to avoid conflicts with IDs
|
874 |
$is_post_exist_in_db = get_post_type( $processing_product_id );
|
875 |
if ( $merging && $processing_product_id && !empty($is_post_exist_in_db) && ($is_post_exist_in_db !== $post['post_type'] )) {
|
876 |
-
$this->add_import_result( 'skipped', __( 'Post is not a product', '
|
877 |
-
$this->hf_log_data_change( 'csv-import', sprintf( __('> “%s” is not a product.', '
|
878 |
unset( $post );
|
879 |
return;
|
880 |
}
|
@@ -884,7 +905,7 @@ class WF_ProdImpExpCsv_Product_Import extends WP_Importer {
|
|
884 |
// Only merge fields which are set
|
885 |
$post_id = $processing_product_id;
|
886 |
|
887 |
-
$this->hf_log_data_change( 'csv-import', sprintf( __('> Merging post ID %s.', '
|
888 |
|
889 |
$postdata = array(
|
890 |
'ID' => $post_id
|
@@ -947,12 +968,12 @@ class WF_ProdImpExpCsv_Product_Import extends WP_Importer {
|
|
947 |
$result = wp_update_post( $postdata );
|
948 |
|
949 |
if ( ! $result ) {
|
950 |
-
$this->add_import_result( 'failed', __( 'Failed to update product', '
|
951 |
-
$this->hf_log_data_change( 'csv-import', sprintf( __('> Failed to update product %s', '
|
952 |
unset( $post );
|
953 |
return;
|
954 |
} else {
|
955 |
-
$this->hf_log_data_change( 'csv-import', __( '> Merged post data: ', '
|
956 |
}
|
957 |
}
|
958 |
|
@@ -981,7 +1002,7 @@ class WF_ProdImpExpCsv_Product_Import extends WP_Importer {
|
|
981 |
}
|
982 |
|
983 |
// Insert product
|
984 |
-
$this->hf_log_data_change( 'csv-import', sprintf( __('> Inserting %s', '
|
985 |
$postdata = array(
|
986 |
'import_id' => $processing_product_id,
|
987 |
'post_author' => !empty($post['post_author']) ? absint($post['post_author']) : get_current_user_id(),
|
@@ -1003,14 +1024,14 @@ class WF_ProdImpExpCsv_Product_Import extends WP_Importer {
|
|
1003 |
|
1004 |
if ( is_wp_error( $post_id ) ) {
|
1005 |
|
1006 |
-
$this->add_import_result( 'failed', __( 'Failed to import product', '
|
1007 |
-
$this->hf_log_data_change( 'csv-import', sprintf( __( 'Failed to import product “%s”', '
|
1008 |
unset( $post );
|
1009 |
return;
|
1010 |
|
1011 |
} else {
|
1012 |
|
1013 |
-
$this->hf_log_data_change( 'csv-import', sprintf( __('> Inserted - post ID is %s.', '
|
1014 |
|
1015 |
}
|
1016 |
}
|
@@ -1115,7 +1136,7 @@ class WF_ProdImpExpCsv_Product_Import extends WP_Importer {
|
|
1115 |
if ( $image == $attachment_url || basename( $image ) == $attachment_basename ) {
|
1116 |
unset( $post['images'][ $key ] );
|
1117 |
|
1118 |
-
$this->hf_log_data_change( 'csv-import', sprintf( __( '> > Image exists - skipping %s', '
|
1119 |
|
1120 |
if ( $key == 0 ) {
|
1121 |
update_post_meta( $post_id, '_thumbnail_id', $attachment );
|
@@ -1145,7 +1166,7 @@ class WF_ProdImpExpCsv_Product_Import extends WP_Importer {
|
|
1145 |
|
1146 |
if ( $post['images'] ) foreach ( $post['images'] as $image_key => $image ) {
|
1147 |
|
1148 |
-
$this->hf_log_data_change( 'csv-import', sprintf( __( '> > Importing image "%s"', '
|
1149 |
|
1150 |
$filename = basename( $image );
|
1151 |
|
@@ -1160,7 +1181,7 @@ class WF_ProdImpExpCsv_Product_Import extends WP_Importer {
|
|
1160 |
|
1161 |
if ( ! is_wp_error( $attachment_id ) && $attachment_id ) {
|
1162 |
|
1163 |
-
$this->hf_log_data_change( 'csv-import', sprintf( __( '> > Imported image "%s"', '
|
1164 |
|
1165 |
// Set alt
|
1166 |
update_post_meta( $attachment_id, '_wp_attachment_image_alt', $processing_product_title );
|
@@ -1175,14 +1196,14 @@ class WF_ProdImpExpCsv_Product_Import extends WP_Importer {
|
|
1175 |
|
1176 |
$featured = false;
|
1177 |
} else {
|
1178 |
-
$this->hf_log_data_change( 'csv-import', sprintf( __( '> > Error importing image "%s"', '
|
1179 |
$this->hf_log_data_change( 'csv-import', '> > ' . $attachment_id->get_error_message() );
|
1180 |
}
|
1181 |
|
1182 |
unset( $attachment, $attachment_id );
|
1183 |
}
|
1184 |
|
1185 |
-
$this->hf_log_data_change( 'csv-import', __( '> > Images set', '
|
1186 |
|
1187 |
ksort( $gallery_ids );
|
1188 |
|
@@ -1235,10 +1256,10 @@ class WF_ProdImpExpCsv_Product_Import extends WP_Importer {
|
|
1235 |
|
1236 |
if ( $merging ) {
|
1237 |
$this->add_import_result( 'merged', 'Merge successful', $post_id, $processing_product_title, $processing_product_sku );
|
1238 |
-
$this->hf_log_data_change( 'csv-import', sprintf( __('> Finished merging post ID %s.', '
|
1239 |
} else {
|
1240 |
$this->add_import_result( 'imported', 'Import successful', $post_id, $processing_product_title, $processing_product_sku );
|
1241 |
-
$this->hf_log_data_change( 'csv-import', sprintf( __('> Finished importing post ID %s.', '
|
1242 |
}
|
1243 |
|
1244 |
do_action('wf_refresh_after_product_import',$processing_product_object); // hook for forcefully refresh product
|
@@ -1284,7 +1305,7 @@ class WF_ProdImpExpCsv_Product_Import extends WP_Importer {
|
|
1284 |
if($image_id){
|
1285 |
$attachment_id = $image_id;
|
1286 |
|
1287 |
-
$this->hf_log_data_change('csv-import', sprintf(__('> > (Image already in the site)Inserted image attachment "%s"', '
|
1288 |
|
1289 |
$this->attachments[] = $attachment_id;
|
1290 |
|
@@ -1316,13 +1337,13 @@ class WF_ProdImpExpCsv_Product_Import extends WP_Importer {
|
|
1316 |
if ( $info = wp_check_filetype( $attachment_file ) )
|
1317 |
$post['post_mime_type'] = $info['type'];
|
1318 |
else
|
1319 |
-
return new WP_Error( 'attachment_processing_error', __('Invalid file type', '
|
1320 |
|
1321 |
|
1322 |
$image_id = $this->wt_get_image_id_by_url($attachment_url);
|
1323 |
if($image_id){
|
1324 |
$attachment_id = $image_id;
|
1325 |
-
$this->hf_log_data_change('csv-import', sprintf(__('> > (Image already in the site)Inserted image attachment "%s"', '
|
1326 |
$this->attachments[] = $attachment_id;
|
1327 |
return $attachment_id;
|
1328 |
}
|
@@ -1332,7 +1353,7 @@ class WF_ProdImpExpCsv_Product_Import extends WP_Importer {
|
|
1332 |
$attachment_id = wp_insert_attachment( $post, $attachment_file, $post_id );
|
1333 |
|
1334 |
} else {
|
1335 |
-
return new WP_Error( 'attachment_processing_error', __('Local image did not exist!', '
|
1336 |
}
|
1337 |
|
1338 |
} else {
|
@@ -1349,7 +1370,7 @@ class WF_ProdImpExpCsv_Product_Import extends WP_Importer {
|
|
1349 |
if ( $info = wp_check_filetype( $upload['file'] ) )
|
1350 |
$post['post_mime_type'] = $info['type'];
|
1351 |
else
|
1352 |
-
return new WP_Error( 'attachment_processing_error', __('Invalid file type', '
|
1353 |
|
1354 |
$post['guid'] = $upload['url'];
|
1355 |
$attachment_file = $upload['file'];
|
@@ -1362,7 +1383,7 @@ class WF_ProdImpExpCsv_Product_Import extends WP_Importer {
|
|
1362 |
}
|
1363 |
|
1364 |
if ( ! is_wp_error( $attachment_id ) && $attachment_id > 0 ) {
|
1365 |
-
$this->hf_log_data_change( 'csv-import', sprintf( __( '> > Inserted image attachment "%s"', '
|
1366 |
|
1367 |
$this->attachments[] = $attachment_id;
|
1368 |
}
|
@@ -1395,11 +1416,13 @@ class WF_ProdImpExpCsv_Product_Import extends WP_Importer {
|
|
1395 |
|
1396 |
// Get the file
|
1397 |
$response = wp_remote_get( $url, array(
|
1398 |
-
|
|
|
|
|
1399 |
) );
|
1400 |
|
1401 |
if ( is_wp_error( $response ) || wp_remote_retrieve_response_code( $response ) !== 200 )
|
1402 |
-
return new WP_Error( 'import_file_error',
|
1403 |
|
1404 |
// Ensure we have a file name and type
|
1405 |
if ( ! $wp_filetype['type'] ) {
|
@@ -1433,7 +1456,7 @@ class WF_ProdImpExpCsv_Product_Import extends WP_Importer {
|
|
1433 |
if ( 0 == $filesize ) {
|
1434 |
@unlink( $upload['file'] );
|
1435 |
unset( $upload );
|
1436 |
-
return new WP_Error( 'import_file_error', __('Zero size file downloaded', '
|
1437 |
}
|
1438 |
|
1439 |
unset( $response );
|
97 |
if ( !empty($_GET['clearmapping']) || $this->handle_upload() )
|
98 |
$this->import_options();
|
99 |
else
|
100 |
+
_e( 'Error with handle_upload!', 'product-import-export-for-woo' );
|
101 |
break;
|
102 |
case 2 :
|
103 |
$this->header();
|
122 |
<thead>
|
123 |
<tr>
|
124 |
<th class="status"> </th>
|
125 |
+
<th class="row"><?php _e( 'Row', 'product-import-export-for-woo' ); ?></th>
|
126 |
+
<th><?php _e( 'SKU', 'product-import-export-for-woo' ); ?></th>
|
127 |
+
<th><?php _e( 'Product', 'product-import-export-for-woo' ); ?></th>
|
128 |
+
<th class="reason"><?php _e( 'Status Msg', 'product-import-export-for-woo' ); ?></th>
|
129 |
</tr>
|
130 |
</thead>
|
131 |
<tfoot>
|
168 |
data: data,
|
169 |
type: 'POST',
|
170 |
success: function( response ) {
|
171 |
+
console.log( response );
|
172 |
if ( response ) {
|
173 |
|
174 |
try {
|
219 |
} catch(err) {}
|
220 |
|
221 |
} else {
|
222 |
+
$('#import-progress tbody').append( '<tr class="error"><td class="status" colspan="5">' + '<?php _e( 'AJAX Error', 'product-import-export-for-woo' ); ?>' + '</td></tr>' );
|
223 |
}
|
224 |
|
225 |
var w = $(window);
|
324 |
if ( response !== Object( response ) || ( typeof response.success === "undefined" && typeof response.error === "undefined" ) ) {
|
325 |
response = new Object;
|
326 |
response.success = false;
|
327 |
+
response.error = "<?php printf( esc_js( __( 'The resize request was abnormally terminated (ID %s). This is likely due to the image exceeding available memory or some other type of fatal error.', 'product-import-export-for-woo' ) ), '" + id + "' ); ?>";
|
328 |
}
|
329 |
|
330 |
//regen_count ++;
|
337 |
|
338 |
|
339 |
all_regen_count = failed_regen_count + regen_count;
|
340 |
+
$('#import-progress tbody .regenerating .progress').css( 'width', ( ( all_regen_count / attachments.length ) * 100 ) + '%' ).html( regen_count + ' / ' + attachments.length + ' <?php echo esc_js(__('thumbnails regenerated.', 'product-import-export-for-woo')); ?>' );
|
341 |
+
//$('#import-progress tbody .regenerating .progress').css( 'width', ( ( regen_count / attachments.length ) * 100 ) + '%' ).html( regen_count + ' / ' + attachments.length + ' <?php //echo esc_js( __( 'thumbnails regenerated', 'product-import-export-for-woo' ) ); ?>' );
|
342 |
|
343 |
// if ( ! response.success ) {
|
344 |
// $('#import-progress tbody').append( '<tr><td colspan="5">' + response.error + '</td></tr>' );
|
348 |
//console.log('On Error:-'+JSON.stringify(response, null, 4));
|
349 |
failed_regen_count++;
|
350 |
all_regen_count = failed_regen_count + regen_count;
|
351 |
+
$('#import-progress tbody .regenerating .progress').css( 'width', ( ( all_regen_count / attachments.length ) * 100 ) + '%' ).html( regen_count + ' / ' + attachments.length + ' <?php echo esc_js(__('thumbnails regenerated.', 'product-import-export-for-woo')); ?>' );
|
352 |
//$('#import-progress tbody').append( '<tr><td colspan="5">' + response.error + '</td></tr>' );
|
353 |
}
|
354 |
});
|
380 |
</script>
|
381 |
<?php
|
382 |
} else {
|
383 |
+
echo '<p class="error">' . __( 'Error finding uploaded file!', 'product-import-export-for-woo' ) . '</p>';
|
384 |
}
|
385 |
break;
|
386 |
case 3 :
|
445 |
$this->crosssell_skus = isset( $_POST['crosssell_skus']) ? array_filter( (array) $_POST['crosssell_skus'] ) : array();
|
446 |
$this->upsell_skus = isset( $_POST['upsell_skus']) ? array_filter( (array) $_POST['upsell_skus'] ) : array();
|
447 |
|
448 |
+
_e( 'Step 1...', 'product-import-export-for-woo' ) . ' ';
|
449 |
|
450 |
wp_defer_term_counting( true );
|
451 |
wp_defer_comment_counting( true );
|
452 |
|
453 |
+
_e( 'Step 2...', 'product-import-export-for-woo' ) . ' ';
|
454 |
|
455 |
echo 'Step 3...' . ' '; // Easter egg
|
456 |
|
465 |
|
466 |
$wpdb->query("DELETE FROM `$wpdb->options` WHERE `option_name` LIKE ('_transient_wc_product_type_%')");
|
467 |
|
468 |
+
_e( 'Finalizing...', 'product-import-export-for-woo' ) . ' ';
|
469 |
|
470 |
$this->backfill_parents();
|
471 |
|
472 |
if ( ! empty( $this->upsell_skus ) ) {
|
473 |
|
474 |
+
_e( 'Linking upsells...', 'product-import-export-for-woo' ) . ' ';
|
475 |
|
476 |
foreach ( $this->upsell_skus as $post_id => $skus ) {
|
477 |
$this->link_product_skus( 'upsell', $post_id, $skus );
|
480 |
|
481 |
if ( ! empty( $this->crosssell_skus ) ) {
|
482 |
|
483 |
+
_e( 'Linking crosssells...', 'product-import-export-for-woo' ) . ' ';
|
484 |
|
485 |
foreach ( $this->crosssell_skus as $post_id => $skus ) {
|
486 |
$this->link_product_skus( 'crosssell', $post_id, $skus );
|
487 |
}
|
488 |
}
|
489 |
// SUCCESS
|
490 |
+
_e( 'Finished. Import complete.', 'product-import-export-for-woo' );
|
491 |
|
492 |
$this->import_end();
|
493 |
exit;
|
546 |
//if(count(array_intersect_key ( $mapping_from_db[0] , $row)) == count($mapping_from_db[0])){
|
547 |
$reset_action = 'admin.php?clearmapping=1&import=' . $this->import_page . '&step=1&merge=' . $this->merge . '&file_url=' . $this->file_url . '&delimiter=' . $this->delimiter . '&merge_empty_cells=' . $this->merge_empty_cells . '&file_id=' . $this->id . '';
|
548 |
$reset_action = esc_attr(wp_nonce_url($reset_action, 'import-upload'));
|
549 |
+
echo '<h3>' . __( 'Map to fields are pre-selected based on your last import. <a href="'.$reset_action.'">Click here</a> to clear saved mapping.', 'product-import-export-for-woo' ) . '</h3>';
|
550 |
$saved_mapping = $mapping_from_db[0];
|
551 |
$saved_evaluation = $mapping_from_db[1];
|
552 |
//}
|
583 |
wp_suspend_cache_invalidation( true );
|
584 |
|
585 |
$this->hf_log_data_change( 'csv-import', '---' );
|
586 |
+
$this->hf_log_data_change( 'csv-import', __( 'Processing products.', 'product-import-export-for-woo' ) );
|
587 |
foreach ( $this->parsed_data as $key => &$item ) {
|
588 |
|
589 |
$product = $this->parser->parse_product( $item, $this->merge_empty_cells );
|
594 |
}
|
595 |
unset( $item, $product );
|
596 |
}
|
597 |
+
$this->hf_log_data_change( 'csv-import', __( 'Finished processing products.', 'product-import-export-for-woo' ) );
|
598 |
wp_suspend_cache_invalidation( false );
|
599 |
}
|
600 |
|
627 |
|
628 |
}
|
629 |
$this->hf_log_data_change( 'csv-import', '---[ New Import ] PHP Memory: ' . $memory . ', WP Memory: ' . $wp_memory );
|
630 |
+
$this->hf_log_data_change( 'csv-import', __( 'Parsing products CSV.', 'product-import-export-for-woo' ) );
|
631 |
|
632 |
$this->parser = new WF_CSV_Parser( 'product' );
|
633 |
|
634 |
list( $this->parsed_data, $this->raw_headers, $position ) = $this->parser->parse_data( $file, $this->delimiter, $mapping, $start_pos, $end_pos, $eval_field );
|
635 |
|
636 |
+
$this->hf_log_data_change( 'csv-import', __( 'Finished parsing products CSV.', 'product-import-export-for-woo' ) );
|
637 |
|
638 |
unset( $import_data );
|
639 |
|
675 |
$file = wp_import_handle_upload();
|
676 |
|
677 |
if ( isset( $file['error'] ) ) {
|
678 |
+
echo '<p><strong>' . __( 'Sorry, there has been an error.', 'product-import-export-for-woo' ) . '</strong><br />';
|
679 |
echo esc_html( $file['error'] ) . '</p>';
|
680 |
return false;
|
681 |
}
|
692 |
|
693 |
} else {
|
694 |
|
695 |
+
echo '<p><strong>' . __( 'Sorry, there has been an error.', 'product-import-export-for-woo' ) . '</strong></p>';
|
696 |
return false;
|
697 |
|
698 |
}
|
805 |
}
|
806 |
|
807 |
if ( ! empty( $processing_product_id ) && isset( $this->processed_posts[ $processing_product_id ] ) ) {
|
808 |
+
$this->add_import_result( 'skipped', __( 'Product already processed', 'product-import-export-for-woo' ), $processing_product_id, $processing_product_title, $processing_product_sku );
|
809 |
+
$this->hf_log_data_change( 'csv-import', __('> Post ID already processed. Skipping.', 'product-import-export-for-woo'), true );
|
810 |
unset( $post );
|
811 |
return;
|
812 |
}
|
813 |
|
814 |
if ( ! empty ( $post['post_status'] ) && $post['post_status'] == 'auto-draft' ) {
|
815 |
+
$this->add_import_result( 'skipped', __( 'Skipping auto-draft', 'product-import-export-for-woo' ), $processing_product_id, $processing_product_title, $processing_product_sku );
|
816 |
+
$this->hf_log_data_change( 'csv-import', __('> Skipping auto-draft.', 'product-import-export-for-woo'), true );
|
817 |
unset( $post );
|
818 |
return;
|
819 |
}
|
820 |
// Check if post exists when importing
|
821 |
|
822 |
if ( ! $merging ) {
|
823 |
+
/* if ( $this->product_exists( $processing_product_title, $processing_product_sku, $post['post_name'] ) ) {
|
824 |
if(!$processing_product_id && empty($processing_product_sku)) {
|
825 |
// if no sku , no id and no merge + is product in db with same title -> just give message
|
826 |
$usr_msg = 'Product with same title already exist.';
|
827 |
}else{
|
828 |
$usr_msg = 'Product already exists.';
|
829 |
}
|
830 |
+
$this->add_import_result( 'skipped', __( $usr_msg, 'product-import-export-for-woo' ), $processing_product_id, $processing_product_title, $processing_product_sku );
|
831 |
+
$this->hf_log_data_change( 'csv-import', sprintf( __('> “%s”'.$usr_msg, 'product-import-export-for-woo'), esc_html($processing_product_title) ), true );
|
832 |
unset( $post );
|
833 |
return;
|
834 |
}
|
835 |
+
*/
|
836 |
+
|
837 |
+
$existing_product = '';
|
838 |
+
if (isset($processing_product_sku) && !empty($processing_product_sku)) {
|
839 |
+
$existing_product = wc_get_product_id_by_sku($processing_product_sku);
|
840 |
+
}
|
841 |
+
if ($existing_product) {
|
842 |
+
if ($this->delete_products == 1) {
|
843 |
+
$product_to_be_deleted[] =$existing_product;
|
844 |
+
}
|
845 |
+
if (!$processing_product_id && empty($processing_product_sku)) {
|
846 |
+
// if no sku , no id and no merge and has same title in DB -> just give message
|
847 |
+
$usr_msg = 'Product with same title already exists.';
|
848 |
+
} else {
|
849 |
+
$usr_msg = 'Product already exists.';
|
850 |
+
}
|
851 |
+
$this->add_import_result('skipped', __($usr_msg, 'product-import-export-for-woo'), $existing_product, $processing_product_title, $processing_product_sku);
|
852 |
+
$this->hf_log_data_change('csv-import', sprintf(__('> “%s”' . $usr_msg, 'product-import-export-for-woo'), esc_html($processing_product_title)).' with post ID:'.$existing_product, true);
|
853 |
+
unset($post);
|
854 |
+
return;
|
855 |
+
}
|
856 |
+
|
857 |
if ( $processing_product_id && is_string( get_post_status( $processing_product_id ) ) ) {
|
858 |
+
$this->add_import_result( 'skipped', __( 'Importing post ID conflicts with an existing post ID', 'product-import-export-for-woo' ), $processing_product_id, get_the_title( $processing_product_id ), '' );
|
859 |
+
$this->hf_log_data_change( 'csv-import', sprintf( __('> “%s” ID already exists.', 'product-import-export-for-woo'), esc_html( $processing_product_id ) ), true );
|
860 |
unset( $post );
|
861 |
return;
|
862 |
}
|
866 |
// if ( ! $merging ) {
|
867 |
// error_log('<pre>$this->wf_get_product_id_by_sku( $processing_product_sku ):-' . print_r($this->wf_get_product_id_by_sku( $processing_product_sku ), 1) . '</per>', 3, ABSPATH . "/wp-content/uploads/wc-logs/test-log.txt");
|
868 |
// if ( $this->wf_get_product_id_by_sku( $processing_product_sku ) ) {
|
869 |
+
//// $usr_msg = __( 'Product already exists.', 'product-import-export-for-woo' );
|
870 |
//// $this->add_import_result( 'skipped',$usr_msg, $processing_product_id, $processing_product_title, $processing_product_sku );
|
871 |
+
//// $this->hf_log_data_change( 'csv-import', sprintf( __('> “%s” Product already exists.', 'product-import-export-for-woo'), esc_html($processing_product_title) ), true );
|
872 |
//// unset( $post );
|
873 |
//// return;
|
874 |
//
|
878 |
// }else{
|
879 |
// $usr_msg = 'Product already exists.';
|
880 |
// }
|
881 |
+
// $this->add_import_result( 'skipped', __( $usr_msg, 'product-import-export-for-woo' ), $processing_product_id, $processing_product_title, $processing_product_sku );
|
882 |
+
// $this->hf_log_data_change( 'csv-import', sprintf( __('> “%s”'.$usr_msg, 'product-import-export-for-woo'), esc_html($processing_product_title) ), true );
|
883 |
// unset( $post );
|
884 |
// return;
|
885 |
// }
|
886 |
//
|
887 |
// if ( $processing_product_id && is_string( get_post_status( $processing_product_id ) ) ) {
|
888 |
+
// $this->add_import_result( 'skipped', __( 'Importing post ID conflicts with an existing post ID', 'product-import-export-for-woo' ), $processing_product_id, get_the_title( $processing_product_id ), '' );
|
889 |
+
// $this->hf_log_data_change( 'csv-import', sprintf( __('> “%s” ID already exists.', 'product-import-export-for-woo'), esc_html( $processing_product_id ) ), true );
|
890 |
// unset( $post );
|
891 |
// return;
|
892 |
// }
|
894 |
// Check post type to avoid conflicts with IDs
|
895 |
$is_post_exist_in_db = get_post_type( $processing_product_id );
|
896 |
if ( $merging && $processing_product_id && !empty($is_post_exist_in_db) && ($is_post_exist_in_db !== $post['post_type'] )) {
|
897 |
+
$this->add_import_result( 'skipped', __( 'Post is not a product', 'product-import-export-for-woo' ), $processing_product_id, $processing_product_title, $processing_product_sku );
|
898 |
+
$this->hf_log_data_change( 'csv-import', sprintf( __('> “%s” is not a product.', 'product-import-export-for-woo'), esc_html($processing_product_id) ), true );
|
899 |
unset( $post );
|
900 |
return;
|
901 |
}
|
905 |
// Only merge fields which are set
|
906 |
$post_id = $processing_product_id;
|
907 |
|
908 |
+
$this->hf_log_data_change( 'csv-import', sprintf( __('> Merging post ID %s.', 'product-import-export-for-woo'), $post_id ), true );
|
909 |
|
910 |
$postdata = array(
|
911 |
'ID' => $post_id
|
968 |
$result = wp_update_post( $postdata );
|
969 |
|
970 |
if ( ! $result ) {
|
971 |
+
$this->add_import_result( 'failed', __( 'Failed to update product', 'product-import-export-for-woo' ), $post_id, $processing_product_title, $processing_product_sku );
|
972 |
+
$this->hf_log_data_change( 'csv-import', sprintf( __('> Failed to update product %s', 'product-import-export-for-woo'), $post_id ), true );
|
973 |
unset( $post );
|
974 |
return;
|
975 |
} else {
|
976 |
+
$this->hf_log_data_change( 'csv-import', __( '> Merged post data: ', 'product-import-export-for-woo' ) . print_r( $postdata, true ) );
|
977 |
}
|
978 |
}
|
979 |
|
1002 |
}
|
1003 |
|
1004 |
// Insert product
|
1005 |
+
$this->hf_log_data_change( 'csv-import', sprintf( __('> Inserting %s', 'product-import-export-for-woo'), esc_html( $processing_product_title ) ), true );
|
1006 |
$postdata = array(
|
1007 |
'import_id' => $processing_product_id,
|
1008 |
'post_author' => !empty($post['post_author']) ? absint($post['post_author']) : get_current_user_id(),
|
1024 |
|
1025 |
if ( is_wp_error( $post_id ) ) {
|
1026 |
|
1027 |
+
$this->add_import_result( 'failed', __( 'Failed to import product', 'product-import-export-for-woo' ), $processing_product_id, $processing_product_title, $processing_product_sku );
|
1028 |
+
$this->hf_log_data_change( 'csv-import', sprintf( __( 'Failed to import product “%s”', 'product-import-export-for-woo' ), esc_html($processing_product_title) ) );
|
1029 |
unset( $post );
|
1030 |
return;
|
1031 |
|
1032 |
} else {
|
1033 |
|
1034 |
+
$this->hf_log_data_change( 'csv-import', sprintf( __('> Inserted - post ID is %s.', 'product-import-export-for-woo'), $post_id ) );
|
1035 |
|
1036 |
}
|
1037 |
}
|
1136 |
if ( $image == $attachment_url || basename( $image ) == $attachment_basename ) {
|
1137 |
unset( $post['images'][ $key ] );
|
1138 |
|
1139 |
+
$this->hf_log_data_change( 'csv-import', sprintf( __( '> > Image exists - skipping %s', 'product-import-export-for-woo' ), basename( $image ) ) );
|
1140 |
|
1141 |
if ( $key == 0 ) {
|
1142 |
update_post_meta( $post_id, '_thumbnail_id', $attachment );
|
1166 |
|
1167 |
if ( $post['images'] ) foreach ( $post['images'] as $image_key => $image ) {
|
1168 |
|
1169 |
+
$this->hf_log_data_change( 'csv-import', sprintf( __( '> > Importing image "%s"', 'product-import-export-for-woo' ), $image ) );
|
1170 |
|
1171 |
$filename = basename( $image );
|
1172 |
|
1181 |
|
1182 |
if ( ! is_wp_error( $attachment_id ) && $attachment_id ) {
|
1183 |
|
1184 |
+
$this->hf_log_data_change( 'csv-import', sprintf( __( '> > Imported image "%s"', 'product-import-export-for-woo' ), $image ) );
|
1185 |
|
1186 |
// Set alt
|
1187 |
update_post_meta( $attachment_id, '_wp_attachment_image_alt', $processing_product_title );
|
1196 |
|
1197 |
$featured = false;
|
1198 |
} else {
|
1199 |
+
$this->hf_log_data_change( 'csv-import', sprintf( __( '> > Error importing image "%s"', 'product-import-export-for-woo' ), $image ) );
|
1200 |
$this->hf_log_data_change( 'csv-import', '> > ' . $attachment_id->get_error_message() );
|
1201 |
}
|
1202 |
|
1203 |
unset( $attachment, $attachment_id );
|
1204 |
}
|
1205 |
|
1206 |
+
$this->hf_log_data_change( 'csv-import', __( '> > Images set', 'product-import-export-for-woo' ) );
|
1207 |
|
1208 |
ksort( $gallery_ids );
|
1209 |
|
1256 |
|
1257 |
if ( $merging ) {
|
1258 |
$this->add_import_result( 'merged', 'Merge successful', $post_id, $processing_product_title, $processing_product_sku );
|
1259 |
+
$this->hf_log_data_change( 'csv-import', sprintf( __('> Finished merging post ID %s.', 'product-import-export-for-woo'), $post_id ) );
|
1260 |
} else {
|
1261 |
$this->add_import_result( 'imported', 'Import successful', $post_id, $processing_product_title, $processing_product_sku );
|
1262 |
+
$this->hf_log_data_change( 'csv-import', sprintf( __('> Finished importing post ID %s.', 'product-import-export-for-woo'), $post_id ) );
|
1263 |
}
|
1264 |
|
1265 |
do_action('wf_refresh_after_product_import',$processing_product_object); // hook for forcefully refresh product
|
1305 |
if($image_id){
|
1306 |
$attachment_id = $image_id;
|
1307 |
|
1308 |
+
$this->hf_log_data_change('csv-import', sprintf(__('> > (Image already in the site)Inserted image attachment "%s"', 'product-import-export-for-woo'), $url));
|
1309 |
|
1310 |
$this->attachments[] = $attachment_id;
|
1311 |
|
1337 |
if ( $info = wp_check_filetype( $attachment_file ) )
|
1338 |
$post['post_mime_type'] = $info['type'];
|
1339 |
else
|
1340 |
+
return new WP_Error( 'attachment_processing_error', __('Invalid file type', 'product-import-export-for-woo') );
|
1341 |
|
1342 |
|
1343 |
$image_id = $this->wt_get_image_id_by_url($attachment_url);
|
1344 |
if($image_id){
|
1345 |
$attachment_id = $image_id;
|
1346 |
+
$this->hf_log_data_change('csv-import', sprintf(__('> > (Image already in the site)Inserted image attachment "%s"', 'product-import-export-for-woo'), $url));
|
1347 |
$this->attachments[] = $attachment_id;
|
1348 |
return $attachment_id;
|
1349 |
}
|
1353 |
$attachment_id = wp_insert_attachment( $post, $attachment_file, $post_id );
|
1354 |
|
1355 |
} else {
|
1356 |
+
return new WP_Error( 'attachment_processing_error', __('Local image did not exist!', 'product-import-export-for-woo') );
|
1357 |
}
|
1358 |
|
1359 |
} else {
|
1370 |
if ( $info = wp_check_filetype( $upload['file'] ) )
|
1371 |
$post['post_mime_type'] = $info['type'];
|
1372 |
else
|
1373 |
+
return new WP_Error( 'attachment_processing_error', __('Invalid file type', 'product-import-export-for-woo') );
|
1374 |
|
1375 |
$post['guid'] = $upload['url'];
|
1376 |
$attachment_file = $upload['file'];
|
1383 |
}
|
1384 |
|
1385 |
if ( ! is_wp_error( $attachment_id ) && $attachment_id > 0 ) {
|
1386 |
+
$this->hf_log_data_change( 'csv-import', sprintf( __( '> > Inserted image attachment "%s"', 'product-import-export-for-woo' ), $url ) );
|
1387 |
|
1388 |
$this->attachments[] = $attachment_id;
|
1389 |
}
|
1416 |
|
1417 |
// Get the file
|
1418 |
$response = wp_remote_get( $url, array(
|
1419 |
+
'timeout' => 50,
|
1420 |
+
"user-agent" => "Mozilla/5.0 (X11; Ubuntu; Linux x86_64; rv:56.0) Gecko/20100101 Firefox/56.0",
|
1421 |
+
'sslverify' => FALSE
|
1422 |
) );
|
1423 |
|
1424 |
if ( is_wp_error( $response ) || wp_remote_retrieve_response_code( $response ) !== 200 )
|
1425 |
+
return new WP_Error( 'import_file_error', $response->get_error_message());
|
1426 |
|
1427 |
// Ensure we have a file name and type
|
1428 |
if ( ! $wp_filetype['type'] ) {
|
1456 |
if ( 0 == $filesize ) {
|
1457 |
@unlink( $upload['file'] );
|
1458 |
unset( $upload );
|
1459 |
+
return new WP_Error( 'import_file_error', __('Zero size file downloaded', 'product-import-export-for-woo') );
|
1460 |
}
|
1461 |
|
1462 |
unset( $response );
|
includes/importer/views/html-wf-import-greeting.php
CHANGED
@@ -21,58 +21,58 @@ if (!empty($ftp_settings)) {
|
|
21 |
<div class="woocommerce">
|
22 |
|
23 |
<h2 class="nav-tab-wrapper woo-nav-tab-wrapper">
|
24 |
-
<a href="<?php echo admin_url('admin.php?page=wf_woocommerce_csv_im_ex'); ?>" class="nav-tab"><?php _e('Product Export', '
|
25 |
-
<a href="<?php echo admin_url('admin.php?import=xa_woocommerce_csv'); ?>" class="nav-tab nav-tab-active"><?php _e('Product Import', '
|
26 |
-
<a href="<?php echo admin_url('admin.php?page=wf_woocommerce_csv_im_ex&tab=help'); ?>" class="nav-tab"><?php _e('Help', '
|
27 |
-
<a href="https://www.webtoffee.com/product/product-import-export-woocommerce/" target="_blank" class="nav-tab nav-tab-premium"><?php _e('Upgrade to Premium for More Features', '
|
28 |
</h2>
|
29 |
|
30 |
<div class="pipe-main-box">
|
31 |
<div class="pipe-view bg-white p-20p">
|
32 |
-
<h3 class="title"><?php _e('Step 1: Import settings', '
|
33 |
<?php if (!empty($upload_dir['error'])) : ?>
|
34 |
-
<div class="error"><p><?php _e('Before you can upload your import file, you will need to fix the following error:', '
|
35 |
<p><strong><?php echo $upload_dir['error']; ?></strong></p></div>
|
36 |
<?php else : ?>
|
37 |
<div class="tool-box">
|
38 |
-
<p><?php _e('You can import products (in CSV format) in to the shop using by uploading a CSV file.', '
|
39 |
<form enctype="multipart/form-data" id="import-upload-form" method="post" action="<?php echo esc_attr(wp_nonce_url($action, 'import-upload')); ?>">
|
40 |
<table class="form-table">
|
41 |
<tbody>
|
42 |
<tr>
|
43 |
<th>
|
44 |
-
<label for="upload"><?php _e('Select a file from your computer', '
|
45 |
</th>
|
46 |
<td>
|
47 |
<input type="file" id="upload" name="import" size="25" />
|
48 |
<input type="hidden" name="action" value="save" />
|
49 |
<input type="hidden" name="max_file_size" value="<?php echo $bytes; ?>" /><br/>
|
50 |
-
<small><?php _e('Please upload UTF-8 encoded CSV', '
|
51 |
</td>
|
52 |
</tr>
|
53 |
<tr>
|
54 |
-
<th><label><?php _e('Update products if exists', '
|
55 |
<td>
|
56 |
<input type="checkbox" name="merge" id="merge">
|
57 |
-
<p><small><?php _e('Existing products are identified by their SKUs/IDs. If this option is not selected and if a product with same ID/SKU is found in the CSV, that product will not be imported.', '
|
58 |
</td>
|
59 |
|
60 |
</tr>
|
61 |
<tr>
|
62 |
-
<th><label><?php _e('Delimiter', '
|
63 |
<td><input type="text" name="delimiter" placeholder="," size="2" /></td>
|
64 |
</tr>
|
65 |
<tr>
|
66 |
-
<th><label><?php _e('Merge empty cells', '
|
67 |
<td><input type="checkbox" name="merge_empty_cells" placeholder="," size="2" />
|
68 |
-
<p><small><?php _e('If this option is checked, empty attributes will be added to products with no value. You can leave this unchecked if you are not sure about this option.', '
|
69 |
</td>
|
70 |
</tr>
|
71 |
</tbody>
|
72 |
</table>
|
73 |
<p class="submit">
|
74 |
-
<input type="submit" class="button button-primary" value="<?php esc_attr_e('Proceed to Import Mapping', '
|
75 |
-
<p><span><i><?php _e('If you want to import from an FTP location or from a URL or to configure a scheduled import you may need to upgrade to premium version.', '
|
76 |
</p>
|
77 |
</form>
|
78 |
<?php endif; ?>
|
21 |
<div class="woocommerce">
|
22 |
|
23 |
<h2 class="nav-tab-wrapper woo-nav-tab-wrapper">
|
24 |
+
<a href="<?php echo admin_url('admin.php?page=wf_woocommerce_csv_im_ex'); ?>" class="nav-tab"><?php _e('Product Export', 'product-import-export-for-woo'); ?></a>
|
25 |
+
<a href="<?php echo admin_url('admin.php?import=xa_woocommerce_csv'); ?>" class="nav-tab nav-tab-active"><?php _e('Product Import', 'product-import-export-for-woo'); ?></a>
|
26 |
+
<a href="<?php echo admin_url('admin.php?page=wf_woocommerce_csv_im_ex&tab=help'); ?>" class="nav-tab"><?php _e('Help', 'product-import-export-for-woo'); ?></a>
|
27 |
+
<a href="https://www.webtoffee.com/product/product-import-export-woocommerce/" target="_blank" class="nav-tab nav-tab-premium"><?php _e('Upgrade to Premium for More Features', 'product-import-export-for-woo'); ?></a>
|
28 |
</h2>
|
29 |
|
30 |
<div class="pipe-main-box">
|
31 |
<div class="pipe-view bg-white p-20p">
|
32 |
+
<h3 class="title"><?php _e('Step 1: Import settings', 'product-import-export-for-woo'); ?></h3>
|
33 |
<?php if (!empty($upload_dir['error'])) : ?>
|
34 |
+
<div class="error"><p><?php _e('Before you can upload your import file, you will need to fix the following error:', 'product-import-export-for-woo'); ?></p>
|
35 |
<p><strong><?php echo $upload_dir['error']; ?></strong></p></div>
|
36 |
<?php else : ?>
|
37 |
<div class="tool-box">
|
38 |
+
<p><?php _e('You can import products (in CSV format) in to the shop using by uploading a CSV file.', 'product-import-export-for-woo'); ?></p>
|
39 |
<form enctype="multipart/form-data" id="import-upload-form" method="post" action="<?php echo esc_attr(wp_nonce_url($action, 'import-upload')); ?>">
|
40 |
<table class="form-table">
|
41 |
<tbody>
|
42 |
<tr>
|
43 |
<th>
|
44 |
+
<label for="upload"><?php _e('Select a file from your computer', 'product-import-export-for-woo'); ?></label>
|
45 |
</th>
|
46 |
<td>
|
47 |
<input type="file" id="upload" name="import" size="25" />
|
48 |
<input type="hidden" name="action" value="save" />
|
49 |
<input type="hidden" name="max_file_size" value="<?php echo $bytes; ?>" /><br/>
|
50 |
+
<small><?php _e('Please upload UTF-8 encoded CSV', 'product-import-export-for-woo'); ?> -- <?php printf(__('Maximum size: %s', 'product-import-export-for-woo'), $size); ?></small>
|
51 |
</td>
|
52 |
</tr>
|
53 |
<tr>
|
54 |
+
<th><label><?php _e('Update products if exists', 'product-import-export-for-woo'); ?></label><br/></th>
|
55 |
<td>
|
56 |
<input type="checkbox" name="merge" id="merge">
|
57 |
+
<p><small><?php _e('Existing products are identified by their SKUs/IDs. If this option is not selected and if a product with same ID/SKU is found in the CSV, that product will not be imported.', 'product-import-export-for-woo'); ?></small></p>
|
58 |
</td>
|
59 |
|
60 |
</tr>
|
61 |
<tr>
|
62 |
+
<th><label><?php _e('Delimiter', 'product-import-export-for-woo'); ?></label><br/></th>
|
63 |
<td><input type="text" name="delimiter" placeholder="," size="2" /></td>
|
64 |
</tr>
|
65 |
<tr>
|
66 |
+
<th><label><?php _e('Merge empty cells', 'product-import-export-for-woo'); ?></label><br/></th>
|
67 |
<td><input type="checkbox" name="merge_empty_cells" placeholder="," size="2" />
|
68 |
+
<p><small><?php _e('If this option is checked, empty attributes will be added to products with no value. You can leave this unchecked if you are not sure about this option.', 'product-import-export-for-woo'); ?></small></p>
|
69 |
</td>
|
70 |
</tr>
|
71 |
</tbody>
|
72 |
</table>
|
73 |
<p class="submit">
|
74 |
+
<input type="submit" class="button button-primary" value="<?php esc_attr_e('Proceed to Import Mapping', 'product-import-export-for-woo'); ?>" />
|
75 |
+
<p><span><i><?php _e('If you want to import from an FTP location or from a URL or to configure a scheduled import you may need to upgrade to premium version.', 'product-import-export-for-woo'); ?></i></span></p>
|
76 |
</p>
|
77 |
</form>
|
78 |
<?php endif; ?>
|
includes/importer/views/html-wf-import-options.php
CHANGED
@@ -4,10 +4,10 @@ if ( ! defined( 'ABSPATH' ) ) {
|
|
4 |
}
|
5 |
?>
|
6 |
<h2 class="nav-tab-wrapper woo-nav-tab-wrapper">
|
7 |
-
<a href="<?php echo admin_url('admin.php?page=wf_woocommerce_csv_im_ex'); ?>" class="nav-tab"><?php _e('Product Export', '
|
8 |
-
<a href="<?php echo admin_url('admin.php?import=xa_woocommerce_csv'); ?>" class="nav-tab nav-tab-active"><?php _e('Product Import', '
|
9 |
-
<a href="<?php echo admin_url('admin.php?page=wf_woocommerce_csv_im_ex&tab=help'); ?>" class="nav-tab"><?php _e('Help', '
|
10 |
-
<a href="https://www.webtoffee.com/product/product-import-export-woocommerce/" target="_blank" class="nav-tab nav-tab-premium"><?php _e('Upgrade to Premium for More Features', '
|
11 |
</h2>
|
12 |
<div class="bg-white p-20p">
|
13 |
<form action="<?php echo admin_url('admin.php?import=' . $this->import_page . '&step=2&merge=' . $this->merge); ?>" method="post">
|
@@ -16,16 +16,16 @@ if ( ! defined( 'ABSPATH' ) ) {
|
|
16 |
<?php if ($this->file_url_import_enabled) : ?>
|
17 |
<input type="hidden" name="import_url" value="<?php echo $this->file_url; ?>" />
|
18 |
<?php endif; ?>
|
19 |
-
<h3><?php _e('Step 2: Import mapping', '
|
20 |
-
<p><?php _e('Here you can map your imported columns to product data fields.', '
|
21 |
<table class="widefat widefat_importer">
|
22 |
<thead>
|
23 |
<tr>
|
24 |
-
<th><?php _e('Woocommerce product fields', '
|
25 |
-
<th><?php _e('CSV column header(from imported file)', '
|
26 |
-
<th><?php _e('Evaluation Field', '
|
27 |
<?php $plugin_url = WC()->plugin_url(); ?>
|
28 |
-
<img class="help_tip" style="float:none;" data-tip="<?php _e('Assign constant value WebToffe to post_author:</br>=WebToffe</br>Add $5 to Price:sale_price:</br>+5</br>Reduce $5 to Price:sale_price:</br>-5</br>Multiple 1.05 to Price:sale_price:</br>*1.05</br>Divide Price:sale_price by 2:</br>/2</br>Append a value By WebToffe to post_title:</br>&By WebToffe</br>Prepend a value WebToffe to post_title:</br>&WebToffe [VAL].', '
|
29 |
</th>
|
30 |
</tr>
|
31 |
</thead>
|
@@ -104,7 +104,7 @@ if ( ! defined( 'ABSPATH' ) ) {
|
|
104 |
</td>
|
105 |
<td width="25%">
|
106 |
<select name="map_from[<?php echo $key; ?>]">
|
107 |
-
<option value=""><?php _e('Do not import', '
|
108 |
<?php
|
109 |
foreach ($row as $hkey => $hdr):
|
110 |
$hdr = strlen($hdr) > 50 ? substr(strip_tags($hdr), 0, 50) . "..." : $hdr;
|
@@ -120,9 +120,9 @@ if ( ! defined( 'ABSPATH' ) ) {
|
|
120 |
</tbody>
|
121 |
</table>
|
122 |
<p class="submit"><br/>
|
123 |
-
<span style="color:gray;"><i><?php _e('Time taken to Import the products depends on the time taken to fetch the images and the internet speed. If you have more than 1000 products we recommend doing the import in batches by splitting the CSV file. Please do not navigate away or close the window while the import is in progress.', '
|
124 |
<br/><br/>
|
125 |
-
<input type="submit" class="button button-primary" value="<?php esc_attr_e('Start Import', '
|
126 |
<input type="hidden" name="delimiter" value="<?php echo $this->delimiter ?>" />
|
127 |
<input type="hidden" name="merge_empty_cells" value="<?php echo $this->merge_empty_cells ?>" />
|
128 |
<input type="hidden" name="merge" value="<?php echo $this->merge?>" />
|
4 |
}
|
5 |
?>
|
6 |
<h2 class="nav-tab-wrapper woo-nav-tab-wrapper">
|
7 |
+
<a href="<?php echo admin_url('admin.php?page=wf_woocommerce_csv_im_ex'); ?>" class="nav-tab"><?php _e('Product Export', 'product-import-export-for-woo'); ?></a>
|
8 |
+
<a href="<?php echo admin_url('admin.php?import=xa_woocommerce_csv'); ?>" class="nav-tab nav-tab-active"><?php _e('Product Import', 'product-import-export-for-woo'); ?></a>
|
9 |
+
<a href="<?php echo admin_url('admin.php?page=wf_woocommerce_csv_im_ex&tab=help'); ?>" class="nav-tab"><?php _e('Help', 'product-import-export-for-woo'); ?></a>
|
10 |
+
<a href="https://www.webtoffee.com/product/product-import-export-woocommerce/" target="_blank" class="nav-tab nav-tab-premium"><?php _e('Upgrade to Premium for More Features', 'product-import-export-for-woo'); ?></a>
|
11 |
</h2>
|
12 |
<div class="bg-white p-20p">
|
13 |
<form action="<?php echo admin_url('admin.php?import=' . $this->import_page . '&step=2&merge=' . $this->merge); ?>" method="post">
|
16 |
<?php if ($this->file_url_import_enabled) : ?>
|
17 |
<input type="hidden" name="import_url" value="<?php echo $this->file_url; ?>" />
|
18 |
<?php endif; ?>
|
19 |
+
<h3><?php _e('Step 2: Import mapping', 'product-import-export-for-woo'); ?></h3>
|
20 |
+
<p><?php _e('Here you can map your imported columns to product data fields.', 'product-import-export-for-woo'); ?></p>
|
21 |
<table class="widefat widefat_importer">
|
22 |
<thead>
|
23 |
<tr>
|
24 |
+
<th><?php _e('Woocommerce product fields', 'product-import-export-for-woo'); ?></th>
|
25 |
+
<th><?php _e('CSV column header(from imported file)', 'product-import-export-for-woo'); ?></th>
|
26 |
+
<th><?php _e('Evaluation Field', 'product-import-export-for-woo'); ?>
|
27 |
<?php $plugin_url = WC()->plugin_url(); ?>
|
28 |
+
<img class="help_tip" style="float:none;" data-tip="<?php _e('Assign constant value WebToffe to post_author:</br>=WebToffe</br>Add $5 to Price:sale_price:</br>+5</br>Reduce $5 to Price:sale_price:</br>-5</br>Multiple 1.05 to Price:sale_price:</br>*1.05</br>Divide Price:sale_price by 2:</br>/2</br>Append a value By WebToffe to post_title:</br>&By WebToffe</br>Prepend a value WebToffe to post_title:</br>&WebToffe [VAL].', 'product-import-export-for-woo'); ?>" src="<?php echo $plugin_url; ?>/assets/images/help.png" height="20" width="20" />
|
29 |
</th>
|
30 |
</tr>
|
31 |
</thead>
|
104 |
</td>
|
105 |
<td width="25%">
|
106 |
<select name="map_from[<?php echo $key; ?>]">
|
107 |
+
<option value=""><?php _e('Do not import', 'product-import-export-for-woo'); ?></option>
|
108 |
<?php
|
109 |
foreach ($row as $hkey => $hdr):
|
110 |
$hdr = strlen($hdr) > 50 ? substr(strip_tags($hdr), 0, 50) . "..." : $hdr;
|
120 |
</tbody>
|
121 |
</table>
|
122 |
<p class="submit"><br/>
|
123 |
+
<span style="color:gray;"><i><?php _e('Time taken to Import the products depends on the time taken to fetch the images and the internet speed. If you have more than 1000 products we recommend doing the import in batches by splitting the CSV file. Please do not navigate away or close the window while the import is in progress.', 'product-import-export-for-woo' ); ?></i></span>
|
124 |
<br/><br/>
|
125 |
+
<input type="submit" class="button button-primary" value="<?php esc_attr_e('Start Import', 'product-import-export-for-woo'); ?>" />
|
126 |
<input type="hidden" name="delimiter" value="<?php echo $this->delimiter ?>" />
|
127 |
<input type="hidden" name="merge_empty_cells" value="<?php echo $this->merge_empty_cells ?>" />
|
128 |
<input type="hidden" name="merge" value="<?php echo $this->merge?>" />
|
includes/views/export/html-wf-export-products.php
CHANGED
@@ -23,45 +23,45 @@ if ( ! defined( 'ABSPATH' ) ) {
|
|
23 |
</script>
|
24 |
<div class="pipe-main-box">
|
25 |
<div class="tool-box bg-white p-20p pipe-view">
|
26 |
-
<h3 class="title" style="font-size: 1.3em !important;font-weight: 600;"><?php _e('Export Settings', '
|
27 |
-
<p><?php _e('Export and download your products in CSV file format. This file can be used to import products back into your WooCommerce store.', '
|
28 |
<form action="<?php echo admin_url('admin.php?page=wf_woocommerce_csv_im_ex&action=export'); ?>" method="post">
|
29 |
<table class="form-table">
|
30 |
<tr>
|
31 |
<th>
|
32 |
-
<label for="v_offset"><?php _e('Offset', '
|
33 |
</th>
|
34 |
<td>
|
35 |
<input type="text" name="offset" id="v_offset" placeholder="0" class="input-text" />
|
36 |
-
<p style="font-size: 12px"><?php _e('Number of products to skip before exporting. If the value is 0 no products are skipped. If value is 100, products from product id 101 will be exported.', '
|
37 |
</td>
|
38 |
</tr>
|
39 |
<tr>
|
40 |
<th>
|
41 |
-
<label for="v_limit"><?php _e('Limit', '
|
42 |
</th>
|
43 |
<td>
|
44 |
-
<input type="text" name="limit" id="v_limit" placeholder="<?php _e('Unlimited', '
|
45 |
-
<p style="font-size: 12px"><?php _e('Number of products to export. If no value is given all products will be exported. This is useful if you have large number of products and want to export partial list of products.', '
|
46 |
</td>
|
47 |
</tr>
|
48 |
<tr>
|
49 |
<th colspan="2">
|
50 |
-
<label for="v_columns"><?php _e('Columns', '
|
51 |
-
<p style="font-size: 12px;font-weight:300;"><?php _e('Configure the Column Names of CSV file.', '
|
52 |
</th>
|
53 |
<table id="datagrid">
|
54 |
<th style="text-align: left; padding:6px 25px !important; font-weight: normal !important;color:#000;">
|
55 |
-
<label for="v_columns"><?php _e('WooCommerce product field name', '
|
56 |
</th>
|
57 |
<th style="text-align: left; padding:6px 25px !important; font-weight: normal !important;color:#000;">
|
58 |
-
<label for="v_columns_name"><?php _e('Column header name in the CSV file', '
|
59 |
</th>
|
60 |
<!-- select all boxes -->
|
61 |
<tr>
|
62 |
<td style="padding: 10px;">
|
63 |
-
<a href="#" id="pselectall" onclick="return false;" ><?php _e('Select all', '
|
64 |
-
<a href="#" id="punselectall" onclick="return false;"><?php _e('Unselect all', '
|
65 |
</td>
|
66 |
</tr>
|
67 |
<?php
|
@@ -75,7 +75,7 @@ if ( ! defined( 'ABSPATH' ) ) {
|
|
75 |
<tr>
|
76 |
<td>
|
77 |
<input name= "columns[<?php echo $pkey; ?>]" type="checkbox" value="<?php echo $pkey; ?>" checked>
|
78 |
-
<label for="columns[<?php echo $pkey; ?>]"><?php _e($pcolumn, '
|
79 |
</td>
|
80 |
<td>
|
81 |
<?php
|
@@ -92,8 +92,8 @@ if ( ! defined( 'ABSPATH' ) ) {
|
|
92 |
</table><br/>
|
93 |
</tr>
|
94 |
</table>
|
95 |
-
<p class="submit"><input type="submit" class="button button-primary" value="<?php _e('Export Products', '
|
96 |
-
<p><span><i><?php _e('With this version of the plugin you can export products (except variable products) in to a file. If you want to export to an FTP location (scheduled / manual ) you may need to upgrade to premium version.', '
|
97 |
</form>
|
98 |
</div>
|
99 |
<?php include(WF_ProdImpExpCsv_BASE . 'includes/views/market.php'); ?>
|
23 |
</script>
|
24 |
<div class="pipe-main-box">
|
25 |
<div class="tool-box bg-white p-20p pipe-view">
|
26 |
+
<h3 class="title" style="font-size: 1.3em !important;font-weight: 600;"><?php _e('Export Settings', 'product-import-export-for-woo'); ?></h3>
|
27 |
+
<p><?php _e('Export and download your products in CSV file format. This file can be used to import products back into your WooCommerce store.', 'product-import-export-for-woo'); ?></p>
|
28 |
<form action="<?php echo admin_url('admin.php?page=wf_woocommerce_csv_im_ex&action=export'); ?>" method="post">
|
29 |
<table class="form-table">
|
30 |
<tr>
|
31 |
<th>
|
32 |
+
<label for="v_offset"><?php _e('Offset', 'product-import-export-for-woo'); ?></label>
|
33 |
</th>
|
34 |
<td>
|
35 |
<input type="text" name="offset" id="v_offset" placeholder="0" class="input-text" />
|
36 |
+
<p style="font-size: 12px"><?php _e('Number of products to skip before exporting. If the value is 0 no products are skipped. If value is 100, products from product id 101 will be exported.', 'product-import-export-for-woo'); ?></p>
|
37 |
</td>
|
38 |
</tr>
|
39 |
<tr>
|
40 |
<th>
|
41 |
+
<label for="v_limit"><?php _e('Limit', 'product-import-export-for-woo'); ?></label>
|
42 |
</th>
|
43 |
<td>
|
44 |
+
<input type="text" name="limit" id="v_limit" placeholder="<?php _e('Unlimited', 'product-import-export-for-woo'); ?>" class="input-text" />
|
45 |
+
<p style="font-size: 12px"><?php _e('Number of products to export. If no value is given all products will be exported. This is useful if you have large number of products and want to export partial list of products.', 'product-import-export-for-woo'); ?></p>
|
46 |
</td>
|
47 |
</tr>
|
48 |
<tr>
|
49 |
<th colspan="2">
|
50 |
+
<label for="v_columns"><?php _e('Columns', 'product-import-export-for-woo'); ?></label>
|
51 |
+
<p style="font-size: 12px;font-weight:300;"><?php _e('Configure the Column Names of CSV file.', 'product-import-export-for-woo'); ?></p>
|
52 |
</th>
|
53 |
<table id="datagrid">
|
54 |
<th style="text-align: left; padding:6px 25px !important; font-weight: normal !important;color:#000;">
|
55 |
+
<label for="v_columns"><?php _e('WooCommerce product field name', 'product-import-export-for-woo'); ?></label>
|
56 |
</th>
|
57 |
<th style="text-align: left; padding:6px 25px !important; font-weight: normal !important;color:#000;">
|
58 |
+
<label for="v_columns_name"><?php _e('Column header name in the CSV file', 'product-import-export-for-woo'); ?></label>
|
59 |
</th>
|
60 |
<!-- select all boxes -->
|
61 |
<tr>
|
62 |
<td style="padding: 10px;">
|
63 |
+
<a href="#" id="pselectall" onclick="return false;" ><?php _e('Select all', 'product-import-export-for-woo'); ?></a> /
|
64 |
+
<a href="#" id="punselectall" onclick="return false;"><?php _e('Unselect all', 'product-import-export-for-woo'); ?></a>
|
65 |
</td>
|
66 |
</tr>
|
67 |
<?php
|
75 |
<tr>
|
76 |
<td>
|
77 |
<input name= "columns[<?php echo $pkey; ?>]" type="checkbox" value="<?php echo $pkey; ?>" checked>
|
78 |
+
<label for="columns[<?php echo $pkey; ?>]"><?php _e($pcolumn, 'product-import-export-for-woo'); ?></label>
|
79 |
</td>
|
80 |
<td>
|
81 |
<?php
|
92 |
</table><br/>
|
93 |
</tr>
|
94 |
</table>
|
95 |
+
<p class="submit"><input type="submit" class="button button-primary" value="<?php _e('Export Products', 'product-import-export-for-woo'); ?>" /></p>
|
96 |
+
<p><span><i><?php _e('With this version of the plugin you can export products (except variable products) in to a file. If you want to export to an FTP location (scheduled / manual ) you may need to upgrade to premium version.', 'product-import-export-for-woo'); ?></i></span></p>
|
97 |
</form>
|
98 |
</div>
|
99 |
<?php include(WF_ProdImpExpCsv_BASE . 'includes/views/market.php'); ?>
|
includes/views/html-wf-admin-screen.php
CHANGED
@@ -6,10 +6,10 @@ if ( ! defined( 'ABSPATH' ) ) {
|
|
6 |
<div class="woocommerce">
|
7 |
<div class="icon32" id="icon-woocommerce-importer"><br></div>
|
8 |
<h2 class="nav-tab-wrapper woo-nav-tab-wrapper">
|
9 |
-
<a href="<?php echo admin_url('admin.php?page=wf_woocommerce_csv_im_ex'); ?>" class="nav-tab <?php echo ('help' != $tab) ? 'nav-tab-active' : ''; ?>"><?php _e('Product Export', '
|
10 |
-
<a href="<?php echo admin_url('admin.php?import=xa_woocommerce_csv'); ?>" class="nav-tab"><?php _e('Product Import', '
|
11 |
-
<a href="<?php echo admin_url('admin.php?page=wf_woocommerce_csv_im_ex&tab=help'); ?>" class="nav-tab <?php echo ('help' == $tab) ? 'nav-tab-active' : ''; ?>"><?php _e('Help', '
|
12 |
-
<a href="https://www.webtoffee.com/product/product-import-export-woocommerce/" target="_blank" class="nav-tab nav-tab-premium"><?php _e('Upgrade to Premium for More Features', '
|
13 |
|
14 |
</h2>
|
15 |
<?php
|
6 |
<div class="woocommerce">
|
7 |
<div class="icon32" id="icon-woocommerce-importer"><br></div>
|
8 |
<h2 class="nav-tab-wrapper woo-nav-tab-wrapper">
|
9 |
+
<a href="<?php echo admin_url('admin.php?page=wf_woocommerce_csv_im_ex'); ?>" class="nav-tab <?php echo ('help' != $tab) ? 'nav-tab-active' : ''; ?>"><?php _e('Product Export', 'product-import-export-for-woo'); ?></a>
|
10 |
+
<a href="<?php echo admin_url('admin.php?import=xa_woocommerce_csv'); ?>" class="nav-tab"><?php _e('Product Import', 'product-import-export-for-woo'); ?></a>
|
11 |
+
<a href="<?php echo admin_url('admin.php?page=wf_woocommerce_csv_im_ex&tab=help'); ?>" class="nav-tab <?php echo ('help' == $tab) ? 'nav-tab-active' : ''; ?>"><?php _e('Help', 'product-import-export-for-woo'); ?></a>
|
12 |
+
<a href="https://www.webtoffee.com/product/product-import-export-woocommerce/" target="_blank" class="nav-tab nav-tab-premium"><?php _e('Upgrade to Premium for More Features', 'product-import-export-for-woo'); ?></a>
|
13 |
|
14 |
</h2>
|
15 |
<?php
|
includes/views/html-wf-help-guide.php
CHANGED
@@ -28,25 +28,25 @@ if ( ! defined( 'ABSPATH' ) ) {
|
|
28 |
<div class="cols">
|
29 |
<div class="inner-panel" style="">
|
30 |
<img src="<?php echo plugins_url(basename(plugin_dir_path(WF_ProdImpExpCsv_FILE))) . '/images/setup.png'; ?>"/>
|
31 |
-
<h3><?php _e('How-to-setup', '
|
32 |
-
<p style=""><?php _e('Get to know about our product in 3 minutes with this video', '
|
33 |
<a href="https://www.webtoffee.com/setting-up-product-import-export-plugin-for-woocommerce/" target="_blank" class="button button-primary">
|
34 |
-
<?php _e('Setup Guide', '
|
35 |
</div>
|
36 |
|
37 |
<div class="inner-panel" style="">
|
38 |
<img src="<?php echo plugins_url(basename(plugin_dir_path(WF_ProdImpExpCsv_FILE))) . '/images/documentation.png'; ?>"/>
|
39 |
-
<h3><?php _e('Documentation', '
|
40 |
-
<p style=""><?php _e('Refer to our documentation to set and get started', '
|
41 |
-
<a target="_blank" href="https://www.webtoffee.com/category/documentation/product-import-export-plugin-for-woocommerce/" class="button-primary"><?php _e('Documentation', '
|
42 |
</div>
|
43 |
|
44 |
<div class="inner-panel" style="">
|
45 |
<img src="<?php echo plugins_url(basename(plugin_dir_path(WF_ProdImpExpCsv_FILE))) . '/images/support.png'; ?>"/>
|
46 |
-
<h3><?php _e('Support', '
|
47 |
-
<p style=""><?php _e('We would love to help you on any queries or issues.', '
|
48 |
<a href="https://www.webtoffee.com/support/" target="_blank" class="button button-primary">
|
49 |
-
<?php _e('Contact Us', '
|
50 |
</div>
|
51 |
</div>
|
52 |
</div>
|
28 |
<div class="cols">
|
29 |
<div class="inner-panel" style="">
|
30 |
<img src="<?php echo plugins_url(basename(plugin_dir_path(WF_ProdImpExpCsv_FILE))) . '/images/setup.png'; ?>"/>
|
31 |
+
<h3><?php _e('How-to-setup', 'product-import-export-for-woo'); ?></h3>
|
32 |
+
<p style=""><?php _e('Get to know about our product in 3 minutes with this video', 'product-import-export-for-woo'); ?></p>
|
33 |
<a href="https://www.webtoffee.com/setting-up-product-import-export-plugin-for-woocommerce/" target="_blank" class="button button-primary">
|
34 |
+
<?php _e('Setup Guide', 'product-import-export-for-woo'); ?></a>
|
35 |
</div>
|
36 |
|
37 |
<div class="inner-panel" style="">
|
38 |
<img src="<?php echo plugins_url(basename(plugin_dir_path(WF_ProdImpExpCsv_FILE))) . '/images/documentation.png'; ?>"/>
|
39 |
+
<h3><?php _e('Documentation', 'product-import-export-for-woo'); ?></h3>
|
40 |
+
<p style=""><?php _e('Refer to our documentation to set and get started', 'product-import-export-for-woo'); ?></p>
|
41 |
+
<a target="_blank" href="https://www.webtoffee.com/category/documentation/product-import-export-plugin-for-woocommerce/" class="button-primary"><?php _e('Documentation', 'product-import-export-for-woo'); ?></a>
|
42 |
</div>
|
43 |
|
44 |
<div class="inner-panel" style="">
|
45 |
<img src="<?php echo plugins_url(basename(plugin_dir_path(WF_ProdImpExpCsv_FILE))) . '/images/support.png'; ?>"/>
|
46 |
+
<h3><?php _e('Support', 'product-import-export-for-woo'); ?></h3>
|
47 |
+
<p style=""><?php _e('We would love to help you on any queries or issues.', 'product-import-export-for-woo'); ?></p>
|
48 |
<a href="https://www.webtoffee.com/support/" target="_blank" class="button button-primary">
|
49 |
+
<?php _e('Contact Us', 'product-import-export-for-woo'); ?></a>
|
50 |
</div>
|
51 |
</div>
|
52 |
</div>
|
includes/views/import/html-wf-import-products.php
CHANGED
@@ -1,15 +1,15 @@
|
|
1 |
|
2 |
<div class="tool-box">
|
3 |
-
<h3 class="title"><?php _e('Import Products in CSV Format:', '
|
4 |
-
<p><?php _e('Import products in CSV format ( works for simple products) from different sources', '
|
5 |
<p class="submit">
|
6 |
<?php
|
7 |
$merge_url = admin_url('admin.php?import=woocommerce_csv&merge=1');
|
8 |
$import_url = admin_url('admin.php?import=woocommerce_csv');
|
9 |
?>
|
10 |
-
<a class="button button-primary" id="mylink" href="<?php echo admin_url('admin.php?import=woocommerce_csv'); ?>"><?php _e('Import Products', '
|
11 |
|
12 |
-
<input type="checkbox" id="merge" value="0"><?php _e('Merge products if exists', '
|
13 |
</p>
|
14 |
</div>
|
15 |
<script type="text/javascript">
|
1 |
|
2 |
<div class="tool-box">
|
3 |
+
<h3 class="title"><?php _e('Import Products in CSV Format:', 'product-import-export-for-woo'); ?></h3>
|
4 |
+
<p><?php _e('Import products in CSV format ( works for simple products) from different sources', 'product-import-export-for-woo'); ?></p>
|
5 |
<p class="submit">
|
6 |
<?php
|
7 |
$merge_url = admin_url('admin.php?import=woocommerce_csv&merge=1');
|
8 |
$import_url = admin_url('admin.php?import=woocommerce_csv');
|
9 |
?>
|
10 |
+
<a class="button button-primary" id="mylink" href="<?php echo admin_url('admin.php?import=woocommerce_csv'); ?>"><?php _e('Import Products', 'product-import-export-for-woo'); ?></a>
|
11 |
|
12 |
+
<input type="checkbox" id="merge" value="0"><?php _e('Merge products if exists', 'product-import-export-for-woo'); ?> <br>
|
13 |
</p>
|
14 |
</div>
|
15 |
<script type="text/javascript">
|
includes/views/market.php
CHANGED
@@ -5,41 +5,41 @@ if ( ! defined( 'ABSPATH' ) ) {
|
|
5 |
?>
|
6 |
<div class="market-box table-box-main">
|
7 |
<?php /*<div class="getting-started-video">
|
8 |
-
<h2><?php _e('Watch getting started video', '
|
9 |
<iframe src="https://www.youtube.com/embed/L-01qI1EZWE?rel=0&showinfo=0" frameborder="0" allowfullscreen="allowfullscreen" align="center"></iframe>
|
10 |
</div> */ ?>
|
11 |
<div class="pipe-review-widget">
|
12 |
<?php
|
13 |
-
echo sprintf(__('<div class=""><p><i>If you like the plugin please leave us a %1$s review!</i><p></div>', '
|
14 |
?>
|
15 |
</div>
|
16 |
<div class="pipe-premium-features">
|
17 |
<ul style="font-weight: bold; color:#666; list-style: none; background:#f8f8f8; padding:20px; margin:20px 15px; font-size: 15px; line-height: 26px;">
|
18 |
-
<li style=""><?php echo __('30 Day Money Back Guarantee','
|
19 |
-
<li style=""><?php echo __('Fast and Superior Support','
|
20 |
<li style="">
|
21 |
-
<a href="https://www.webtoffee.com/product/product-import-export-woocommerce/" target="_blank" class="button button-primary button-go-pro"><?php _e('Upgrade to Premium', '
|
22 |
</li>
|
23 |
</ul>
|
24 |
<span>
|
25 |
<ul class="ticked-list">
|
26 |
-
<li><?php _e('Export/Import simple, group, external and variation products.', '
|
27 |
-
<li><?php _e('Export products by category.', '
|
28 |
-
<li><?php _e('Import/Export product reviews.', '
|
29 |
-
<li><?php _e('Various filter options for exporting products.', '
|
30 |
-
<li><?php _e('Map and transform fields during import.', '
|
31 |
-
<li><?php _e('Manipulate/evaluate data during import.', '
|
32 |
-
<li><?php _e('Choice to update or skip existing imported products.', '
|
33 |
-
<li><?php _e('WPML support for simple products.', '
|
34 |
-
<li><?php _e('Import/Export file via FTP.', '
|
35 |
-
<li><?php _e('Import from URL.', '
|
36 |
-
<li><?php _e('Automatic scheduled import and export.', '
|
37 |
-
<li><?php _e('Supports product reviews export and import.', '
|
38 |
-
<li><?php _e('Third party plugin customization support.', '
|
39 |
</ul>
|
40 |
</span>
|
41 |
<center>
|
42 |
-
<a href="https://www.webtoffee.com/category/documentation/product-import-export-plugin-for-woocommerce/" target="_blank" class="button button-doc-demo"><?php _e('Documentation', '
|
43 |
</div>
|
44 |
|
45 |
</div>
|
5 |
?>
|
6 |
<div class="market-box table-box-main">
|
7 |
<?php /*<div class="getting-started-video">
|
8 |
+
<h2><?php _e('Watch getting started video', 'product-import-export-for-woo');?></h2>
|
9 |
<iframe src="https://www.youtube.com/embed/L-01qI1EZWE?rel=0&showinfo=0" frameborder="0" allowfullscreen="allowfullscreen" align="center"></iframe>
|
10 |
</div> */ ?>
|
11 |
<div class="pipe-review-widget">
|
12 |
<?php
|
13 |
+
echo sprintf(__('<div class=""><p><i>If you like the plugin please leave us a %1$s review!</i><p></div>', 'product-import-export-for-woo'), '<a href="https://wordpress.org/support/plugin/product-import-export-for-woo/reviews?rate=5#new-post" target="_blank" class="xa-pipe-rating-link" data-reviewed="' . esc_attr__('Thanks for the review.', 'product-import-export-for-woo') . '">★★★★★</a>');
|
14 |
?>
|
15 |
</div>
|
16 |
<div class="pipe-premium-features">
|
17 |
<ul style="font-weight: bold; color:#666; list-style: none; background:#f8f8f8; padding:20px; margin:20px 15px; font-size: 15px; line-height: 26px;">
|
18 |
+
<li style=""><?php echo __('30 Day Money Back Guarantee','product-import-export-for-woo'); ?></li>
|
19 |
+
<li style=""><?php echo __('Fast and Superior Support','product-import-export-for-woo'); ?></li>
|
20 |
<li style="">
|
21 |
+
<a href="https://www.webtoffee.com/product/product-import-export-woocommerce/" target="_blank" class="button button-primary button-go-pro"><?php _e('Upgrade to Premium', 'product-import-export-for-woo'); ?></a>
|
22 |
</li>
|
23 |
</ul>
|
24 |
<span>
|
25 |
<ul class="ticked-list">
|
26 |
+
<li><?php _e('Export/Import simple, group, external and variation products.', 'product-import-export-for-woo');?></li>
|
27 |
+
<li><?php _e('Export products by category.', 'product-import-export-for-woo');?></li>
|
28 |
+
<li><?php _e('Import/Export product reviews.', 'product-import-export-for-woo');?></li>
|
29 |
+
<li><?php _e('Various filter options for exporting products.', 'product-import-export-for-woo');?> </li>
|
30 |
+
<li><?php _e('Map and transform fields during import.', 'product-import-export-for-woo');?></li>
|
31 |
+
<li><?php _e('Manipulate/evaluate data during import.', 'product-import-export-for-woo');?></li>
|
32 |
+
<li><?php _e('Choice to update or skip existing imported products.', 'product-import-export-for-woo');?></li>
|
33 |
+
<li><?php _e('WPML support for simple products.', 'product-import-export-for-woo');?></li>
|
34 |
+
<li><?php _e('Import/Export file via FTP.', 'product-import-export-for-woo');?></li>
|
35 |
+
<li><?php _e('Import from URL.', 'product-import-export-for-woo');?></li>
|
36 |
+
<li><?php _e('Automatic scheduled import and export.', 'product-import-export-for-woo');?></li>
|
37 |
+
<li><?php _e('Supports product reviews export and import.', 'product-import-export-for-woo');?></li>
|
38 |
+
<li><?php _e('Third party plugin customization support.', 'product-import-export-for-woo');?></li>
|
39 |
</ul>
|
40 |
</span>
|
41 |
<center>
|
42 |
+
<a href="https://www.webtoffee.com/category/documentation/product-import-export-plugin-for-woocommerce/" target="_blank" class="button button-doc-demo"><?php _e('Documentation', 'product-import-export-for-woo'); ?></a></center>
|
43 |
</div>
|
44 |
|
45 |
</div>
|
lang/{wf_csv_import_export-de_DE.mo → product-import-export-for-woo-de_DE.mo}
RENAMED
File without changes
|
lang/{wf_csv_import_export-de_DE.po → product-import-export-for-woo-de_DE.po}
RENAMED
File without changes
|
lang/{wf_csv_import_export-fr_FR.mo → product-import-export-for-woo-fr_FR.mo}
RENAMED
File without changes
|
lang/{wf_csv_import_export-fr_FR.po → product-import-export-for-woo-fr_FR.po}
RENAMED
File without changes
|
lang/{wf_csv_import_export-hu_HU.mo → product-import-export-for-woo-hu_HU.mo}
RENAMED
File without changes
|
lang/{wf_csv_import_export-hu_HU.po → product-import-export-for-woo-hu_HU.po}
RENAMED
File without changes
|
lang/{wf_csv_import_export-it_IT.mo → product-import-export-for-woo-it_IT.mo}
RENAMED
File without changes
|
lang/{wf_csv_import_export-it_IT.po → product-import-export-for-woo-it_IT.po}
RENAMED
File without changes
|
product-csv-import-export.php → product-import-export-for-woo.php
RENAMED
@@ -5,11 +5,11 @@
|
|
5 |
Description: Import and Export Products From and To your WooCommerce Store.
|
6 |
Author: WebToffee
|
7 |
Author URI: https://www.webtoffee.com/product/product-import-export-woocommerce/
|
8 |
-
Version: 1.5.
|
9 |
-
WC tested up to: 3.5.
|
10 |
License: GPLv3
|
11 |
License URI: https://www.gnu.org/licenses/gpl-3.0.html
|
12 |
-
Text Domain:
|
13 |
*/
|
14 |
|
15 |
if (!defined('ABSPATH') || !is_admin()) {
|
@@ -18,7 +18,7 @@ if (!defined('ABSPATH') || !is_admin()) {
|
|
18 |
|
19 |
|
20 |
if (!defined('WF_PIPE_CURRENT_VERSION')) {
|
21 |
-
define("WF_PIPE_CURRENT_VERSION", "1.5.
|
22 |
}
|
23 |
if (!defined('WF_PROD_IMP_EXP_ID')) {
|
24 |
define("WF_PROD_IMP_EXP_ID", "wf_prod_imp_exp");
|
@@ -80,10 +80,10 @@ if (!defined('WF_WOOCOMMERCE_CSV_IM_EX')) {
|
|
80 |
|
81 |
public function wf_plugin_action_links($links) {
|
82 |
$plugin_links = array(
|
83 |
-
'<a href="' . admin_url('admin.php?page=wf_woocommerce_csv_im_ex&tab=export') . '">' . __('Import Export', '
|
84 |
-
'<a target="_blank" href="https://www.webtoffee.com/product/product-import-export-woocommerce/" style="color:#3db634;"> ' . __('Premium Upgrade', '
|
85 |
-
'<a target="_blank" href="https://www.webtoffee.com/support/">' . __('Support', '
|
86 |
-
'<a target="_blank" href="https://wordpress.org/support/plugin/product-import-export-for-woo/reviews/">' . __('Review', '
|
87 |
);
|
88 |
if (array_key_exists('deactivate', $links)) {
|
89 |
$links['deactivate'] = str_replace('<a', '<a class="pipe-deactivate-link"', $links['deactivate']);
|
@@ -103,7 +103,7 @@ if (!defined('WF_WOOCOMMERCE_CSV_IM_EX')) {
|
|
103 |
* Handle localization
|
104 |
*/
|
105 |
public function load_plugin_textdomain() {
|
106 |
-
load_plugin_textdomain('
|
107 |
}
|
108 |
|
109 |
/**
|
@@ -130,7 +130,7 @@ if (!defined('WF_WOOCOMMERCE_CSV_IM_EX')) {
|
|
130 |
* Register importers for use
|
131 |
*/
|
132 |
public function register_importers() {
|
133 |
-
register_importer('xa_woocommerce_csv', '
|
134 |
}
|
135 |
|
136 |
private function hf_user_permission() {
|
@@ -152,51 +152,51 @@ if (!defined('WF_WOOCOMMERCE_CSV_IM_EX')) {
|
|
152 |
$reasons = array(
|
153 |
array(
|
154 |
'id' => 'used-it',
|
155 |
-
'text' => __('Used it successfully. Don\'t need anymore.', '
|
156 |
'type' => 'reviewhtml',
|
157 |
-
'placeholder' => __('Have used it successfully and aint in need of it anymore', '
|
158 |
),
|
159 |
array(
|
160 |
'id' => 'could-not-understand',
|
161 |
-
'text' => __('I couldn\'t understand how to make it work', '
|
162 |
'type' => 'textarea',
|
163 |
-
'placeholder' => __('Would you like us to assist you?', '
|
164 |
),
|
165 |
array(
|
166 |
'id' => 'found-better-plugin',
|
167 |
-
'text' => __('I found a better plugin', '
|
168 |
'type' => 'text',
|
169 |
-
'placeholder' => __('Which plugin?', '
|
170 |
),
|
171 |
array(
|
172 |
'id' => 'not-have-that-feature',
|
173 |
-
'text' => __('The plugin is great, but I need specific feature that you don\'t support', '
|
174 |
'type' => 'textarea',
|
175 |
-
'placeholder' => __('Could you tell us more about that feature?', '
|
176 |
),
|
177 |
array(
|
178 |
'id' => 'is-not-working',
|
179 |
-
'text' => __('The plugin is not working', '
|
180 |
'type' => 'textarea',
|
181 |
-
'placeholder' => __('Could you tell us a bit more whats not working?', '
|
182 |
),
|
183 |
array(
|
184 |
'id' => 'looking-for-other',
|
185 |
-
'text' => __('It\'s not what I was looking for', '
|
186 |
'type' => 'textarea',
|
187 |
-
'placeholder' => __('Could you tell us a bit more?', '
|
188 |
),
|
189 |
array(
|
190 |
'id' => 'did-not-work-as-expected',
|
191 |
-
'text' => __('The plugin didn\'t work as expected', '
|
192 |
'type' => 'textarea',
|
193 |
-
'placeholder' => __('What did you expect?', '
|
194 |
),
|
195 |
array(
|
196 |
'id' => 'other',
|
197 |
-
'text' => __('Other', '
|
198 |
'type' => 'textarea',
|
199 |
-
'placeholder' => __('Could you tell us a bit more?', '
|
200 |
),
|
201 |
);
|
202 |
|
@@ -214,7 +214,7 @@ if (!defined('WF_WOOCOMMERCE_CSV_IM_EX')) {
|
|
214 |
<div class="pipe-modal" id="pipe-pipe-modal">
|
215 |
<div class="pipe-modal-wrap">
|
216 |
<div class="pipe-modal-header">
|
217 |
-
<h3><?php _e('If you have a moment, please let us know why you are deactivating:', '
|
218 |
</div>
|
219 |
<div class="pipe-modal-body">
|
220 |
<ul class="reasons">
|
@@ -226,9 +226,9 @@ if (!defined('WF_WOOCOMMERCE_CSV_IM_EX')) {
|
|
226 |
</ul>
|
227 |
</div>
|
228 |
<div class="pipe-modal-footer">
|
229 |
-
<a href="#" class="dont-bother-me"><?php _e('I rather wouldn\'t say', '
|
230 |
-
<button class="button-primary pipe-model-submit"><?php _e('Submit & Deactivate', '
|
231 |
-
<button class="button-secondary pipe-model-cancel"><?php _e('Cancel', '
|
232 |
</div>
|
233 |
</div>
|
234 |
</div>
|
@@ -307,7 +307,7 @@ if (!defined('WF_WOOCOMMERCE_CSV_IM_EX')) {
|
|
307 |
var inputType = parent.data('type'),
|
308 |
inputPlaceholder = parent.data('placeholder');
|
309 |
if ('reviewhtml' === inputType) {
|
310 |
-
var reasonInputHtml = '<div class="reviewlink"><a href="#" target="_blank" class="review-and-deactivate"><?php _e('Deactivate and leave a review', '
|
311 |
} else {
|
312 |
var reasonInputHtml = '<div class="reason-input">' + (('text' === inputType) ? '<input type="text" class="input-text" size="40" />' : '<textarea rows="5" cols="45"></textarea>') + '</div>';
|
313 |
}
|
@@ -401,8 +401,8 @@ if (!defined('WF_WOOCOMMERCE_CSV_IM_EX')) {
|
|
401 |
|
402 |
if (in_array($screen->id, $allowed_screen_ids) || (isset($_GET['import']) && $_GET['import'] == 'xa_woocommerce_csv')) {
|
403 |
|
404 |
-
$notice = __('<h3>Save Time, Money & Hassle on Your WooCommerce Data Migration?</h3>', '
|
405 |
-
$notice .= __('<h3>Use StoreFrog Migration Services.</h3>', '
|
406 |
|
407 |
$content = '<style>.webtoffee-storefrog-nav-tab.updated {display: flex;align-items: center;margin: 18px 20px 10px 0;padding:23px;border-left-color: #2c85d7!important}.webtoffee-storefrog-nav-tab ul {margin: 0;}.webtoffee-storefrog-nav-tab h3 {margin-top: 0;margin-bottom: 9px;font-weight: 500;font-size: 16px;color: #2880d3;}.webtoffee-storefrog-nav-tab h3:last-child {margin-bottom: 0;}.webtoffee-storefrog-banner {flex-basis: 20%;padding: 0 15px;margin-left: auto;} .webtoffee-storefrog-banner a:focus{box-shadow: none;}</style>';
|
408 |
$content .= '<div class="updated woocommerce-message webtoffee-storefrog-nav-tab notice is-dismissible"><ul>' . $notice . '</ul><div class="webtoffee-storefrog-banner"><a href="http://www.storefrog.com/" target="_blank"> <img src="' . plugins_url(basename(plugin_dir_path(WF_ProdImpExpCsv_FILE))) . '/images/storefrog.png"/></a></div><div style="position: absolute;top: 0;right: 1px;z-index: 10000;" ><button type="button" id="webtoffee-storefrog-notice-dismiss" class="notice-dismiss"><span class="screen-reader-text">Dismiss this notice.</span></button></div></div>';
|
@@ -437,7 +437,7 @@ if (!defined('WF_WOOCOMMERCE_CSV_IM_EX')) {
|
|
437 |
if (in_array($screen->id, $allowed_screen_ids) || (isset($_GET['import']) && $_GET['import'] == 'xa_woocommerce_csv')) {
|
438 |
if (!get_option('pipe_wt_plugin_reviewed')) {
|
439 |
$footer_text = sprintf(
|
440 |
-
__('If you like the plugin please leave us a %1$s review.', '
|
441 |
);
|
442 |
wc_enqueue_js(
|
443 |
"jQuery( 'a.wt-review-link' ).click( function() {
|
@@ -446,7 +446,7 @@ if (!defined('WF_WOOCOMMERCE_CSV_IM_EX')) {
|
|
446 |
});"
|
447 |
);
|
448 |
} else {
|
449 |
-
$footer_text = __('Thank you for your review.', '
|
450 |
}
|
451 |
}
|
452 |
|
@@ -480,11 +480,11 @@ register_activation_hook(__FILE__, 'hf_welcome_screen_activate_basic');
|
|
480 |
function hf_welcome_screen_activate_basic() {
|
481 |
if(!class_exists( 'WooCommerce' )){
|
482 |
deactivate_plugins(basename(__FILE__));
|
483 |
-
wp_die(__("WooCommerce is not installed/actived. it is required for this plugin to work properly. Please activate WooCommerce.",
|
484 |
}
|
485 |
-
if (is_plugin_active('product-csv-import-export-for-woocommerce/product-
|
486 |
deactivate_plugins(basename(__FILE__));
|
487 |
-
wp_die(__("Is everything fine? You already have the Premium version installed in your website. For any issues, kindly raise a ticket via <a target='_blank' href='https://www.webtoffee.com/support/'>support</a>",
|
488 |
}
|
489 |
update_option('xa_pipe_plugin_installed_date', date('Y-m-d H:i:s'));
|
490 |
set_transient('_welcome_screen_activation_redirect', true, 30);
|
5 |
Description: Import and Export Products From and To your WooCommerce Store.
|
6 |
Author: WebToffee
|
7 |
Author URI: https://www.webtoffee.com/product/product-import-export-woocommerce/
|
8 |
+
Version: 1.5.7
|
9 |
+
WC tested up to: 3.5.7
|
10 |
License: GPLv3
|
11 |
License URI: https://www.gnu.org/licenses/gpl-3.0.html
|
12 |
+
Text Domain: product-import-export-for-woo
|
13 |
*/
|
14 |
|
15 |
if (!defined('ABSPATH') || !is_admin()) {
|
18 |
|
19 |
|
20 |
if (!defined('WF_PIPE_CURRENT_VERSION')) {
|
21 |
+
define("WF_PIPE_CURRENT_VERSION", "1.5.7");
|
22 |
}
|
23 |
if (!defined('WF_PROD_IMP_EXP_ID')) {
|
24 |
define("WF_PROD_IMP_EXP_ID", "wf_prod_imp_exp");
|
80 |
|
81 |
public function wf_plugin_action_links($links) {
|
82 |
$plugin_links = array(
|
83 |
+
'<a href="' . admin_url('admin.php?page=wf_woocommerce_csv_im_ex&tab=export') . '">' . __('Import Export', 'product-import-export-for-woo') . '</a>',
|
84 |
+
'<a target="_blank" href="https://www.webtoffee.com/product/product-import-export-woocommerce/" style="color:#3db634;"> ' . __('Premium Upgrade', 'product-import-export-for-woo') . '</a>',
|
85 |
+
'<a target="_blank" href="https://www.webtoffee.com/support/">' . __('Support', 'product-import-export-for-woo') . '</a>',
|
86 |
+
'<a target="_blank" href="https://wordpress.org/support/plugin/product-import-export-for-woo/reviews/">' . __('Review', 'product-import-export-for-woo') . '</a>',
|
87 |
);
|
88 |
if (array_key_exists('deactivate', $links)) {
|
89 |
$links['deactivate'] = str_replace('<a', '<a class="pipe-deactivate-link"', $links['deactivate']);
|
103 |
* Handle localization
|
104 |
*/
|
105 |
public function load_plugin_textdomain() {
|
106 |
+
load_plugin_textdomain('product-import-export-for-woo', false, dirname(plugin_basename(__FILE__)) . '/lang/');
|
107 |
}
|
108 |
|
109 |
/**
|
130 |
* Register importers for use
|
131 |
*/
|
132 |
public function register_importers() {
|
133 |
+
register_importer('xa_woocommerce_csv', 'WebToffee WooCommerce Product Import (CSV)', __('Import <strong>products</strong> to your store via a csv file.', 'product-import-export-for-woo'), 'WF_ProdImpExpCsv_Importer::product_importer');
|
134 |
}
|
135 |
|
136 |
private function hf_user_permission() {
|
152 |
$reasons = array(
|
153 |
array(
|
154 |
'id' => 'used-it',
|
155 |
+
'text' => __('Used it successfully. Don\'t need anymore.', 'product-import-export-for-woo'),
|
156 |
'type' => 'reviewhtml',
|
157 |
+
'placeholder' => __('Have used it successfully and aint in need of it anymore', 'product-import-export-for-woo')
|
158 |
),
|
159 |
array(
|
160 |
'id' => 'could-not-understand',
|
161 |
+
'text' => __('I couldn\'t understand how to make it work', 'product-import-export-for-woo'),
|
162 |
'type' => 'textarea',
|
163 |
+
'placeholder' => __('Would you like us to assist you?', 'product-import-export-for-woo')
|
164 |
),
|
165 |
array(
|
166 |
'id' => 'found-better-plugin',
|
167 |
+
'text' => __('I found a better plugin', 'product-import-export-for-woo'),
|
168 |
'type' => 'text',
|
169 |
+
'placeholder' => __('Which plugin?', 'product-import-export-for-woo')
|
170 |
),
|
171 |
array(
|
172 |
'id' => 'not-have-that-feature',
|
173 |
+
'text' => __('The plugin is great, but I need specific feature that you don\'t support', 'product-import-export-for-woo'),
|
174 |
'type' => 'textarea',
|
175 |
+
'placeholder' => __('Could you tell us more about that feature?', 'product-import-export-for-woo')
|
176 |
),
|
177 |
array(
|
178 |
'id' => 'is-not-working',
|
179 |
+
'text' => __('The plugin is not working', 'product-import-export-for-woo'),
|
180 |
'type' => 'textarea',
|
181 |
+
'placeholder' => __('Could you tell us a bit more whats not working?', 'product-import-export-for-woo')
|
182 |
),
|
183 |
array(
|
184 |
'id' => 'looking-for-other',
|
185 |
+
'text' => __('It\'s not what I was looking for', 'product-import-export-for-woo'),
|
186 |
'type' => 'textarea',
|
187 |
+
'placeholder' => __('Could you tell us a bit more?', 'product-import-export-for-woo')
|
188 |
),
|
189 |
array(
|
190 |
'id' => 'did-not-work-as-expected',
|
191 |
+
'text' => __('The plugin didn\'t work as expected', 'product-import-export-for-woo'),
|
192 |
'type' => 'textarea',
|
193 |
+
'placeholder' => __('What did you expect?', 'product-import-export-for-woo')
|
194 |
),
|
195 |
array(
|
196 |
'id' => 'other',
|
197 |
+
'text' => __('Other', 'product-import-export-for-woo'),
|
198 |
'type' => 'textarea',
|
199 |
+
'placeholder' => __('Could you tell us a bit more?', 'product-import-export-for-woo')
|
200 |
),
|
201 |
);
|
202 |
|
214 |
<div class="pipe-modal" id="pipe-pipe-modal">
|
215 |
<div class="pipe-modal-wrap">
|
216 |
<div class="pipe-modal-header">
|
217 |
+
<h3><?php _e('If you have a moment, please let us know why you are deactivating:', 'product-import-export-for-woo'); ?></h3>
|
218 |
</div>
|
219 |
<div class="pipe-modal-body">
|
220 |
<ul class="reasons">
|
226 |
</ul>
|
227 |
</div>
|
228 |
<div class="pipe-modal-footer">
|
229 |
+
<a href="#" class="dont-bother-me"><?php _e('I rather wouldn\'t say', 'product-import-export-for-woo'); ?></a>
|
230 |
+
<button class="button-primary pipe-model-submit"><?php _e('Submit & Deactivate', 'product-import-export-for-woo'); ?></button>
|
231 |
+
<button class="button-secondary pipe-model-cancel"><?php _e('Cancel', 'product-import-export-for-woo'); ?></button>
|
232 |
</div>
|
233 |
</div>
|
234 |
</div>
|
307 |
var inputType = parent.data('type'),
|
308 |
inputPlaceholder = parent.data('placeholder');
|
309 |
if ('reviewhtml' === inputType) {
|
310 |
+
var reasonInputHtml = '<div class="reviewlink"><a href="#" target="_blank" class="review-and-deactivate"><?php _e('Deactivate and leave a review', 'product-import-export-for-woo'); ?> <span class="xa-pipe-rating-link"> ★★★★★ </span></a></div>';
|
311 |
} else {
|
312 |
var reasonInputHtml = '<div class="reason-input">' + (('text' === inputType) ? '<input type="text" class="input-text" size="40" />' : '<textarea rows="5" cols="45"></textarea>') + '</div>';
|
313 |
}
|
401 |
|
402 |
if (in_array($screen->id, $allowed_screen_ids) || (isset($_GET['import']) && $_GET['import'] == 'xa_woocommerce_csv')) {
|
403 |
|
404 |
+
$notice = __('<h3>Save Time, Money & Hassle on Your WooCommerce Data Migration?</h3>', 'product-import-export-for-woo');
|
405 |
+
$notice .= __('<h3>Use StoreFrog Migration Services.</h3>', 'product-import-export-for-woo');
|
406 |
|
407 |
$content = '<style>.webtoffee-storefrog-nav-tab.updated {display: flex;align-items: center;margin: 18px 20px 10px 0;padding:23px;border-left-color: #2c85d7!important}.webtoffee-storefrog-nav-tab ul {margin: 0;}.webtoffee-storefrog-nav-tab h3 {margin-top: 0;margin-bottom: 9px;font-weight: 500;font-size: 16px;color: #2880d3;}.webtoffee-storefrog-nav-tab h3:last-child {margin-bottom: 0;}.webtoffee-storefrog-banner {flex-basis: 20%;padding: 0 15px;margin-left: auto;} .webtoffee-storefrog-banner a:focus{box-shadow: none;}</style>';
|
408 |
$content .= '<div class="updated woocommerce-message webtoffee-storefrog-nav-tab notice is-dismissible"><ul>' . $notice . '</ul><div class="webtoffee-storefrog-banner"><a href="http://www.storefrog.com/" target="_blank"> <img src="' . plugins_url(basename(plugin_dir_path(WF_ProdImpExpCsv_FILE))) . '/images/storefrog.png"/></a></div><div style="position: absolute;top: 0;right: 1px;z-index: 10000;" ><button type="button" id="webtoffee-storefrog-notice-dismiss" class="notice-dismiss"><span class="screen-reader-text">Dismiss this notice.</span></button></div></div>';
|
437 |
if (in_array($screen->id, $allowed_screen_ids) || (isset($_GET['import']) && $_GET['import'] == 'xa_woocommerce_csv')) {
|
438 |
if (!get_option('pipe_wt_plugin_reviewed')) {
|
439 |
$footer_text = sprintf(
|
440 |
+
__('If you like the plugin please leave us a %1$s review.', 'product-import-export-for-woo'), '<a href="https://wordpress.org/support/plugin/product-import-export-for-woo/reviews?rate=5#new-post" target="_blank" class="wt-review-link" data-rated="' . esc_attr__('Thanks :)', 'product-import-export-for-woo') . '">★★★★★</a>'
|
441 |
);
|
442 |
wc_enqueue_js(
|
443 |
"jQuery( 'a.wt-review-link' ).click( function() {
|
446 |
});"
|
447 |
);
|
448 |
} else {
|
449 |
+
$footer_text = __('Thank you for your review.', 'product-import-export-for-woo');
|
450 |
}
|
451 |
}
|
452 |
|
480 |
function hf_welcome_screen_activate_basic() {
|
481 |
if(!class_exists( 'WooCommerce' )){
|
482 |
deactivate_plugins(basename(__FILE__));
|
483 |
+
wp_die(__("WooCommerce is not installed/actived. it is required for this plugin to work properly. Please activate WooCommerce.", 'product-import-export-for-woo'), "", array('back_link' => 1));
|
484 |
}
|
485 |
+
if (is_plugin_active('product-csv-import-export-for-woocommerce/product-import-export-for-woo.php')) {
|
486 |
deactivate_plugins(basename(__FILE__));
|
487 |
+
wp_die(__("Is everything fine? You already have the Premium version installed in your website. For any issues, kindly raise a ticket via <a target='_blank' href='https://www.webtoffee.com/support/'>support</a>", 'product-import-export-for-woo'), "", array('back_link' => 1));
|
488 |
}
|
489 |
update_option('xa_pipe_plugin_installed_date', date('Y-m-d H:i:s'));
|
490 |
set_transient('_welcome_screen_activation_redirect', true, 30);
|
readme.txt
CHANGED
@@ -4,7 +4,7 @@ Donate link: https://www.webtoffee.com/plugins/
|
|
4 |
Tags: woocommerce product import, woocommerce import products, woocommerce export products, export woocommerce products, import products into woocommerce
|
5 |
Requires at least: 3.0.1
|
6 |
Tested up to: 5.1.1
|
7 |
-
Stable tag: 1.5.
|
8 |
License: GPLv3 or later
|
9 |
License URI: http://www.gnu.org/licenses/gpl-3.0.html
|
10 |
|
@@ -20,7 +20,7 @@ Are you trying to import products into WooCommerce store or export WooCommerce p
|
|
20 |
|
21 |
🔸 Export Simple Products in to a CSV file.
|
22 |
🔸 Import Simple Products in CSV format in to WooCommerce Store.
|
23 |
-
🔸 Tested OK with WooCommerce 3.5.
|
24 |
|
25 |
|
26 |
Highlights: WooCommerce Product Export, WooCommerce Product CSV Import Suite, WooCommerce bulk product upload, WooCommerce import products with images, import amazon products to WooCommerce, Export Products to xls. Pro Version supports both Simple and Variable products.
|
@@ -148,6 +148,11 @@ LibreOffice.
|
|
148 |
3. Premium Export Settings Screen
|
149 |
|
150 |
== Changelog ==
|
|
|
|
|
|
|
|
|
|
|
151 |
= 1.5.6 =
|
152 |
* Updates: Tested OK with WC 3.5.6 and WP 5.1.1
|
153 |
* Bug Fix:- Updating Stock status based on stock quantity.
|
@@ -291,6 +296,7 @@ LibreOffice.
|
|
291 |
|
292 |
== Upgrade Notice ==
|
293 |
|
294 |
-
= 1.5.
|
295 |
-
* Updates: Tested OK with WC 3.5.
|
296 |
-
* Bug Fix:-
|
|
4 |
Tags: woocommerce product import, woocommerce import products, woocommerce export products, export woocommerce products, import products into woocommerce
|
5 |
Requires at least: 3.0.1
|
6 |
Tested up to: 5.1.1
|
7 |
+
Stable tag: 1.5.7
|
8 |
License: GPLv3 or later
|
9 |
License URI: http://www.gnu.org/licenses/gpl-3.0.html
|
10 |
|
20 |
|
21 |
🔸 Export Simple Products in to a CSV file.
|
22 |
🔸 Import Simple Products in CSV format in to WooCommerce Store.
|
23 |
+
🔸 Tested OK with WooCommerce 3.5.7.
|
24 |
|
25 |
|
26 |
Highlights: WooCommerce Product Export, WooCommerce Product CSV Import Suite, WooCommerce bulk product upload, WooCommerce import products with images, import amazon products to WooCommerce, Export Products to xls. Pro Version supports both Simple and Variable products.
|
148 |
3. Premium Export Settings Screen
|
149 |
|
150 |
== Changelog ==
|
151 |
+
= 1.5.7 =
|
152 |
+
* Updates: Tested OK with WC 3.5.7
|
153 |
+
* Bug Fix:- Image import.
|
154 |
+
* Support GlotPress(translate.wordpress.org).
|
155 |
+
|
156 |
= 1.5.6 =
|
157 |
* Updates: Tested OK with WC 3.5.6 and WP 5.1.1
|
158 |
* Bug Fix:- Updating Stock status based on stock quantity.
|
296 |
|
297 |
== Upgrade Notice ==
|
298 |
|
299 |
+
= 1.5.7 =
|
300 |
+
* Updates: Tested OK with WC 3.5.7
|
301 |
+
* Bug Fix:- Image import.
|
302 |
+
* Support GlotPress(translate.wordpress.org).
|
welcome/welcome.php
CHANGED
@@ -33,17 +33,17 @@
|
|
33 |
</style>
|
34 |
<div class="wrap postbox main_content">
|
35 |
<center>
|
36 |
-
<h2><?php echo __( 'Welcome to Product Import Export', '
|
37 |
<p>
|
38 |
-
<?php echo __( 'WooCommerce Product Import Export can be much easier than you expect', '
|
39 |
<br>
|
40 |
-
<?php echo __( 'Go through our Tutorial video to get an overall idea on how it works.', '
|
41 |
</p>
|
42 |
</center>
|
43 |
</div>
|
44 |
<div class="wrap postbox postbox-custom">
|
45 |
<center>
|
46 |
-
<h2><?php echo __( 'Product Import Export', '
|
47 |
<hr>
|
48 |
<div style="margin-bottom:20px !important;">
|
49 |
<div class="video_content">
|
@@ -54,7 +54,7 @@
|
|
54 |
<div>
|
55 |
<center>
|
56 |
<div style="margin: 5px;;margin-top: 15px !important">
|
57 |
-
<a class="button button-primary" href="<?php echo admin_url("admin.php?page=wf_woocommerce_csv_im_ex"); ?>" target="_blank"><?php echo __( 'Product Import Export', '
|
58 |
</div>
|
59 |
</center>
|
60 |
</div>
|
33 |
</style>
|
34 |
<div class="wrap postbox main_content">
|
35 |
<center>
|
36 |
+
<h2><?php echo __( 'Welcome to Product Import Export', 'product-import-export-for-woo');?></h2>
|
37 |
<p>
|
38 |
+
<?php echo __( 'WooCommerce Product Import Export can be much easier than you expect', 'product-import-export-for-woo');?>
|
39 |
<br>
|
40 |
+
<?php echo __( 'Go through our Tutorial video to get an overall idea on how it works.', 'product-import-export-for-woo');?>
|
41 |
</p>
|
42 |
</center>
|
43 |
</div>
|
44 |
<div class="wrap postbox postbox-custom">
|
45 |
<center>
|
46 |
+
<h2><?php echo __( 'Product Import Export', 'product-import-export-for-woo');?></h2>
|
47 |
<hr>
|
48 |
<div style="margin-bottom:20px !important;">
|
49 |
<div class="video_content">
|
54 |
<div>
|
55 |
<center>
|
56 |
<div style="margin: 5px;;margin-top: 15px !important">
|
57 |
+
<a class="button button-primary" href="<?php echo admin_url("admin.php?page=wf_woocommerce_csv_im_ex"); ?>" target="_blank"><?php echo __( 'Product Import Export', 'product-import-export-for-woo');?></a>
|
58 |
</div>
|
59 |
</center>
|
60 |
</div>
|