Export WordPress data to XML/CSV - Version 1.0.2

Version Description

  • fixed download bundle
  • fixed export repeater fields for ACF 4.x
  • fixed import template for custom product attributes
  • added new option 'include BOM to export file
  • added RU translation
  • removed hidden post types from dropdown in step 1
Download this release

Release Info

Developer soflyy
Plugin Icon 128x128 Export WordPress data to XML/CSV
Version 1.0.2
Comparing to
See all releases

Code changes from version 1.0.1 to 1.0.2

actions/wp_ajax_export_available_rules.php CHANGED
@@ -32,6 +32,22 @@ function pmxe_wp_ajax_export_available_rules(){
32
33
<?php
34
}
35
else
36
{
37
?>
32
33
<?php
34
}
35
+ elseif($post['selected'] === 'post_date')
36
+ {
37
+ ?>
38
+ <option value="equals"><?php _e('equals', 'wp_all_export_plugin'); ?></option>
39
+ <option value="not_equals"><?php _e("doesn't equal", 'wp_all_export_plugin'); ?></option>
40
+ <option value="greater"><?php _e('newer than', 'wp_all_export_plugin');?></option>
41
+ <option value="equals_or_greater"><?php _e('equal to or newer than', 'wp_all_export_plugin'); ?></option>
42
+ <option value="less"><?php _e('older than', 'wp_all_export_plugin'); ?></option>
43
+ <option value="equals_or_less"><?php _e('equal to or older than', 'wp_all_export_plugin'); ?></option>
44
+
45
+ <option value="contains"><?php _e('contains', 'wp_all_export_plugin'); ?></option>
46
+ <option value="not_contains"><?php _e("doesn't contain", 'wp_all_export_plugin'); ?></option>
47
+ <option value="is_empty"><?php _e('is empty', 'wp_all_export_plugin'); ?></option>
48
+ <option value="is_not_empty"><?php _e('is not empty', 'wp_all_export_plugin'); ?></option>
49
+ <?php
50
+ }
51
else
52
{
53
?>
actions/wp_ajax_wpallexport.php CHANGED
@@ -12,13 +12,24 @@ function pmxe_wp_ajax_wpallexport(){
12
exit( __('Security check', 'wp_all_export_plugin') );
13
}
14
15
$wp_uploads = wp_upload_dir();
16
17
$export = new PMXE_Export_Record();
18
19
- $export->getById(PMXE_Plugin::$session->update_previous);
20
21
- $exportOptions = (PMXE_Plugin::$session->has_session() ? PMXE_Plugin::$session->get_clear_session_data() : array()) + PMXE_Plugin::get_default_import_options();
22
23
wp_reset_postdata();
24
@@ -215,6 +226,8 @@ function pmxe_wp_ajax_wpallexport(){
215
{
216
$templateOptions['_virtual'] = 1;
217
$templateOptions['_downloadable'] = 1;
218
}
219
220
if ( XmlExportEngine::$is_user_export )
12
exit( __('Security check', 'wp_all_export_plugin') );
13
}
14
15
+ $input = new PMXE_Input();
16
+ $export_id = $input->get('id', 0);
17
+ if (empty($export_id))
18
+ {
19
+ $export_id = ( ! empty(PMXE_Plugin::$session->update_previous)) ? PMXE_Plugin::$session->update_previous : 0;
20
+ }
21
+
22
$wp_uploads = wp_upload_dir();
23
24
$export = new PMXE_Export_Record();
25
26
+ $export->getById($export_id);
27
28
+ if ( $export->isEmpty() ){
29
+ exit( __('Export is not defined.', 'wp_all_export_plugin') );
30
+ }
31
+
32
+ $exportOptions = $export->options + PMXE_Plugin::get_default_import_options();
33
34
wp_reset_postdata();
35
226
{
227
$templateOptions['_virtual'] = 1;
228
$templateOptions['_downloadable'] = 1;
229
+ $templateOptions['put_variation_image_to_gallery'] = 1;
230
+ $templateOptions['disable_auto_sku_generation'] = 1;
231
}
232
233
if ( XmlExportEngine::$is_user_export )
classes/download.php CHANGED
@@ -6,8 +6,9 @@ class PMXE_Download
6
static public function zip($file_name)
7
{
8
9
- header('Content-type: application/zip;');
10
header("Content-Disposition: attachment; filename=\"".basename($file_name)."\"");
11
readfile($file_name);
12
die;
13
}
6
static public function zip($file_name)
7
{
8
9
+ header('Content-type: application/zip');
10
header("Content-Disposition: attachment; filename=\"".basename($file_name)."\"");
11
+ header('Content-Length: ' . filesize($file_name));
12
readfile($file_name);
13
die;
14
}
classes/handler.php CHANGED
@@ -93,18 +93,22 @@ class PMXE_Handler extends PMXE_Session {
93
*/
94
public function save_data() {
95
// Dirty if something changed - prevents saving nothing new
96
-
97
- if ( $this->_dirty and $this->has_session() ) {
98
99
$session_option = '_wpallexport_session_' . $this->_import_id . '_';
100
$session_expiry_option = '_wpallexport_session_expires_' . $this->_import_id . '_';
101
-
102
- update_option( $session_option, $this->_data );
103
104
- if ( false === get_option( $session_option ) ) {
105
add_option( $session_expiry_option, $this->_session_expiration, '', 'no' );
106
- }
107
- }
108
}
109
110
public function convertData( $import_id ){
@@ -126,8 +130,35 @@ class PMXE_Handler extends PMXE_Session {
126
127
public function clean_session( $import_id = 'new' ){
128
129
- delete_option('_wpallexport_session_' . $import_id . '_');
130
- delete_option('_wpallexport_session_expires_' . $import_id . '_');
131
132
}
133
93
*/
94
public function save_data() {
95
// Dirty if something changed - prevents saving nothing new
96
+ if ( $this->_dirty && $this->has_session() ) {
97
98
$session_option = '_wpallexport_session_' . $this->_import_id . '_';
99
$session_expiry_option = '_wpallexport_session_expires_' . $this->_import_id . '_';
100
101
+ wp_cache_delete( 'notoptions', 'options' );
102
+ wp_cache_delete( $session_option, 'options' );
103
+ wp_cache_delete( $session_expiry_option, 'options' );
104
+
105
+ if ( false === get_option( $session_option ) ) {
106
+ add_option( $session_option, $this->_data, '', 'no' );
107
add_option( $session_expiry_option, $this->_session_expiration, '', 'no' );
108
+ } else {
109
+ update_option( $session_option, $this->_data );
110
+ }
111
+ }
112
}
113
114
public function convertData( $import_id ){
130
131
public function clean_session( $import_id = 'new' ){
132
133
+ global $wpdb;
134
+
135
+ $now = time();
136
+ $expired_sessions = array();
137
+ $wpallimport_session_expires = $wpdb->get_results( $wpdb->prepare("SELECT option_name, option_value FROM $wpdb->options WHERE option_name LIKE %s", "_wpallexport_session_expires_" . $import_id . "_%") );
138
+
139
+ $expired_sessions[] = "_wpallexport_session_{$import_id}_"; // Session key
140
+
141
+ foreach ( $wpallimport_session_expires as $wpallimport_session_expire ) {
142
+ //if ( $now > intval( $wpallimport_session_expire->option_value ) ) {
143
+ //$session_id = substr( $wpallimport_session_expire->option_name, 29 );
144
+ $expired_sessions[] = $wpallimport_session_expire->option_name; // Expires key
145
+ //$expired_sessions[] = "_wpallimport_session_$session_id"; // Session key
146
+ //}
147
+ }
148
+
149
+ if ( ! empty( $expired_sessions ) ) {
150
+ wp_cache_delete( 'notoptions', 'options' );
151
+ foreach ($expired_sessions as $expired) {
152
+ wp_cache_delete( $expired, 'options' );
153
+ delete_option($expired);
154
+ }
155
+ $expired_sessions_chunked = array_chunk( $expired_sessions, 100 );
156
+
157
+ foreach ( $expired_sessions_chunked as $chunk ) {
158
+ $option_names = implode( "','", $chunk );
159
+ $wpdb->query( "DELETE FROM $wpdb->options WHERE option_name IN ('$option_names')" );
160
+ }
161
+ }
162
163
}
164
controllers/admin/manage.php CHANGED
@@ -259,7 +259,7 @@ class PMXE_Admin_Manage extends PMXE_Controller_Admin {
259
$uploads = wp_upload_dir();
260
$targetDir = $uploads['basedir'] . DIRECTORY_SEPARATOR . PMXI_Plugin::TEMP_DIRECTORY;
261
262
- $export_file_name = "WP All Import Template - " . $export->friendly_name . ".txt";
263
264
file_put_contents($targetDir . DIRECTORY_SEPARATOR . $export_file_name, json_encode($export_data));
265
@@ -301,7 +301,7 @@ class PMXE_Admin_Manage extends PMXE_Controller_Admin {
301
if ( ! $export->getById($id)->isEmpty())
302
{
303
304
- $friendly_name = str_replace(":", "_", $export->friendly_name);
305
306
@mkdir($bundle_dir);
307
@@ -330,13 +330,13 @@ class PMXE_Admin_Manage extends PMXE_Controller_Admin {
330
331
@copy( $filepath, $bundle_dir . basename($filepath) );
332
333
- $bundle_path = $tmp_dir . sanitize_file_name($friendly_name) . '.zip';
334
335
PMXE_Zip::zipDir($bundle_dir, $bundle_path);
336
337
$bundle_url = $uploads['baseurl'] . str_replace($uploads['basedir'], '', $bundle_path);
338
339
- PMXE_download::zip($bundle_url);
340
341
}
342
}
259
$uploads = wp_upload_dir();
260
$targetDir = $uploads['basedir'] . DIRECTORY_SEPARATOR . PMXI_Plugin::TEMP_DIRECTORY;
261
262
+ $export_file_name = "WP All Import Template - " . sanitize_file_name($export->friendly_name) . ".txt";
263
264
file_put_contents($targetDir . DIRECTORY_SEPARATOR . $export_file_name, json_encode($export_data));
265
301
if ( ! $export->getById($id)->isEmpty())
302
{
303
304
+ $friendly_name = sanitize_file_name($export->friendly_name);
305
306
@mkdir($bundle_dir);
307
330
331
@copy( $filepath, $bundle_dir . basename($filepath) );
332
333
+ $bundle_path = $tmp_dir . $friendly_name . '.zip';
334
335
PMXE_Zip::zipDir($bundle_dir, $bundle_path);
336
337
$bundle_url = $uploads['baseurl'] . str_replace($uploads['basedir'], '', $bundle_path);
338
339
+ PMXE_download::zip($bundle_path);
340
341
}
342
}
controllers/controller.php CHANGED
@@ -114,25 +114,42 @@ abstract class PMXE_Controller {
114
die( __('Security check', 'wp_all_export_plugin') );
115
} else {
116
117
- $attch_url = PMXE_Plugin::$session->file;
118
119
- $export_type = PMXE_Plugin::$session->export_to;
120
121
- // clear import session
122
- PMXE_Plugin::$session->clean_session(); // clear session data (prevent from reimporting the same data on page refresh)
123
124
- switch ($export_type) {
125
- case 'xml':
126
- PMXE_download::xml($attch_url);
127
- break;
128
- case 'csv':
129
- PMXE_download::csv($attch_url);
130
- break;
131
-
132
- default:
133
- # code...
134
- break;
135
- }
136
}
137
138
}
114
die( __('Security check', 'wp_all_export_plugin') );
115
} else {
116
117
+ $is_secure_import = PMXE_Plugin::getInstance()->getOption('secure');
118
119
+ $id = $this->input->get('id');
120
121
+ $export = new PMXE_Export_Record();
122
123
+ $filepath = '';
124
+
125
+ if ( ! $export->getById($id)->isEmpty())
126
+ {
127
+ if ( ! $is_secure_import)
128
+ {
129
+ $filepath = get_attached_file($export->attch_id);
130
+ }
131
+ else
132
+ {
133
+ $filepath = wp_all_export_get_absolute_path($export->options['filepath']);
134
+ }
135
+
136
+ if ( @file_exists($filepath) )
137
+ {
138
+ switch ($export['options']['export_to'])
139
+ {
140
+ case 'xml':
141
+ PMXE_download::xml($filepath);
142
+ break;
143
+ case 'csv':
144
+ PMXE_download::csv($filepath);
145
+ break;
146
+
147
+ default:
148
+
149
+ break;
150
+ }
151
+ }
152
+ }
153
}
154
155
}
controllers/controller/admin.php CHANGED
@@ -43,11 +43,12 @@ abstract class PMXE_Controller_Admin extends PMXE_Controller {
43
44
wp_enqueue_style('jquery-ui', PMXE_ROOT_URL . '/static/js/jquery/css/redmond/jquery-ui.css');
45
wp_enqueue_style('jquery-tipsy', PMXE_ROOT_URL . '/static/js/jquery/css/smoothness/jquery.tipsy.css');
46
- wp_enqueue_style('pmxe-admin-style', PMXE_ROOT_URL . '/static/css/admin.css');
47
wp_enqueue_style('pmxe-admin-style-ie', PMXE_ROOT_URL . '/static/css/admin-ie.css');
48
wp_enqueue_style('jquery-select2', PMXE_ROOT_URL . '/static/js/jquery/css/select2/select2.css');
49
wp_enqueue_style('jquery-select2', PMXE_ROOT_URL . '/static/js/jquery/css/select2/select2-bootstrap.css');
50
wp_enqueue_style('jquery-chosen', PMXE_ROOT_URL . '/static/js/jquery/css/chosen/chosen.css');
51
$wp_styles->add_data('pmxe-admin-style-ie', 'conditional', 'lte IE 7');
52
wp_enqueue_style('wp-pointer');
53
@@ -61,17 +62,24 @@ abstract class PMXE_Controller_Admin extends PMXE_Controller {
61
}
62
63
wp_enqueue_script('jquery-ui-datepicker', PMXE_ROOT_URL . '/static/js/jquery/ui.datepicker.js', 'jquery-ui-core');
64
- wp_enqueue_script('jquery-ui-autocomplete', PMXE_ROOT_URL . '/static/js/jquery/ui.autocomplete.js', array('jquery-ui-core', 'jquery-ui-widget', 'jquery-ui-position'));
65
wp_enqueue_script('jquery-tipsy', PMXE_ROOT_URL . '/static/js/jquery/jquery.tipsy.js', 'jquery');
66
wp_enqueue_script('jquery-pmxe-nestable', PMXE_ROOT_URL . '/static/js/jquery/jquery.mjs.pmxe_nestedSortable.js', array('jquery', 'jquery-ui-dialog', 'jquery-ui-sortable', 'jquery-ui-draggable', 'jquery-ui-droppable', 'jquery-ui-tabs', 'jquery-ui-progressbar'));
67
wp_enqueue_script('jquery-moment', PMXE_ROOT_URL . '/static/js/jquery/moment.js', 'jquery');
68
wp_enqueue_script('jquery-select2', PMXE_ROOT_URL . '/static/js/jquery/select2.min.js', 'jquery');
69
wp_enqueue_script('jquery-ddslick', PMXE_ROOT_URL . '/static/js/jquery/jquery.ddslick.min.js', 'jquery');
70
wp_enqueue_script('jquery-chosen', PMXE_ROOT_URL . '/static/js/jquery/chosen.jquery.min.js', 'jquery');
71
wp_enqueue_script('wp-pointer');
72
73
/* load plupload scripts */
74
- wp_enqueue_script('pmxe-admin-script', PMXE_ROOT_URL . '/static/js/admin.js', array('jquery', 'jquery-ui-dialog', 'jquery-ui-datepicker', 'jquery-ui-draggable', 'jquery-ui-droppable'));
75
76
}
77
43
44
wp_enqueue_style('jquery-ui', PMXE_ROOT_URL . '/static/js/jquery/css/redmond/jquery-ui.css');
45
wp_enqueue_style('jquery-tipsy', PMXE_ROOT_URL . '/static/js/jquery/css/smoothness/jquery.tipsy.css');
46
+ wp_enqueue_style('pmxe-admin-style', PMXE_ROOT_URL . '/static/css/admin.css', array(), PMXE_VERSION);
47
wp_enqueue_style('pmxe-admin-style-ie', PMXE_ROOT_URL . '/static/css/admin-ie.css');
48
wp_enqueue_style('jquery-select2', PMXE_ROOT_URL . '/static/js/jquery/css/select2/select2.css');
49
wp_enqueue_style('jquery-select2', PMXE_ROOT_URL . '/static/js/jquery/css/select2/select2-bootstrap.css');
50
wp_enqueue_style('jquery-chosen', PMXE_ROOT_URL . '/static/js/jquery/css/chosen/chosen.css');
51
+ wp_enqueue_style('jquery-codemirror', PMXE_ROOT_URL . '/static/codemirror/codemirror.css', array(), PMXE_VERSION);
52
$wp_styles->add_data('pmxe-admin-style-ie', 'conditional', 'lte IE 7');
53
wp_enqueue_style('wp-pointer');
54
62
}
63
64
wp_enqueue_script('jquery-ui-datepicker', PMXE_ROOT_URL . '/static/js/jquery/ui.datepicker.js', 'jquery-ui-core');
65
+ //wp_enqueue_script('jquery-ui-autocomplete', PMXE_ROOT_URL . '/static/js/jquery/ui.autocomplete.js', array('jquery-ui-core', 'jquery-ui-widget', 'jquery-ui-position'));
66
wp_enqueue_script('jquery-tipsy', PMXE_ROOT_URL . '/static/js/jquery/jquery.tipsy.js', 'jquery');
67
wp_enqueue_script('jquery-pmxe-nestable', PMXE_ROOT_URL . '/static/js/jquery/jquery.mjs.pmxe_nestedSortable.js', array('jquery', 'jquery-ui-dialog', 'jquery-ui-sortable', 'jquery-ui-draggable', 'jquery-ui-droppable', 'jquery-ui-tabs', 'jquery-ui-progressbar'));
68
wp_enqueue_script('jquery-moment', PMXE_ROOT_URL . '/static/js/jquery/moment.js', 'jquery');
69
wp_enqueue_script('jquery-select2', PMXE_ROOT_URL . '/static/js/jquery/select2.min.js', 'jquery');
70
wp_enqueue_script('jquery-ddslick', PMXE_ROOT_URL . '/static/js/jquery/jquery.ddslick.min.js', 'jquery');
71
wp_enqueue_script('jquery-chosen', PMXE_ROOT_URL . '/static/js/jquery/chosen.jquery.min.js', 'jquery');
72
+ wp_enqueue_script('jquery-codemirror', PMXE_ROOT_URL . '/static/codemirror/codemirror.js', array(), PMXE_VERSION);
73
+ wp_enqueue_script('jquery-codemirror-matchbrackets', PMXE_ROOT_URL . '/static/codemirror/matchbrackets.js', array('jquery-codemirror'), PMXE_VERSION);
74
+ wp_enqueue_script('jquery-codemirror-htmlmixed', PMXE_ROOT_URL . '/static/codemirror/htmlmixed.js', array('jquery-codemirror-matchbrackets'), PMXE_VERSION);
75
+ wp_enqueue_script('jquery-codemirror-xml', PMXE_ROOT_URL . '/static/codemirror/xml.js', array('jquery-codemirror-htmlmixed'), PMXE_VERSION);
76
+ wp_enqueue_script('jquery-codemirror-javascript', PMXE_ROOT_URL . '/static/codemirror/javascript.js', array('jquery-codemirror-xml'), PMXE_VERSION);
77
+ wp_enqueue_script('jquery-codemirror-clike', PMXE_ROOT_URL . '/static/codemirror/clike.js', array('jquery-codemirror-javascript'), PMXE_VERSION);
78
+ wp_enqueue_script('jquery-codemirror-php', PMXE_ROOT_URL . '/static/codemirror/php.js', array('jquery-codemirror-clike'), PMXE_VERSION);
79
wp_enqueue_script('wp-pointer');
80
81
/* load plupload scripts */
82
+ wp_enqueue_script('pmxe-admin-script', PMXE_ROOT_URL . '/static/js/admin.js', array('jquery', 'jquery-ui-dialog', 'jquery-ui-datepicker', 'jquery-ui-draggable', 'jquery-ui-droppable', 'jquery-ui-core', 'jquery-ui-widget', 'jquery-ui-position', 'jquery-ui-autocomplete'), PMXE_VERSION);
83
84
}
85
helpers/pmxe_export_acf_field_csv.php CHANGED
@@ -234,7 +234,7 @@ function pmxe_export_acf_field_csv($field_value, $exportOptions, $ID, $recordID,
234
235
while( have_rows($field_name, $recordID) ): the_row();
236
237
- $row = acf_get_row();
238
239
foreach ($row['field']['sub_fields'] as $sub_field) {
240
@@ -268,7 +268,7 @@ function pmxe_export_acf_field_csv($field_value, $exportOptions, $ID, $recordID,
268
// loop through the rows of data
269
while ( have_rows($field_name) ) : the_row();
270
271
- $row = acf_get_row();
272
273
foreach ($row['field']['layouts'] as $layout) {
274
234
235
while( have_rows($field_name, $recordID) ): the_row();
236
237
+ $row = XmlExportACF::acf_get_row();
238
239
foreach ($row['field']['sub_fields'] as $sub_field) {
240
268
// loop through the rows of data
269
while ( have_rows($field_name) ) : the_row();
270
271
+ $row = XmlExportACF::acf_get_row();
272
273
foreach ($row['field']['layouts'] as $layout) {
274
helpers/pmxe_export_acf_field_xml.php CHANGED
@@ -252,7 +252,7 @@ function pmxe_export_acf_field_xml($field_value, $exportOptions, $ID, $recordID,
252
253
the_row();
254
255
- $row = acf_get_row();
256
257
//$xmlWriter->startElementNs('key_' . $row['i'], 'row', null);
258
@@ -289,7 +289,7 @@ function pmxe_export_acf_field_xml($field_value, $exportOptions, $ID, $recordID,
289
// loop through the rows of data
290
while ( have_rows($field_name) ) : the_row();
291
292
- $row = acf_get_row();
293
294
foreach ($row['field']['layouts'] as $layout) {
295
252
253
the_row();
254
255
+ $row = XmlExportACF::acf_get_row();
256
257
//$xmlWriter->startElementNs('key_' . $row['i'], 'row', null);
258
289
// loop through the rows of data
290
while ( have_rows($field_name) ) : the_row();
291
292
+ $row = XmlExportACF::acf_get_row();
293
294
foreach ($row['field']['layouts'] as $layout) {
295
helpers/pmxe_export_csv.php CHANGED
@@ -426,7 +426,7 @@ function pmxe_export_csv($exportQuery, $exportOptions, $preview = false, $is_cro
426
427
}
428
429
- if ($exportOptions['cc_label'][$ID] == 'product_type') $article['parent_sku'] = get_post_meta($record->post_parent, '_sku', true);
430
//if ( ! in_array('parent_sku', $taxes)) $taxes[] = 'parent_sku';
431
432
}
@@ -575,7 +575,12 @@ function pmxe_export_csv($exportQuery, $exportOptions, $preview = false, $is_cro
575
576
if ($is_cron)
577
{
578
-
579
file_put_contents($file_path, ob_get_clean(), FILE_APPEND);
580
581
return $file_path;
@@ -591,9 +596,16 @@ function pmxe_export_csv($exportQuery, $exportOptions, $preview = false, $is_cro
591
592
$target = $is_secure_import ? wp_all_export_secure_file($wp_uploads['basedir'] . DIRECTORY_SEPARATOR . PMXE_Plugin::UPLOADS_DIRECTORY) : $wp_uploads['path'];
593
594
- $export_file = $target . DIRECTORY_SEPARATOR . preg_replace('%- \d{4}.*%', '', $exportOptions['friendly_name']) . '- ' . date("Y F d H_i") . '.' . $exportOptions['export_to'];
595
596
- file_put_contents($export_file, ob_get_clean());
597
598
PMXE_Plugin::$session->set('file', $export_file);
599
426
427
}
428
429
+ if ($exportOptions['cc_label'][$ID] == 'product_type') $article['parent_sku'] = $record->post_parent;
430
//if ( ! in_array('parent_sku', $taxes)) $taxes[] = 'parent_sku';
431
432
}
575
576
if ($is_cron)
577
{
578
+ // include BOM to export file
579
+ if ( ! $exported_by_cron and $exportOptions['include_bom'])
580
+ {
581
+ file_put_contents($file_path, chr(0xEF).chr(0xBB).chr(0xBF));
582
+ }
583
+
584
file_put_contents($file_path, ob_get_clean(), FILE_APPEND);
585
586
return $file_path;
596
597
$target = $is_secure_import ? wp_all_export_secure_file($wp_uploads['basedir'] . DIRECTORY_SEPARATOR . PMXE_Plugin::UPLOADS_DIRECTORY) : $wp_uploads['path'];
598
599
+ $export_file = $target . DIRECTORY_SEPARATOR . sanitize_file_name(preg_replace('%- \d{4}.*%', '', $exportOptions['friendly_name'])) . ' - ' . date("Y F d H_i") . '.' . $exportOptions['export_to'];
600
601
+ if ($exportOptions['include_bom'])
602
+ {
603
+ file_put_contents($export_file, chr(0xEF).chr(0xBB).chr(0xBF).ob_get_clean());
604
+ }
605
+ else
606
+ {
607
+ file_put_contents($export_file, ob_get_clean());
608
+ }
609
610
PMXE_Plugin::$session->set('file', $export_file);
611
helpers/pmxe_export_xml.php CHANGED
@@ -46,7 +46,7 @@ function pmxe_export_xml($exportQuery, $exportOptions, $preview = false, $is_cro
46
47
if (empty($exportOptions['cc_name'][$ID]) or empty($exportOptions['cc_type'][$ID])) continue;
48
49
- $element_name = ( ! empty($exportOptions['cc_name'][$ID]) ) ? preg_replace('/[^a-z0-9_]/i', '', $exportOptions['cc_name'][$ID]) : 'untitled_' . $ID;
50
$fieldSnipped = ( ! empty($exportOptions['cc_php'][$ID]) and ! empty($exportOptions['cc_code'][$ID]) ) ? $exportOptions['cc_code'][$ID] : false;
51
52
switch ($exportOptions['cc_type'][$ID]) {
@@ -315,7 +315,7 @@ function pmxe_export_xml($exportQuery, $exportOptions, $preview = false, $is_cro
315
{
316
if ($exportOptions['cc_label'][$ID] == 'product_type' and get_post_type() == 'product_variation')
317
{
318
- $xmlWriter->writeElement('parent_sku', get_post_meta($record->post_parent, '_sku', true));
319
$xmlWriter->writeElement($element_name, 'variable');
320
}
321
else
@@ -413,7 +413,15 @@ function pmxe_export_xml($exportQuery, $exportOptions, $preview = false, $is_cro
413
}
414
else
415
{
416
- file_put_contents($file_path, wp_all_export_remove_colons(substr($xml, 0, -8)));
417
}
418
419
return $file_path;
@@ -430,9 +438,16 @@ function pmxe_export_xml($exportQuery, $exportOptions, $preview = false, $is_cro
430
431
$target = $is_secure_import ? wp_all_export_secure_file($wp_uploads['basedir'] . DIRECTORY_SEPARATOR . PMXE_Plugin::UPLOADS_DIRECTORY) : $wp_uploads['path'];
432
433
- $export_file = $target . DIRECTORY_SEPARATOR . preg_replace('%- \d{4}.*%', '', $exportOptions['friendly_name']) . '- ' . date("Y F d H_i") . '.' . $exportOptions['export_to'];
434
-
435
- file_put_contents($export_file, wp_all_export_remove_colons(substr($xmlWriter->flush(true), 0, -8)));
436
437
PMXE_Plugin::$session->set('file', $export_file);
438
46
47
if (empty($exportOptions['cc_name'][$ID]) or empty($exportOptions['cc_type'][$ID])) continue;
48
49
+ $element_name = ( ! empty($exportOptions['cc_name'][$ID]) ) ? preg_replace('/[^a-z0-9_-]/i', '', $exportOptions['cc_name'][$ID]) : 'untitled_' . $ID;
50
$fieldSnipped = ( ! empty($exportOptions['cc_php'][$ID]) and ! empty($exportOptions['cc_code'][$ID]) ) ? $exportOptions['cc_code'][$ID] : false;
51
52
switch ($exportOptions['cc_type'][$ID]) {
315
{
316
if ($exportOptions['cc_label'][$ID] == 'product_type' and get_post_type() == 'product_variation')
317
{
318
+ $xmlWriter->writeElement('parent_sku', $record->post_parent);
319
$xmlWriter->writeElement($element_name, 'variable');
320
}
321
else
413
}
414
else
415
{
416
+ // include BOM to export file
417
+ if ($exportOptions['include_bom'])
418
+ {
419
+ file_put_contents($file_path, chr(0xEF).chr(0xBB).chr(0xBF).wp_all_export_remove_colons(substr($xml, 0, -8)));
420
+ }
421
+ else
422
+ {
423
+ file_put_contents($file_path, wp_all_export_remove_colons(substr($xml, 0, -8)));
424
+ }
425
}
426
427
return $file_path;
438
439
$target = $is_secure_import ? wp_all_export_secure_file($wp_uploads['basedir'] . DIRECTORY_SEPARATOR . PMXE_Plugin::UPLOADS_DIRECTORY) : $wp_uploads['path'];
440
441
+ $export_file = $target . DIRECTORY_SEPARATOR . sanitize_file_name(preg_replace('%- \d{4}.*%', '', $exportOptions['friendly_name'])) . ' - ' . date("Y F d H_i") . '.' . $exportOptions['export_to'];
442
+
443
+ if ($exportOptions['include_bom'])
444
+ {
445
+ file_put_contents($export_file, chr(0xEF).chr(0xBB).chr(0xBF).wp_all_export_remove_colons(substr($xmlWriter->flush(true), 0, -8)));
446
+ }
447
+ else
448
+ {
449
+ file_put_contents($export_file, wp_all_export_remove_colons(substr($xmlWriter->flush(true), 0, -8)));
450
+ }
451
452
PMXE_Plugin::$session->set('file', $export_file);
453
helpers/wp_all_export_prepare_template_csv.php CHANGED
@@ -17,7 +17,8 @@ function wp_all_export_prepare_template_csv($exportOptions, &$templateOptions)
17
switch ($exportOptions['cc_type'][$ID]) {
18
case 'id':
19
$templateOptions['unique_key'] = '{'. $element_name .'[1]}';
20
- $templateOptions['tmp_unique_key'] = '{'. $element_name .'[1]}';
21
break;
22
case 'title':
23
case 'content':
@@ -110,8 +111,7 @@ function wp_all_export_prepare_template_csv($exportOptions, &$templateOptions)
110
$templateOptions['single_product_height'] = '{'. $element_name .'[1]}';
111
break;
112
case '_sku':
113
- $templateOptions['single_product_sku'] = '{'. $element_name .'[1]}';
114
- $templateOptions['single_product_id'] = '{'. $element_name .'[1]}';
115
$templateOptions['single_product_parent_id'] = '{parent_sku[1]}';
116
break;
117
case '_sale_price_dates_from':
@@ -170,22 +170,65 @@ function wp_all_export_prepare_template_csv($exportOptions, &$templateOptions)
170
break;
171
case 'attributes':
172
173
- global $wp_taxonomies;
174
175
foreach ($wp_taxonomies as $key => $obj) { if (in_array($obj->name, array('nav_menu'))) continue;
176
177
if (strpos($obj->name, "pa_") === 0 and strlen($obj->name) > 3)
178
{
179
- $templateOptions['attribute_name'][] = '{attributename' . $obj->name .'[1]}';
180
- $templateOptions['attribute_value'][] = '{attributevalue' . $obj->name .'[1]}';
181
$templateOptions['in_variations'][] = "1";
182
$templateOptions['is_visible'][] = "1";
183
$templateOptions['is_taxonomy'][] = "1";
184
$templateOptions['create_taxonomy_in_not_exists'][] = "1";
185
$attr_list[] = $obj->name;
186
}
187
}
188
189
break;
190
default:
191
# code...
@@ -342,10 +385,13 @@ function wp_all_export_prepare_template_csv($exportOptions, &$templateOptions)
342
343
} else{
344
345
- foreach ($field['sub_fields'] as $n => $sub_field){
346
347
- $templateOptions['fields'][$field_options['key']]['rows']['1'][$sub_field['key']] = '{' . $field_tpl_key . '_' . strtolower($sub_field['name']) . '[1]}';
348
349
}
350
}
351
@@ -373,10 +419,10 @@ function wp_all_export_prepare_template_csv($exportOptions, &$templateOptions)
373
374
$templateOptions['attribute_name'][] = str_replace('pa_', '', $exportOptions['cc_value'][$ID]);
375
$templateOptions['attribute_value'][] = '{attribute_'. $element_name .'[1]}';
376
- $templateOptions['in_variations'][] = 1;
377
- $templateOptions['is_visible'][] = 1;
378
- $templateOptions['is_taxonomy'][] = 1;
379
- $templateOptions['create_taxonomy_in_not_exists'][] = 1;
380
$attr_list[] = $exportOptions['cc_value'][$ID];
381
382
}
17
switch ($exportOptions['cc_type'][$ID]) {
18
case 'id':
19
$templateOptions['unique_key'] = '{'. $element_name .'[1]}';
20
+ $templateOptions['tmp_unique_key'] = '{'. $element_name .'[1]}';
21
+ $templateOptions['single_product_id'] = '{'. $element_name .'[1]}';
22
break;
23
case 'title':
24
case 'content':
111
$templateOptions['single_product_height'] = '{'. $element_name .'[1]}';
112
break;
113
case '_sku':
114
+ $templateOptions['single_product_sku'] = '{'. $element_name .'[1]}';
115
$templateOptions['single_product_parent_id'] = '{parent_sku[1]}';
116
break;
117
case '_sale_price_dates_from':
170
break;
171
case 'attributes':
172
173
+ global $wp_taxonomies;
174
175
foreach ($wp_taxonomies as $key => $obj) { if (in_array($obj->name, array('nav_menu'))) continue;
176
177
if (strpos($obj->name, "pa_") === 0 and strlen($obj->name) > 3)
178
{
179
+ $attribute_name = preg_replace('/[^a-z0-9_]/i', '', $obj->name);
180
+ $templateOptions['attribute_name'][] = '{attributename' . $attribute_name .'[1]}';
181
+ $templateOptions['attribute_value'][] = '{attributevalue' . $attribute_name .'[1]}';
182
$templateOptions['in_variations'][] = "1";
183
$templateOptions['is_visible'][] = "1";
184
$templateOptions['is_taxonomy'][] = "1";
185
$templateOptions['create_taxonomy_in_not_exists'][] = "1";
186
+
187
+ $templateOptions['is_advanced'][] = "1";
188
+ $templateOptions['advanced_is_create_terms'][] = "yes";
189
+ $templateOptions['advanced_in_variations'][] = "xpath";
190
+ $templateOptions['advanced_is_visible'][] = "xpath";
191
+ $templateOptions['advanced_is_taxonomy'][] = "xpath";
192
+ $templateOptions['advanced_in_variations_xpath'][] = '{attributeinvariations' . $attribute_name .'[1]}';
193
+ $templateOptions['advanced_is_visible_xpath'][] = '{attributeisvisible' . $attribute_name .'[1]}';
194
+ $templateOptions['advanced_is_taxonomy_xpath'][] = '{attributeistaxonomy' . $attribute_name .'[1]}';
195
+
196
$attr_list[] = $obj->name;
197
}
198
}
199
200
+ global $wpdb;
201
+
202
+ $table_prefix = $wpdb->prefix;
203
+
204
+ $attributes = $wpdb->get_results($wpdb->prepare("SELECT DISTINCT meta_key FROM {$table_prefix}postmeta
205
+ WHERE {$table_prefix}postmeta.meta_key LIKE %s AND {$table_prefix}postmeta.meta_key NOT LIKE %s", 'attribute_%', 'attribute_pa_%'));
206
+
207
+ if ( ! empty($attributes))
208
+ {
209
+ foreach ($attributes as $attribute)
210
+ {
211
+ $attribute_name = preg_replace('/[^a-z0-9_]/i', '', str_replace('attribute_', '', $attribute->meta_key));
212
+ $templateOptions['attribute_name'][] = '{attributename' . $attribute_name .'[1]}';
213
+ $templateOptions['attribute_value'][] = '{attributevalue' . $attribute_name .'[1]}';
214
+ $templateOptions['in_variations'][] = "1";
215
+ $templateOptions['is_visible'][] = "1";
216
+ $templateOptions['is_taxonomy'][] = "1";
217
+ $templateOptions['create_taxonomy_in_not_exists'][] = "1";
218
+
219
+ $templateOptions['is_advanced'][] = "1";
220
+ $templateOptions['advanced_is_create_terms'][] = "yes";
221
+ $templateOptions['advanced_in_variations'][] = "xpath";
222
+ $templateOptions['advanced_is_visible'][] = "xpath";
223
+ $templateOptions['advanced_is_taxonomy'][] = "xpath";
224
+ $templateOptions['advanced_in_variations_xpath'][] = '{attributeinvariations' . $attribute_name .'[1]}';
225
+ $templateOptions['advanced_is_visible_xpath'][] = '{attributeisvisible' . $attribute_name .'[1]}';
226
+ $templateOptions['advanced_is_taxonomy_xpath'][] = '{attributeistaxonomy' . $attribute_name .'[1]}';
227
+
228
+ $attr_list[] = str_replace('attribute_', '', $attribute->meta_key);
229
+ }
230
+ }
231
+
232
break;
233
default:
234
# code...
385
386
} else{
387
388
+ if ( ! empty($field['sub_fields']))
389
+ {
390
+ foreach ($field['sub_fields'] as $n => $sub_field){
391
392
+ $templateOptions['fields'][$field_options['key']]['rows']['1'][$sub_field['key']] = '{' . $field_tpl_key . '_' . strtolower($sub_field['name']) . '[1]}';
393
394
+ }
395
}
396
}
397
419
420
$templateOptions['attribute_name'][] = str_replace('pa_', '', $exportOptions['cc_value'][$ID]);
421
$templateOptions['attribute_value'][] = '{attribute_'. $element_name .'[1]}';
422
+ $templateOptions['in_variations'][] = "1";
423
+ $templateOptions['is_visible'][] = "1";
424
+ $templateOptions['is_taxonomy'][] = "1";
425
+ $templateOptions['create_taxonomy_in_not_exists'][] = "1";
426
$attr_list[] = $exportOptions['cc_value'][$ID];
427
428
}
helpers/wp_all_export_prepare_template_xml.php CHANGED
@@ -12,11 +12,12 @@ function wp_all_export_prepare_template_xml($exportOptions, &$templateOptions)
12
$acf_list = array();
13
foreach ($exportOptions['ids'] as $ID => $value) {
14
if (empty($exportOptions['cc_type'][$ID])) continue;
15
- $element_name = (!empty($exportOptions['cc_name'][$ID])) ? str_replace("-", "_", preg_replace('/[^a-z0-9_]/i', '', $exportOptions['cc_name'][$ID])) : 'untitled_' . $ID;
16
switch ($exportOptions['cc_type'][$ID]) {
17
case 'id':
18
$templateOptions['unique_key'] = '{'. $element_name .'[1]}';
19
$templateOptions['tmp_unique_key'] = '{'. $element_name .'[1]}';
20
break;
21
case 'title':
22
case 'content':
@@ -108,8 +109,7 @@ function wp_all_export_prepare_template_xml($exportOptions, &$templateOptions)
108
$templateOptions['single_product_height'] = '{'. $element_name .'[1]}';
109
break;
110
case '_sku':
111
- $templateOptions['single_product_sku'] = '{'. $element_name .'[1]}';
112
- $templateOptions['single_product_id'] = '{'. $element_name .'[1]}';
113
$templateOptions['single_product_parent_id'] = '{parent_sku[1]}';
114
break;
115
case '_sale_price_dates_from':
@@ -180,10 +180,52 @@ function wp_all_export_prepare_template_xml($exportOptions, &$templateOptions)
180
$templateOptions['is_visible'][] = "1";
181
$templateOptions['is_taxonomy'][] = "1";
182
$templateOptions['create_taxonomy_in_not_exists'][] = "1";
183
$attr_list[] = $obj->name;
184
}
185
}
186
187
break;
188
default:
189
# code...
@@ -309,10 +351,13 @@ function wp_all_export_prepare_template_xml($exportOptions, &$templateOptions)
309
310
} else{
311
312
- foreach ($field['sub_fields'] as $n => $sub_field){
313
314
- $templateOptions['fields'][$field_options['key']]['rows']['1'][$sub_field['key']] = '{acf_' . $sub_field['name'] . '[1]}';
315
316
}
317
}
318
@@ -339,10 +384,10 @@ function wp_all_export_prepare_template_xml($exportOptions, &$templateOptions)
339
if ( ! empty($exportOptions['cc_value'][$ID]) and ! in_array($exportOptions['cc_value'][$ID], $attr_list) ) {
340
$templateOptions['attribute_name'][] = str_replace('pa_', '', $exportOptions['cc_value'][$ID]);
341
$templateOptions['attribute_value'][] = '{attribute_'. $element_name .'[1]}';
342
- $templateOptions['in_variations'][] = 1;
343
- $templateOptions['is_visible'][] = 1;
344
- $templateOptions['is_taxonomy'][] = 1;
345
- $templateOptions['create_taxonomy_in_not_exists'][] = 1;
346
$attr_list[] = $exportOptions['cc_value'][$ID];
347
}
348
12
$acf_list = array();
13
foreach ($exportOptions['ids'] as $ID => $value) {
14
if (empty($exportOptions['cc_type'][$ID])) continue;
15
+ $element_name = (!empty($exportOptions['cc_name'][$ID])) ? preg_replace('/[^a-z0-9_-]/i', '', $exportOptions['cc_name'][$ID]) : 'untitled_' . $ID;
16
switch ($exportOptions['cc_type'][$ID]) {
17
case 'id':
18
$templateOptions['unique_key'] = '{'. $element_name .'[1]}';
19
$templateOptions['tmp_unique_key'] = '{'. $element_name .'[1]}';
20
+ $templateOptions['single_product_id'] = '{'. $element_name .'[1]}';
21
break;
22
case 'title':
23
case 'content':
109
$templateOptions['single_product_height'] = '{'. $element_name .'[1]}';
110
break;
111
case '_sku':
112
+ $templateOptions['single_product_sku'] = '{'. $element_name .'[1]}';
113
$templateOptions['single_product_parent_id'] = '{parent_sku[1]}';
114
break;
115
case '_sale_price_dates_from':
180
$templateOptions['is_visible'][] = "1";
181
$templateOptions['is_taxonomy'][] = "1";
182
$templateOptions['create_taxonomy_in_not_exists'][] = "1";
183
+
184
+ $templateOptions['is_advanced'][] = "1";
185
+ $templateOptions['advanced_is_create_terms'][] = "yes";
186
+ $templateOptions['advanced_in_variations'][] = "xpath";
187
+ $templateOptions['advanced_is_visible'][] = "xpath";
188
+ $templateOptions['advanced_is_taxonomy'][] = "xpath";
189
+ $templateOptions['advanced_in_variations_xpath'][] = '{AttributeInVariations' . $obj->name .'[1]}';
190
+ $templateOptions['advanced_is_visible_xpath'][] = '{AttributeIsVisible' . $obj->name .'[1]}';
191
+ $templateOptions['advanced_is_taxonomy_xpath'][] = '{AttributeIsTaxonomy' . $obj->name .'[1]}';
192
+
193
$attr_list[] = $obj->name;
194
}
195
}
196
197
+ global $wpdb;
198
+
199
+ $table_prefix = $wpdb->prefix;
200
+
201
+ $attributes = $wpdb->get_results($wpdb->prepare("SELECT DISTINCT meta_key FROM {$table_prefix}postmeta
202
+ WHERE {$table_prefix}postmeta.meta_key LIKE %s AND {$table_prefix}postmeta.meta_key NOT LIKE %s", 'attribute_%', 'attribute_pa_%'));
203
+
204
+ if ( ! empty($attributes))
205
+ {
206
+ foreach ($attributes as $attribute)
207
+ {
208
+ $attribute_name = ucfirst(str_replace('attribute_', '', $attribute->meta_key));
209
+ $templateOptions['attribute_name'][] = '{AttributeName' . $attribute_name .'[1]}';
210
+ $templateOptions['attribute_value'][] = '{AttributeValue' . $attribute_name .'[1]}';
211
+ $templateOptions['in_variations'][] = "1";
212
+ $templateOptions['is_visible'][] = "1";
213
+ $templateOptions['is_taxonomy'][] = "1";
214
+ $templateOptions['create_taxonomy_in_not_exists'][] = "1";
215
+
216
+ $templateOptions['is_advanced'][] = "1";
217
+ $templateOptions['advanced_is_create_terms'][] = "yes";
218
+ $templateOptions['advanced_in_variations'][] = "xpath";
219
+ $templateOptions['advanced_is_visible'][] = "xpath";
220
+ $templateOptions['advanced_is_taxonomy'][] = "xpath";
221
+ $templateOptions['advanced_in_variations_xpath'][] = '{AttributeInVariations' . $attribute_name .'[1]}';
222
+ $templateOptions['advanced_is_visible_xpath'][] = '{AttributeIsVisible' . $attribute_name .'[1]}';
223
+ $templateOptions['advanced_is_taxonomy_xpath'][] = '{AttributeIsTaxonomy' . $attribute_name .'[1]}';
224
+
225
+ $attr_list[] = str_replace('attribute_', '', $attribute->meta_key);
226
+ }
227
+ }
228
+
229
break;
230
default:
231
# code...
351
352
} else{
353
354
+ if ( ! empty($field['sub_fields']))
355
+ {
356
+ foreach ($field['sub_fields'] as $n => $sub_field){
357
358
+ $templateOptions['fields'][$field_options['key']]['rows']['1'][$sub_field['key']] = '{acf_' . $sub_field['name'] . '[1]}';
359
360
+ }
361
}
362
}
363
384
if ( ! empty($exportOptions['cc_value'][$ID]) and ! in_array($exportOptions['cc_value'][$ID], $attr_list) ) {
385
$templateOptions['attribute_name'][] = str_replace('pa_', '', $exportOptions['cc_value'][$ID]);
386
$templateOptions['attribute_value'][] = '{attribute_'. $element_name .'[1]}';
387
+ $templateOptions['in_variations'][] = "1";
388
+ $templateOptions['is_visible'][] = "1";
389
+ $templateOptions['is_taxonomy'][] = "1";
390
+ $templateOptions['create_taxonomy_in_not_exists'][] = "1";
391
$attr_list[] = $exportOptions['cc_value'][$ID];
392
}
393
i18n/languages/wp_all_export_plugin-ru_RU.mo ADDED
Binary file
i18n/languages/wp_all_export_plugin-ru_RU.po ADDED
@@ -0,0 +1,1003 @@
1
+ msgid ""
2
+ msgstr ""
3
+ "Project-Id-Version: WP All Export Pro v1.1.0 RC7\n"
4
+ "Report-Msgid-Bugs-To: \n"
5
+ "POT-Creation-Date: \n"
6
+ "PO-Revision-Date: 2015-08-31 14:11+0300\n"
7
+ "Last-Translator: \n"
8
+ "Language-Team: \n"
9
+ "MIME-Version: 1.0\n"
10
+ "Content-Type: text/plain; charset=UTF-8\n"
11
+ "Content-Transfer-Encoding: 8bit\n"
12
+ "Plural-Forms: nplurals=3; plural=(n%10==1 && n%100!=11 ? 0 : n%10>=2 && n"
13
+ "%10<=4 && (n%100<10 || n%100>=20) ? 1 : 2);\n"
14
+ "X-Generator: Poedit 1.7.5\n"
15
+ "X-Poedit-SourceCharset: UTF-8\n"
16
+ "X-Poedit-KeywordsList: __;_e;__ngettext:1,2;_n:1,2;__ngettext_noop:1,2;"
17
+ "_n_noop:1,2;_c,_nc:4c,1,2;_x:1,2c;_ex:1,2c;_nx:4c,1,2;_nx_noop:4c,1,2\n"
18
+ "X-Poedit-Basepath: .\n"
19
+ "X-Textdomain-Support: yes\n"
20
+ "Language: ru\n"
21
+ "X-Poedit-SearchPath-0: .\n"
22
+
23
+ msgid "#%s Cron job triggered."
24
+ msgstr "#%s Cron задача запущена."
25
+
26
+ msgid ""
27
+ "%%ID%% will be replaced with the ID of the post being exported, example: "
28
+ "SELECT meta_value FROM wp_postmeta WHERE post_id=%%ID%% AND "
29
+ "meta_key='your_meta_key';"
30
+ msgstr ""
31
+ "%%ID%% будет замещен экспортируемым постом, например: SELECT meta_value FROM "
32
+ "wp_postmeta WHERE post_id=%%ID%% AND meta_key='your_meta_key';"
33
+
34
+ msgid "%d %s deleted"
35
+ msgstr "%d %s удален"
36
+
37
+ msgid "%d Records Exported"
38
+ msgstr "%d записей экспортировано"
39
+
40
+ msgid "&laquo;"
41
+ msgstr "&laquo;"
42
+
43
+ msgid "&raquo;"
44
+ msgstr "&raquo;"
45
+
46
+ msgid "<strong>%s</strong> %s more"
47
+ msgstr "<strong>%s</strong> %s еще"
48
+
49
+ msgid "ACF"
50
+ msgstr "ACF"
51
+
52
+ msgid "Activation Key"
53
+ msgstr "Код активации"
54
+
55
+ msgid "Add Field To Export"
56
+ msgstr "Добавить поле к экспорту"
57
+
58
+ msgid "Add Filtering Options"
59
+ msgstr "Добавить параметры фильтрации"
60
+
61
+ msgid "Add Rule"
62
+ msgstr "Добавить правило"
63
+
64
+ msgid "Advanced"
65
+ msgstr "Дополнительно"
66
+
67
+ msgid "Advanced Custom Fields"
68
+ msgstr "Дополнительные пользовательские поля (ACF)"
69
+
70
+ msgid "Advanced Export"
71
+ msgstr "Расширенный экспорт"
72
+
73
+ msgid "All"
74
+ msgstr "Все"
75
+
76
+ msgid "All Export"
77
+ msgstr "All Export"
78
+
79
+ msgid "Amount (per tax)"
80
+ msgstr "Сумма (per tax)"
81
+
82
+ msgid "Apply"
83
+ msgstr "Приянть"
84
+
85
+ msgid "Apply Filters To Export Data"
86
+ msgstr "Применить фильтры к экспортируемым данным"
87
+
88
+ msgid "Are you sure you want to delete <strong>%s</strong> export?"
89
+ msgstr "Вы уверены, что хотите удалить <strong>%s</strong> экспорт?"
90
+
91
+ msgid "Are you sure you want to delete <strong>%s</strong> selected %s?"
92
+ msgstr "Вы уверены, что хотите удалить <strong>%s</strong> выбранные %s?"
93
+
94
+ msgid "Are you sure you want to re-run <strong>%s</strong> export?"
95
+ msgstr "Вы уверены, что хотите перезапустить <strong>%s</strong> экспорт?"
96
+
97
+ msgid "Attachment"
98
+ msgstr "Вложение"
99
+
100
+ msgid "Author"
101
+ msgstr "Автор"
102
+
103
+ msgid "Auto Generate"
104
+ msgstr "Авто создание"
105
+
106
+ msgid "Auto Generate Export Template"
107
+ msgstr "Автосоздание шаблона экспорта"
108
+
109
+ msgid "Available Data"
110
+ msgstr "Доступные данные"
111
+
112
+ msgid "Back to Manage Exports"
113
+ msgstr "Вернуться к управлению экспортами"
114
+
115
+ msgid "Back to Step 2"
116
+ msgstr "Вернуться к шагу 2"
117
+
118
+ msgid "Bulk Actions"
119
+ msgstr "Массовое действие"
120
+
121
+ msgid "Bundle"
122
+ msgstr "Связка"
123
+
124
+ msgid "CSV"
125
+ msgstr "CSV"
126
+
127
+ msgid "CSV delimiter must be specified"
128
+ msgstr "CSV разделитель должен быть указан"
129
+
130
+ msgid "Cancel"
131
+ msgstr "Отменить"
132
+
133
+ msgid "Cancel Cron"
134
+ msgstr "Отменить Cron"
135
+
136
+ msgid "Categories / Taxonomies"
137
+ msgstr "Категории / Таксономии"
138
+
139
+ msgid "Changing this will require you to re-create your existing cron jobs."
140
+ msgstr "Изменение этого потребует пересоздать существующие задания cron."
141
+
142
+ msgid "Choose a post type..."
143
+ msgstr "Выберите тип поста..."
144
+
145
+ msgid "Choose data to include in the export file."
146
+ msgstr "Выбрать данные для включения в файл экспорта."
147
+
148
+ msgid "Close"
149
+ msgstr "Закрыть"
150
+
151
+ msgid "Completed Date"
152
+ msgstr "Дата завершения"
153
+
154
+ msgid "Confirm & Run Export"
155
+ msgstr "Подтвердить и запустить экспорт"
156
+
157
+ msgid "Content"
158
+ msgstr "Содержание"
159
+
160
+ msgid "Continue to Step 2"
161
+ msgstr "Перейти к шагу 2"
162
+
163
+ msgid "Continue to Step 2 to choose data to include in the export file."
164
+ msgstr "Перейти к шагу 2, чтобы выбрать данные для включения в файл экспорта."
165
+
166
+ msgid "Coupons Used"
167
+ msgstr "Используемые купоны"
168
+
169
+ msgid "Created by"
170
+ msgstr "Создано"
171
+
172
+ msgid "Cron Exports"
173
+ msgstr "Cron экспорт"
174
+
175
+ msgid "Cron Scheduling"
176
+ msgstr "Планирование Cron"
177
+
178
+ msgid "Custom Field / Post Meta"
179
+ msgstr "Пользовательские поля / Мета записи"
180
+
181
+ msgid "Custom Field / User Meta"
182
+ msgstr "Пользовательское поле / Пользовательские Meta"
183
+
184
+ msgid "Custom Fields"
185
+ msgstr "Пользовательские поля"
186
+
187
+ msgid "Custom Types: "
188
+ msgstr "Пользовательские типы: "
189
+
190
+ msgid "Customer"
191
+ msgstr "Покупатель"
192
+
193
+ msgid "Customer Note"
194
+ msgstr "Примечание к покупателю"
195
+
196
+ msgid "Customer User ID"
197
+ msgstr "ID покупателя"
198
+
199
+ msgid "Data"
200
+ msgstr "Данные"
201
+
202
+ msgid "Data not found."
203
+ msgstr "Данные не найдены."
204
+
205
+ msgid "Date"
206
+ msgstr "Дата"
207
+
208
+ msgid "Delete"
209
+ msgstr "Удалить"
210
+
211
+ msgid "Delete Export"
212
+ msgstr "Удалить экспорт"
213
+
214
+ msgid "Delete Permanently"
215
+ msgstr "Удалить навсегда"
216
+
217
+ msgid "Delete field"
218
+ msgstr "Удалить поле"
219
+
220
+ msgid "Delimiter:"
221
+ msgstr "Разделитель:"
222
+
223
+ msgid "Description"
224
+ msgstr "Описание"
225
+
226
+ msgid "Discount Amount (per coupon)"
227
+ msgstr "Сумма скидки (по купону)"
228
+
229
+ msgid "Display Name"
230
+ msgstr "Отображаемое имя"
231
+
232
+ msgid "Display each product in its own row"
233
+ msgstr "Отображать каждый товар на отдельной строке"
234
+
235
+ msgid "Displaying %s&#8211;%s of %s"
236
+ msgstr "Отображение %s&#8211;%s из %s"
237
+
238
+ msgid "Documentation"
239
+ msgstr "Документация"
240
+
241
+ msgid "Done"
242
+ msgstr "Готово"
243
+
244
+ msgid "Download Data"
245
+ msgstr "Загрузить данные"
246
+
247
+ msgid "Download Import Templates"
248
+ msgstr "Загрузить шаблоны импорта"
249
+
250
+ msgid ""
251
+ "Download your import templates and use them to import your exported file to "
252
+ "a separate WordPress/WP All Import installation."
253
+ msgstr ""
254
+ "Загрузите свои шаблоны импорта и используйте их, чтобы импортировать Ваш "
255
+ "экспортируемый файл на другой сайт WordPress."
256
+
257
+ msgid ""
258
+ "Drop & drop data from \"Available Data\" on the right to include it in the "
259
+ "export or click \"Add Field To Export\" below."
260
+ msgstr ""
261
+ "Перетащите данные из \"Доступные данные\" справа для включения в экспорт или "
262
+ "нажмите \"Добавить поле к экспорту\" ниже."
263
+
264
+ msgid "Edit"
265
+ msgstr "Редактировать"
266
+
267
+ msgid "Edit Export Field"
268
+ msgstr "Правка поля экспорта"
269
+
270
+ msgid "Edit Options"
271
+ msgstr "Редактировать опции"
272
+
273
+ msgid "Edit Template"
274
+ msgstr "Редактировать шаблон"
275
+
276
+ msgid "Element"
277
+ msgstr "Элемент"
278
+
279
+ msgid "Email"
280
+ msgstr "Email"
281
+
282
+ msgid "Error"
283
+ msgstr "Ошибка"
284
+
285
+ msgid "Every time you want to schedule the import, run the trigger script."
286
+ msgstr ""
287
+ "Каждый раз, когда Вы хотите запланировать импорт - запускайте скрипт "
288
+ "триггера."
289
+
290
+ msgid "Example:"
291
+ msgstr "Пример:"
292
+
293
+ msgid "Excerpt"
294
+ msgstr "Отрывок"
295
+
296
+ msgid "Execution Script"
297
+ msgstr "Скрипт исполнения"
298
+
299
+ msgid "Export #%s already processing. Request skipped."
300
+ msgstr "Экспорт #%s уже в процесее. Запрос пропущен."
301
+
302
+ msgid "Export #%s already triggered. Request skipped."
303
+ msgstr "Экспорт #%s уже вызван. Запрос пропущен."
304
+
305
+ msgid "Export #%s complete"
306
+ msgstr "Экспорт #%s завершен"
307
+
308
+ msgid "Export #%s currently in process. Request skipped."
309
+ msgstr "Экспорт #%s в настоящее время запущен. Запрос пропущен."
310
+
311
+ msgid "Export #%s is currently in manually process. Request skipped."
312
+ msgstr "Экспорт #%s в настоящее время в ручном режиме. Запрос пропущен."
313
+
314
+ msgid "Export #%s is not triggered. Request skipped."
315
+ msgstr "Экспорт #%s не вызван. Запрос пропущен."
316
+
317
+ msgid "Export <span id=\"status\">in Progress...</span>"
318
+ msgstr "Экспорт <span id=\"status\">в процессе...</span>"
319
+
320
+ msgid "Export Attempt at %s"
321
+ msgstr "Попытка экспорта в %s"
322
+
323
+ msgid "Export Complete!"
324
+ msgstr "Экспорт завершен!"
325
+
326
+ msgid "Export File Format:"
327
+ msgstr "Формат файла экспорта:"
328
+
329
+ msgid "Export File URL"
330
+ msgstr "Экспортировать URL файла"
331
+
332
+ msgid "Export Image File Paths"
333
+ msgstr "Экспортировать пути файлов изображений"
334
+
335
+ msgid "Export Image Filenames"
336
+ msgstr "Экспортировать названия файлов изображений"
337
+
338
+ msgid "Export Image URLs"
339
+ msgstr "Экспортировать URL изображений"
340
+
341
+ msgid "Export canceled"
342
+ msgstr "Экспорт отменен"
343
+
344
+ msgid "Export currently in progress"
345
+ msgstr "Экспорт в процессе в настоящее время"
346
+
347
+ msgid "Export deleted"
348
+ msgstr "Экспорт удален"
349
+
350
+ msgid "Export the value returned by a PHP function"
351
+ msgstr "Экспорт значения, возвращаемого PHP функцией"
352
+
353
+ msgid "Export to XML"
354
+ msgstr "Экспорт в XML"
355
+
356
+ msgid "Export to XML / CSV"
357
+ msgstr "Экспорт в XML / CSV"
358
+
359
+ msgid "Exported"
360
+ msgstr "Экспортируемый"
361
+
362
+ msgid ""
363
+ "Exported files and temporary files will be placed in a folder with a "
364
+ "randomized name inside of %s."
365
+ msgstr ""
366
+ "Экспортированные файлы и временные файлы будут помещены в папку со случайным "
367
+ "именем внутри %s."
368
+
369
+ msgid ""
370
+ "Exporting may take some time. Please do not close your browser or refresh "
371
+ "the page until the process is complete."
372
+ msgstr ""
373
+ "Экспорт может занять некоторое время. Пожалуйста, не закрывайте браузер и не "
374
+ "обновляйте страницу пока процесс не завершится."
375
+
376
+ msgid "Fee Amount (per surcharge)"
377
+ msgstr "Сумма сбора (дополнительный сбор)"
378
+
379
+ msgid "Feedback"
380
+ msgstr "Обратная связь"
381
+
382
+ msgid "Fees & Discounts"
383
+ msgstr "Тарифы и скидки"
384
+
385
+ msgid "Field Name"
386
+ msgstr "Имя поля"
387
+
388
+ msgid "File format not supported"
389
+ msgstr "Формат файла не поддерживается"
390
+
391
+ msgid "Files"
392
+ msgstr "Файлы"
393
+
394
+ msgid "Filters"
395
+ msgstr "Фильтры"
396
+
397
+ msgid "First Name"
398
+ msgstr "Имя"
399
+
400
+ msgid "First, choose what to export."
401
+ msgstr "Во-первых, выберите, что экспортировать."
402
+
403
+ msgid "For WP All Import"
404
+ msgstr "для WP All Import"
405
+
406
+ msgid "Format: %s"
407
+ msgstr "Формат: %s"
408
+
409
+ msgid "Friendly Name:"
410
+ msgstr "Понятное имя:"
411
+
412
+ msgid "General"
413
+ msgstr "Общее"
414
+
415
+ msgid "ID"
416
+ msgstr "ID"
417
+
418
+ msgid "If an order contains multiple products, each product have its own row."
419
+ msgstr ""
420
+ "Если заказ содержит несколько товаров, каждый товар расположен на отдельной "
421
+ "строке."
422
+
423
+ msgid "Images / Media"
424
+ msgstr "Картинки / Медиа"
425
+
426
+ msgid "Import with WP All Import"
427
+ msgstr "Импорт с WP All Import"
428
+
429
+ msgid "In each iteration, process"
430
+ msgstr "В каждом повторении обрабатывать"
431
+
432
+ msgid "Info & Options"
433
+ msgstr "Инфо и Опции"
434
+
435
+ msgid ""
436
+ "Install these import templates in your separate WP All Import installation "
437
+ "from the All Import -> Settings page by clicking the \"Import Templates\" "
438
+ "button."
439
+ msgstr ""
440
+ "Установите эти шаблоны импорта на отдельном сайте с помощью WP All Import из "
441
+ "All Import -> Страница настроек, нажав на \"Импорт шаблонов\"."
442
+
443
+ msgid "Invalid query"
444
+ msgstr "Недопустимый запрос"
445
+
446
+ msgid ""
447
+ "It also operates this way in case of unexpected crashes by your web host. If "
448
+ "it crashes before the import is finished, the next run of the cron job two "
449
+ "minutes later will continue it where it left off, ensuring reliability."
450
+ msgstr ""
451
+ "Это также помогает в случае непредвиденных сбоев на Вашем хостинге. Если "
452
+ "выдается ошибку раньше окончания импорта, то при следующем запуске через "
453
+ "cron (через две минуты) операция продолжается там, где была завершена."
454
+
455
+ msgid ""
456
+ "It processes in iteration (only importing a few records each time it runs) "
457
+ "to optimize server load. It is recommended you run the execution script "
458
+ "every 2 minutes."
459
+ msgstr ""
460
+ "Это осуществляется итерациями (импорт только нескольких записей при каждом "
461
+ "запуске), чтобы оптимизировать нагрузку на сервер. Рекомендуется запускать "
462
+ "выполнение скрипта каждые 2 минуты."
463
+
464
+ msgid "Item Cost"
465
+ msgstr "Стоимость за единицу"
466
+
467
+ msgid "Item Total"
468
+ msgstr "Штук всего"
469
+
470
+ msgid "Items"
471
+ msgstr "Штуки"
472
+
473
+ msgid "Last Name"
474
+ msgstr "Фамилия"
475
+
476
+ msgid "Last run: %s"
477
+ msgstr "Последний запуск: %s"
478
+
479
+ msgid "Login"
480
+ msgstr "Логин"
481
+
482
+ msgid "Manage Exports"
483
+ msgstr "Управление экспортами"
484
+
485
+ msgid "Menu Order"
486
+ msgstr "Порядок меню"
487
+
488
+ msgid "Name"
489
+ msgstr "Название"
490
+
491
+ msgid "Natural Language PHP date()"
492
+ msgstr "Естесственный язык PHP date()"
493
+
494
+ msgid "Network"
495
+ msgstr "Сеть"
496
+
497
+ msgid "New Export"
498
+ msgstr "Новый экспорт"
499
+
500
+ msgid "Nicename"
501
+ msgstr "Ник"
502
+
503
+ msgid "Nickname"
504
+ msgstr "Ник"
505
+
506
+ msgid ""
507
+ "No filtering options. Add filtering options to only export records matching "
508
+ "some specified criteria."
509
+ msgstr ""
510
+ "Нет параметров фильтрации. Добавить параметры фильтрации, чтобы "
511
+ "экспортировать только записи, удовлетворяющие заданным условиям."
512
+
513
+ msgid "No matching %s found for selected filter rules"
514
+ msgstr "Не найдено подходящих %s для выбранных правил фильтрации"
515
+
516
+ msgid "No matching posts found for WP_Query expression specified"
517
+ msgstr "Не найдены подходящие записи для указанного выражения WP_Query"
518
+
519
+ msgid "No matching posts found for selected post types"
520
+ msgstr "Не найдены подходящие записи для выбранных типов записей"
521
+
522
+ msgid "No matching users found"
523
+ msgstr "Подходящие пользователи не найдены"
524
+
525
+ msgid "No previous exports found."
526
+ msgstr "Предыдущие экспорты не найдены."
527
+
528
+ msgid "Notes"
529
+ msgstr "Примечания"
530
+
531
+ msgid "Options updated"
532
+ msgstr "Параметры обновлены"
533
+
534
+ msgid "Order"
535
+ msgstr "Заказ"
536
+
537
+ msgid "Order Currency"
538
+ msgstr "Валюта заказа"
539
+
540
+ msgid "Order Date"
541
+ msgstr "Дата заказа"
542
+
543
+ msgid "Order ID"
544
+ msgstr "ID заказа"
545
+
546
+ msgid "Order Key"
547
+ msgstr "Ключ заказа"
548
+
549
+ msgid "Order Status"
550
+ msgstr "Статус заказа"
551
+
552
+ msgid "Order Total"
553
+ msgstr "Сумма заказа"
554
+
555
+ msgid "Other"
556
+ msgstr "Другие"
557
+
558
+ msgid "Parent"
559
+ msgstr "Родитель"
560
+
561
+ msgid "Password"
562
+ msgstr "Пароль"
563
+
564
+ msgid "Payment Method"
565
+ msgstr "Метод оплаты"
566
+
567
+ msgid "Permalink"
568
+ msgstr "Постоянная ссылка"
569
+
570
+ msgid "Permissive"
571
+ msgstr "Разрешающее"
572
+
573
+ msgid ""
574
+ "Please de-activate and remove the free version of the WP All Export before "
575
+ "activating the paid version."
576
+ msgstr ""
577
+ "Пожалуйста, деактивируйте и удалите бесплатную версию WP All Export перед "
578
+ "активацией платной версии."
579
+
580
+ msgid "Post Format"
581
+ msgstr "Формат поста"
582
+
583
+ msgid "Post Slug"
584
+ msgstr "Короткое имя поста (slug)"
585
+
586
+ msgid "Post Status"
587
+ msgstr "Статус записи"
588
+
589
+ msgid "Post Type"
590
+ msgstr "Тип записи"
591
+
592
+ msgid "Post Type Query"
593
+ msgstr "Запрос типа поста"
594
+
595
+ msgid "Preview A Row"
596
+ msgstr "Предпросмотр строки"
597
+
598
+ msgid "Product Data"
599
+ msgstr "Данные о продукте"
600
+
601
+ msgid "Product ID"
602
+ msgstr "ID товара"
603
+
604
+ msgid "Product Name"
605
+ msgstr "Наименование товара"
606
+
607
+ msgid "Product Variation Details"
608
+ msgstr "Вариационные детали товара"
609
+
610
+ msgid "Product Variations"
611
+ msgstr "Вариации товара"
612
+
613
+ msgid "Quantity"
614
+ msgstr "Количество"
615
+
616
+ msgid "Query"
617
+ msgstr "Запрос"
618
+
619
+ msgid "Randomize folder names"
620
+ msgstr "Случайные имена папок"
621
+
622
+ msgid "Rate Code (per tax)"
623
+ msgstr "Код тарифа (per tax)"
624
+
625
+ msgid "Rate Percentage (per tax)"
626
+ msgstr "Процентная ставка (per tax)"
627
+
628
+ msgid "Re-run Export"
629
+ msgstr "Перезапустить экспорт"
630
+
631
+ msgid "Record"
632
+ msgstr "Запись"
633
+
634
+ msgid "Records"
635
+ msgstr "Записи"
636
+
637
+ msgid "Records Processed %s"
638
+ msgstr "Записей обработано %s"
639
+
640
+ msgid "Registered Date"
641
+ msgstr "Дата регистрации"
642
+
643
+ msgid "Restore"
644
+ msgstr "Восстановить"
645
+
646
+ msgid "Roles"
647
+ msgstr "Роли"
648
+
649
+ msgid "Rule"
650
+ msgstr "Правило"
651
+
652
+ msgid "Run Export"
653
+ msgstr "Запустить экспорт"
654
+
655
+ msgid "SKU"
656
+ msgstr "SKU (артикул)"
657
+
658
+ msgid "SQL Query"
659
+ msgstr "SQL запрос"
660
+
661
+ msgid "Save Export Configuration"
662
+ msgstr "Сохранить конфигурацию экспорта"
663
+
664
+ msgid "Save friendly name..."
665
+ msgstr "Сохранить понятое имя..."
666
+
667
+ msgid "Search Exports"
668
+ msgstr "Поиск экспортов"
669
+
670
+ msgid "Secret Key"
671
+ msgstr "Секретный ключ"
672
+
673
+ msgid "Secure Mode"
674
+ msgstr "Безопасный режим"
675
+
676
+ msgid "Security check"
677
+ msgstr "Проверка безопасности"
678
+
679
+ msgid "Select Element"
680
+ msgstr "Выберите элемент"
681
+
682
+ msgid "Select Rule"
683
+ msgstr "Выберите правило"
684
+
685
+ msgid "Settings"
686
+ msgstr "Настройки"
687
+
688
+ msgid "Settings saved"
689
+ msgstr "Настройки сохранены"
690
+
691
+ msgid "Shipping Cost"
692
+ msgstr "Стоимость доставки"
693
+
694
+ msgid "Shipping Method"
695
+ msgstr "Способ доставки"
696
+
697
+ msgid "Skip to Step 3"
698
+ msgstr "Перейти к шагу 3"
699
+
700
+ msgid "Specific Post Type"
701
+ msgstr "Определить тип поста"
702
+
703
+ msgid "Standard"
704
+ msgstr "Стандартные"
705
+
706
+ msgid "Status"
707
+ msgstr "Статус"
708
+
709
+ msgid "Strict"
710
+ msgstr "Строгое"
711
+
712
+ msgid ""
713
+ "Strict matching requires all variations to pass in order for the product to "
714
+ "be exported. Permissive matching allows the product to be exported if any of "
715
+ "the variations pass."
716
+ msgstr ""
717
+ "Строгое соответствие требует, чтобы все условия соблюдались для "
718
+ "экспортируемого продукта. Разрешающее соответствие позволяет продукту "
719
+ "экспортироваться, если одно из условий соблюдается."
720
+
721
+ msgid "Summary"
722
+ msgstr "Итого"
723
+
724
+ msgid "Support"
725
+ msgstr "Поддержка"
726
+
727
+ msgid "Taxes & Shipping"
728
+ msgstr "Налоги и доставка"
729
+
730
+ msgid "Taxonomies"
731
+ msgstr "Таксономии"
732
+
733
+ msgid "Template"
734
+ msgstr "Шаблон"
735
+
736
+ msgid ""
737
+ "The Execution script actually executes the import, once it has been "
738
+ "triggered with the Trigger script."
739
+ msgstr ""
740
+ "Скрипт исполнения фактически выполняет импорт, после того, как он запущен "
741
+ "триггер-скриптом."
742
+
743
+ msgid ""
744
+ "The exported file is missing and can't be downloaded. Please re-run your "
745
+ "export to re-generate it."
746
+ msgstr ""
747
+ "Экспортируемый файл отсутствует и не может быть загружен. Пожалуйста, "
748
+ "перезапустите свой экспорт для его повторного создания."
749
+
750
+ msgid ""
751
+ "The other two files in this zip are the export file containing all of your "
752
+ "data and the import template for WP All Import. \n"
753
+ "\n"
754
+ "To import this data, create a new import with WP All Import and upload this "
755
+ "zip file."
756
+ msgstr ""
757
+ "Два других файла в этом архиве - это файлы экспорта, содержащие все Ваши "
758
+ "данные и шаблон импорта для WP All Import. \n"
759
+ "\n"
760
+ "Чтобы импортировать эти данные, создайте новый импорт с WP All Import и "
761
+ "загрузить этот архив."
762
+
763
+ msgid ""
764
+ "The value of the field chosen for export will be passed to the PHP function."
765
+ msgstr "Значение поля, выбранного для экспорта, будет передано в PHP функцию."
766
+
767
+ msgid ""
768
+ "There is a new version of %1$s available. <a target=\"_blank\" class="
769
+ "\"thickbox\" href=\"%2$s\">View version %3$s details</a> or <a href=\"%4$s"
770
+ "\">update now</a>."
771
+ msgstr ""
772
+ "Новая версия %1$s доступна. <a target=\"_blank\" class=\"thickbox\" href="
773
+ "\"%2$s\">Посмотреть детали версии %3$s </a> или <a href=\"%4$s\">обновить "
774
+ "сейчас</a>."
775
+
776
+ msgid ""
777
+ "There is a new version of %1$s available. <a target=\"_blank\" class="
778
+ "\"thickbox\" href=\"%2$s\">View version %3$s details</a>."
779
+ msgstr ""
780
+ "Новая версия %1$s доступна. <a target=\"_blank\" class=\"thickbox\" href="
781
+ "\"%2$s\">Посмотреть детали версии %3$s </a>."
782
+
783
+ msgid "This format is not supported."
784
+ msgstr "Этот формат не поддерживается."
785
+
786
+ msgid "Time Elapsed"
787
+ msgstr "Времени прошло"
788
+
789
+ msgid "Title"
790
+ msgstr "Заголовок (Title)"
791
+
792
+ msgid ""
793
+ "To schedule an import, you must create two cron jobs in your web hosting "
794
+ "control panel. One cron job will be used to run the Trigger script, the "
795
+ "other to run the Execution script."
796
+ msgstr ""
797
+ "Чтобы запланировать импорт, необходимо создать два cron задания в панели "
798
+ "управления хостингом. Одно задание будет использоваться для запуска скрипта "
799
+ "триггера, другое для запуска скрипта исполнения."
800
+
801
+ msgid ""
802
+ "To schedule the import to run once every 24 hours, run the trigger script "
803
+ "every 24 hours. Most hosts require you to use “wget” to access a URL. Ask "
804
+ "your host for details."
805
+ msgstr ""
806
+ "Чтобы запланировать импорт для запуска каждые 24 часа, запускайте скрипт "
807
+ "триггера каждые 24 часа. Большинство хостов требуют использовать “wget” для "
808
+ "доступа к URL. Узнайте подробности у Вашего провайдера."
809
+
810
+ msgid "Total Discount Amount"
811
+ msgstr "Общая сумма скидки"
812
+
813
+ msgid "Total Fee Amount"
814
+ msgstr "Общая сумма платежей"
815
+
816
+ msgid "Total Tax Amount"
817
+ msgstr "Общая сумма налогов"
818
+
819
+ msgid "Trigger Script"
820
+ msgstr "Скрипт триггера"
821
+
822
+ msgid "UNIX timestamp - PHP time()"
823
+ msgstr "UNIX timestamp - PHP time()"
824
+
825
+ msgid "URL"
826
+ msgstr "URL"
827
+
828
+ msgid "Uploads folder %s must be writable"
829
+ msgstr "Папка загрузки %s должна быть доступна для записи"
830
+
831
+ msgid "User"
832
+ msgstr "Пользователь"
833
+
834
+ msgid "User Query"
835
+ msgstr "Пользовательский запрос"
836
+
837
+ msgid "Users"
838
+ msgstr "Пользователи"
839
+
840
+ msgid "Value"
841
+ msgstr "Значение"
842
+
843
+ msgid "Variable product matching rules: "
844
+ msgstr "Вариативный продукт, соответствующий правилам: "
845
+
846
+ msgid "WP All Export"
847
+ msgstr "WP All Export"
848
+
849
+ msgid "WP All Export Settings"
850
+ msgstr "WP All Export настройки"
851
+
852
+ msgid "WP All Export Support"
853
+ msgstr "WP All Export поддержка"
854
+
855
+ msgid ""
856
+ "WP All Export must be able to process this many records in less than your "
857
+ "server's timeout settings. If your export fails before completion, to "
858
+ "troubleshoot you should lower this number."
859
+ msgstr ""
860
+ "WP All Export должен быть в состоянии обработать это количество записей "
861
+ "быстрее, чем установленный тайм-аут Вашего сервера. Если экспорт не "
862
+ "выполняется до завершения, для устранения ошибки следует уменьшить это число."
863
+
864
+ msgid "WP All Export successfully exported your data!"
865
+ msgstr "WP All Export успешно экспортировал Ваши данные!"
866
+
867
+ msgid "WP All Export will export %d %s."
868
+ msgstr "WP All Export будет экспортировать %d %s."
869
+
870
+ msgid "WP Query field is required"
871
+ msgstr "WP поле запроса требуется"
872
+
873
+ msgid "WP_Query Results"
874
+ msgstr "Результаты WP_Query"
875
+
876
+ msgid ""
877
+ "Warning: without _sku and product_type columns, you won't be able to re-"
878
+ "import this data using WP All Import."
879
+ msgstr ""
880
+ "Внимание: без столбцов _sku и product_type Вы не сможете повторно "
881
+ "импортировать эти данные через WP All Import."
882
+
883
+ msgid ""
884
+ "Warning: without an ID column, you won't be able to re-import this data "
885
+ "using WP All Import."
886
+ msgstr ""
887
+ "Внимание: без ID столбца Вы не сможете повторно импортировать эти данные "
888
+ "через WP All Import."
889
+
890
+ msgid ""
891
+ "Warning: without post_type column, you won't be able to re-import this data "
892
+ "using WP All Import."
893
+ msgstr ""
894
+ "Внимание: без столбца post_type Вы не сможете повторно экспортировать эти "
895
+ "данные через WP All Import."
896
+
897
+ msgid "What field would you like to export?"
898
+ msgstr "Какие поля Вы хотите экспортировать?"
899
+
900
+ msgid "What would you like to name the column/element in your exported file?"
901
+ msgstr "Как бы Вы хотели назвать столбец/элемент в файле эспорта?"
902
+
903
+ msgid "WooCommerce Data"
904
+ msgstr "WooCommerce данные"
905
+
906
+ msgid "WooCommerce Order"
907
+ msgstr "WooCommerce заказ"
908
+
909
+ msgid "WooCommerce Products"
910
+ msgstr "WooCommerce товары"
911
+
912
+ msgid "WooCommerce Taxonomies"
913
+ msgstr "WooCommerce таксономии"
914
+
915
+ msgid "XML"
916
+ msgstr "XML"
917
+
918
+ msgid "Y/m/d g:i a"
919
+ msgstr "Г/м/д g:i a"
920
+
921
+ msgid "You do not have permission to install plugin updates"
922
+ msgstr "У вас нет разрешения для установки обновлений плагина"
923
+
924
+ msgid "You haven't selected any columns for export."
925
+ msgstr "Вы не отметили никакие столбцы для экспорта."
926
+
927
+ msgid "Your export is ready to run."
928
+ msgstr "Ваш экспорт готов к запуску"
929
+
930
+ msgid ""
931
+ "Your web host may require you to use a command other than wget, although "
932
+ "wget is most common. In this case, you must asking your web hosting provider "
933
+ "for help."
934
+ msgstr ""
935
+ "Ваш провайдер может требовать использования команды, отличной от wget, хотя "
936
+ "wget является наиболее распространенной. В этом случае, Вы должны обратиться "
937
+ "за помощью к Вашему провайдеру."
938
+
939
+ msgid "contains"
940
+ msgstr "содержат"
941
+
942
+ msgid "currently processing with cron"
943
+ msgstr "в настоящее время обработка с помощью cron"
944
+
945
+ msgid "date() Format"
946
+ msgstr "date() формат"
947
+
948
+ msgid "element"
949
+ msgid_plural "elements"
950
+ msgstr[0] "элемент"
951
+ msgstr[1] "элемента"
952
+ msgstr[2] "элементов"
953
+
954
+ msgid "equals"
955
+ msgstr "равны"
956
+
957
+ msgid "equals or greater than"
958
+ msgstr "равны или больше, чем"
959
+
960
+ msgid "equals or less than"
961
+ msgstr "равны или меньше, чем"
962
+
963
+ msgid "export"
964
+ msgid_plural "exports"
965
+ msgstr[0] "экспорт"
966
+ msgstr[1] "экспорта"
967
+ msgstr[2] "экспортов"
968
+
969
+ msgid "greater than"
970
+ msgstr "больше, чем"
971
+
972
+ msgid "is empty"
973
+ msgstr "пустые"
974
+
975
+ msgid "is not empty"
976
+ msgstr "не пустые"
977
+
978
+ msgid "last activity %s ago"
979
+ msgstr "последняя активность %s назад"
980
+
981
+ msgid "less than"
982
+ msgstr "меньше, чем"
983
+
984
+ msgid "more"
985
+ msgstr "еще"
986
+
987
+ msgid "never"
988
+ msgstr "никогда"
989
+
990
+ msgid "not contains"
991
+ msgstr "не содержат"
992
+
993
+ msgid "not equals"
994
+ msgstr "не равны"
995
+
996
+ msgid "records"
997
+ msgstr "записей"
998
+
999
+ msgid "settings edited since last run"
1000
+ msgstr "параметры изменены с момента последнего запуска"
1001
+
1002
+ msgid "triggered with cron"
1003
+ msgstr "запускается с помощью cron"
libraries/XmlExportACF.php CHANGED
@@ -242,5 +242,20 @@ if ( ! class_exists('XmlExportACF') ){
242
public function get( $key, $default = null ) {
243
return isset( $this->{$key} ) ? $this->{$key} : $default;
244
}
245
}
246
}
242
public function get( $key, $default = null ) {
243
return isset( $this->{$key} ) ? $this->{$key} : $default;
244
}
245
+
246
+ public static function acf_get_row() {
247
+
248
+ // check and return row
249
+ if( !empty($GLOBALS['acf_field']) ) {
250
+
251
+ return end( $GLOBALS['acf_field'] );
252
+
253
+ }
254
+
255
+
256
+ // return
257
+ return false;
258
+
259
+ }
260
}
261
}
libraries/XmlExportWooCommerce.php CHANGED
@@ -360,6 +360,8 @@ if ( ! class_exists('XmlExportWooCommerce') ){
360
{
361
case 'attributes':
362
363
if ( empty(self::$_existing_attributes) )
364
{
365
global $wp_taxonomies;
@@ -380,6 +382,10 @@ if ( ! class_exists('XmlExportWooCommerce') ){
380
381
$data['Attribute Name (' . $taxonomy_slug . ')'] = $taxonomy->labels->name;
382
383
$element_name = 'Attribute Value (' . $taxonomy_slug . ')';
384
385
if ($record->post_parent == 0)
@@ -411,10 +417,15 @@ if ( ! class_exists('XmlExportWooCommerce') ){
411
{
412
foreach (self::$products_data['attributes'] as $attribute)
413
{
414
- $attribute_name = ucfirst(str_replace('attribute_', '', $attribute->meta_key));
415
416
$data['Attribute Name (' . $attribute_name . ')'] = $attribute_name;
417
$data['Attribute Value (' . $attribute_name . ')'] = get_post_meta($record->ID, $attribute->meta_key, true);
418
}
419
}
420
@@ -443,9 +454,9 @@ if ( ! class_exists('XmlExportWooCommerce') ){
443
$file_names[] = $file['name'];
444
}
445
446
- $data[$element_name . '_paths'] = implode($implode_delimiter, $file_paths);
447
448
- $data[$element_name . '_names'] = implode($implode_delimiter, $file_names);
449
450
}
451
@@ -517,6 +528,9 @@ if ( ! class_exists('XmlExportWooCommerce') ){
517
518
$headers[] = 'Attribute Name (' . $taxonomy_slug . ')';
519
$headers[] = 'Attribute Value (' . $taxonomy_slug . ')';
520
}
521
}
522
@@ -529,11 +543,21 @@ if ( ! class_exists('XmlExportWooCommerce') ){
529
530
$headers[] = 'Attribute Name (' . $attribute_name . ')';
531
$headers[] = 'Attribute Value (' . $attribute_name . ')';
532
}
533
}
534
535
break;
536
537
default:
538
539
if ( ! in_array($options['cc_name'][$element_key], $headers)) $headers[] = $options['cc_name'][$element_key];
360
{
361
case 'attributes':
362
363
+ $_product_attributes = (empty($record->post_parent)) ? get_post_meta($record->ID, '_product_attributes', true) : get_post_meta($record->post_parent, '_product_attributes', true);
364
+
365
if ( empty(self::$_existing_attributes) )
366
{
367
global $wp_taxonomies;
382
383
$data['Attribute Name (' . $taxonomy_slug . ')'] = $taxonomy->labels->name;
384
385
+ $data['Attribute In Variations (' . $taxonomy_slug . ')'] = (!empty($_product_attributes[$taxonomy_slug]['is_variation'])) ? "yes" : "no";
386
+ $data['Attribute Is Visible (' . $taxonomy_slug . ')'] = (!empty($_product_attributes[$taxonomy_slug]['is_visible'])) ? "yes" : "no";
387
+ $data['Attribute Is Taxonomy (' . $taxonomy_slug . ')'] = (!empty($_product_attributes[$taxonomy_slug]['is_taxonomy'])) ? "yes" : "no";
388
+
389
$element_name = 'Attribute Value (' . $taxonomy_slug . ')';
390
391
if ($record->post_parent == 0)
417
{
418
foreach (self::$products_data['attributes'] as $attribute)
419
{
420
+ $attribute_standart_name = str_replace('attribute_', '', $attribute->meta_key);
421
+ $attribute_name = ucfirst($attribute_standart_name);
422
423
$data['Attribute Name (' . $attribute_name . ')'] = $attribute_name;
424
$data['Attribute Value (' . $attribute_name . ')'] = get_post_meta($record->ID, $attribute->meta_key, true);
425
+
426
+ $data['Attribute In Variations (' . $attribute_name . ')'] = (!empty($_product_attributes[$attribute_standart_name]['is_variation'])) ? "yes" : "no";
427
+ $data['Attribute Is Visible (' . $attribute_name . ')'] = (!empty($_product_attributes[$attribute_standart_name]['is_visible'])) ? "yes" : "no";
428
+ $data['Attribute Is Taxonomy (' . $attribute_name . ')'] = (!empty($_product_attributes[$attribute_standart_name]['is_taxonomy'])) ? "yes" : "no";
429
}
430
}
431
454
$file_names[] = $file['name'];
455
}
456
457
+ $data[$element_name . ' Paths'] = implode($implode_delimiter, $file_paths);
458
459
+ $data[$element_name . ' Names'] = implode($implode_delimiter, $file_names);
460
461
}
462
528
529
$headers[] = 'Attribute Name (' . $taxonomy_slug . ')';
530
$headers[] = 'Attribute Value (' . $taxonomy_slug . ')';
531
+ $headers[] = 'Attribute In Variations (' . $taxonomy_slug . ')';
532
+ $headers[] = 'Attribute Is Visible (' . $taxonomy_slug . ')';
533
+ $headers[] = 'Attribute Is Taxonomy (' . $taxonomy_slug . ')';
534
}
535
}
536
543
544
$headers[] = 'Attribute Name (' . $attribute_name . ')';
545
$headers[] = 'Attribute Value (' . $attribute_name . ')';
546
+ $headers[] = 'Attribute In Variations (' . $attribute_name . ')';
547
+ $headers[] = 'Attribute Is Visible (' . $attribute_name . ')';
548
+ $headers[] = 'Attribute Is Taxonomy (' . $attribute_name . ')';
549
}
550
}
551
552
break;
553
554
+ case '_downloadable_files':
555
+
556
+ $headers[] = $options['cc_name'][$element_key] . ' Paths';
557
+ $headers[] = $options['cc_name'][$element_key] . ' Names';
558
+
559
+ break;
560
+
561
default:
562
563
if ( ! in_array($options['cc_name'][$element_key], $headers)) $headers[] = $options['cc_name'][$element_key];
readme.txt CHANGED
@@ -2,7 +2,7 @@
2
Contributors: soflyy, wpallimport
3
Requires at least: 4.1
4
Tested up to: 4.3
5
- Stable tag: 1.0.1
6
Tags: wordpress csv export, wordpress xml export, xml, csv, datafeed, export, migrate, export csv from wordpress, export xml from wordpress, advanced xml export, advanced csv export, export data, bulk csv export, export custom post type, export woocommerce products, export woocommerce orders, migrate woocommerce, csv export, export csv, xml export, export xml, csv exporter, datafeed
7
8
WP All Export is an extremely powerful exporter that makes it easy to export any XML or CSV file from WordPress.
@@ -72,6 +72,14 @@ Either: -
72
73
== Changelog ==
74
75
= 1.0.1 =
76
* fixed export taxonomy: name instead of slug
77
* fixed pass data through php function
2
Contributors: soflyy, wpallimport
3
Requires at least: 4.1
4
Tested up to: 4.3
5
+ Stable tag: 1.0.2
6
Tags: wordpress csv export, wordpress xml export, xml, csv, datafeed, export, migrate, export csv from wordpress, export xml from wordpress, advanced xml export, advanced csv export, export data, bulk csv export, export custom post type, export woocommerce products, export woocommerce orders, migrate woocommerce, csv export, export csv, xml export, export xml, csv exporter, datafeed
7
8
WP All Export is an extremely powerful exporter that makes it easy to export any XML or CSV file from WordPress.
72
73
== Changelog ==
74
75
+ = 1.0.2 =
76
+ * fixed download bundle
77
+ * fixed export repeater fields for ACF 4.x
78
+ * fixed import template for custom product attributes
79
+ * added new option 'include BOM to export file
80
+ * added RU translation
81
+ * removed hidden post types from dropdown in step 1
82
+
83
= 1.0.1 =
84
* fixed export taxonomy: name instead of slug
85
* fixed pass data through php function
static/codemirror/clike.js ADDED
@@ -0,0 +1,647 @@