Version Description
- Mar 11, 2019 =
- Improvement for the sharing buttons on the product pages. "Share to Facebook", "Tweet" and other share buttons now uses the actual product page URLs instead of a "proxy" Ecwid URL. This should make shared links look more appealing in social networks and improve the SEO of your ecommerce store.
- Fixed an issue in the "Import products from WooCommerce" tool. In some cases, import failed and stopped importing products we fixed that, now it should work fine and you can import your products from WooCommerce to Ecwid when you need it.
- Fixed a Javascript warning message in the browser console when the Recently viewed products widget is used.
- Minor fixes and improvements for SEO, stability and performance.
- Besides the changes in the plugin, Ecwid e-commerce functionality is constantly updated with new features and tools. One of the recent major updates is product filters you can now add product filtering panel to your store search page without dealing with custom code or an external plugin. Check it out in our blog.
Download this release
Release Info
Developer | Ecwid |
Plugin | Ecwid Ecommerce Shopping Cart |
Version | 6.4.12 |
Comparing to | |
See all releases |
Code changes from version 6.4.11 to 6.4.12
- ecwid-shopping-cart.php +55 -6
- images/gutenberg-icons/aspect-ratio-1-1.svg +10 -0
- images/gutenberg-icons/aspect-ratio-16-9.svg +10 -0
- images/gutenberg-icons/aspect-ratio-3-4.svg +10 -0
- images/gutenberg-icons/aspect-ratio-4-3.svg +10 -0
- images/gutenberg-icons/aspect-ratio-9-16.svg +10 -0
- images/gutenberg-icons/ecwid.svg +21 -0
- images/gutenberg-icons/product.svg +13 -0
- images/gutenberg-icons/text-align-center.svg +14 -0
- images/gutenberg-icons/text-align-justify.svg +14 -0
- images/gutenberg-icons/text-align-left.svg +14 -0
- images/gutenberg-icons/text-align-right.svg +14 -0
- includes/class-ecwid-admin.php +10 -0
- includes/class-ecwid-floating-minicart.php +1 -1
- includes/class-ecwid-html-meta.php +2 -2
- includes/class-ecwid-nav-menus.php +0 -2
- includes/class-ecwid-products.php +2 -2
- includes/class-ecwid-seo-links.php +4 -8
- includes/class-ecwid-store-page.php +42 -1
- includes/importer/class-ecwid-import-page.php +1 -1
- includes/importer/class-ecwid-importer-task.php +25 -527
- includes/importer/class-ecwid-importer.php +36 -4
- includes/importer/importer.php +2 -0
- includes/importer/task/class-ecwid-importer-task-create-category.php +56 -0
- includes/importer/task/class-ecwid-importer-task-create-product-variation.php +79 -0
- includes/importer/task/class-ecwid-importer-task-create-product.php +140 -0
- includes/importer/task/class-ecwid-importer-task-delete-products.php +23 -0
- includes/importer/task/class-ecwid-importer-task-import-woo-categories.php +11 -3
- includes/importer/task/class-ecwid-importer-task-import-woo-product.php +19 -12
- includes/importer/task/class-ecwid-importer-task-import-woo-products-batch.php +1 -1
- includes/importer/task/class-ecwid-importer-task-import-woo-products.php +3 -8
- includes/importer/task/class-ecwid-importer-task-main.php +3 -3
- includes/importer/task/class-ecwid-importer-task-upload-category-image.php +41 -0
- includes/importer/task/class-ecwid-importer-task-upload-product-gallery-image.php +47 -0
- includes/importer/task/class-ecwid-importer-task-upload-product-image.php +37 -0
- includes/importer/task/class-ecwid-importer-task-upload-product-variation-image.php +49 -0
- includes/integrations/class-ecwid-integration-aiosp.php +16 -0
- includes/integrations/class-ecwid-integration-gutenberg.php +4 -1
- includes/integrations/class-ecwid-integration-wpseo.php +42 -0
- includes/widgets/class-ecwid-widget-products-base.php +9 -9
- includes/widgets/class-ecwid-widget-recently-viewed.php +2 -5
- index.php +4 -0
- js/dynamic-title.js +22 -0
- js/importer.js +8 -5
- js/store-editor-common.js +25 -0
- js/store-editor-mce.js +19 -4
- js/store-editor-page.js +11 -31
- languages/ecwid-shopping-cart-de_DE.mo +0 -0
- languages/ecwid-shopping-cart-de_DE.po +1 -1
- languages/ecwid-shopping-cart-pt_BR.mo +0 -0
- languages/ecwid-shopping-cart-pt_BR.po +1 -1
- languages/ecwid-shopping-cart-ru_RU.mo +0 -0
- languages/ecwid-shopping-cart-ru_RU.po +193 -586
- languages/ecwid-shopping-cart-tr_TR.mo +0 -0
- languages/ecwid-shopping-cart-tr_TR.po +1 -1
- lib/ecwid_api_v3.php +5 -5
- lib/ecwid_catalog_entry.php +5 -4
- lib/ecwid_platform.php +40 -10
- lib/ecwid_product.php +18 -32
- readme.txt +9 -2
- templates/admin-params.php +5 -1
- templates/importer/woo-main.tpl.php +3 -0
ecwid-shopping-cart.php
CHANGED
@@ -1,11 +1,11 @@
|
|
1 |
<?php
|
2 |
/*
|
3 |
-
Plugin Name: Ecwid Shopping Cart
|
4 |
Plugin URI: http://www.ecwid.com?source=wporg
|
5 |
Description: Ecwid is a free full-featured shopping cart. It can be easily integrated with any Wordpress blog and takes less than 5 minutes to set up.
|
6 |
Text Domain: ecwid-shopping-cart
|
7 |
Author: Ecwid Ecommerce
|
8 |
-
Version: 6.4.
|
9 |
Author URI: https://ecwid.to/ecwid-site
|
10 |
*/
|
11 |
|
@@ -64,6 +64,7 @@ if ( is_admin() ){
|
|
64 |
add_action('wp_ajax_ecwid_sync_products', 'ecwid_sync_products');
|
65 |
add_action('admin_head', 'ecwid_ie8_fonts_inclusion');
|
66 |
add_action('init', 'ecwid_apply_theme', 0);
|
|
|
67 |
add_action('get_footer', 'ecwid_admin_get_footer');
|
68 |
add_action('admin_post_ec_connect', 'ecwid_admin_post_connect');
|
69 |
add_filter('tiny_mce_before_init', 'ecwid_tinymce_init');
|
@@ -130,7 +131,7 @@ require_once ECWID_PLUGIN_DIR . 'includes/class-ecwid-store-page.php';
|
|
130 |
require_once ECWID_PLUGIN_DIR . 'lib/ecwid_product.php';
|
131 |
require_once ECWID_PLUGIN_DIR . 'lib/ecwid_category.php';
|
132 |
|
133 |
-
|
134 |
require_once ECWID_PLUGIN_DIR . 'includes/class-ecwid-seo-links.php';
|
135 |
require_once ECWID_PLUGIN_DIR . 'includes/class-ecwid-html-meta.php';
|
136 |
require_once ECWID_PLUGIN_DIR . 'includes/class-ecwid-wp-dashboard-feed.php';
|
@@ -291,6 +292,13 @@ function ecwid_ie8_fonts_inclusion()
|
|
291 |
HTML;
|
292 |
|
293 |
}
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
294 |
|
295 |
add_action('wp_ajax_ecwid_get_product_info', 'ecwid_ajax_get_product_info' );
|
296 |
add_action('wp_ajax_nopriv_ecwid_get_product_info', 'ecwid_ajax_get_product_info' );
|
@@ -453,7 +461,6 @@ JS;
|
|
453 |
|
454 |
function ecwid_load_textdomain() {
|
455 |
load_plugin_textdomain( 'ecwid-shopping-cart', false, dirname( plugin_basename( __FILE__ ) ) . '/languages' );
|
456 |
-
// )
|
457 |
}
|
458 |
|
459 |
function ecwid_404_on_broken_escaped_fragment() {
|
@@ -688,8 +695,11 @@ function ecwid_check_version()
|
|
688 |
// Since 6.4.8
|
689 |
add_option( 'ecwid_hide_canonical', false );
|
690 |
|
691 |
-
// Since 6.4.9
|
692 |
add_option( Ecwid_Theme_Base::OPTION_LEGACY_CUSTOM_SCROLLER, false );
|
|
|
|
|
|
|
693 |
|
694 |
do_action( 'ecwid_on_plugin_update' );
|
695 |
|
@@ -1423,6 +1433,7 @@ function _ecwid_get_seo_title()
|
|
1423 |
return "";
|
1424 |
}
|
1425 |
|
|
|
1426 |
add_filter('oembed_endpoint_url', 'ecwid_oembed_url', 10, 3);
|
1427 |
|
1428 |
function ecwid_oembed_url( $url, $permalink, $format ) {
|
@@ -1853,6 +1864,16 @@ EOT;
|
|
1853 |
Ecwid_Config::load_from_ini();
|
1854 |
}
|
1855 |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
1856 |
add_action('in_admin_header', 'ecwid_disable_other_notices');
|
1857 |
function ecwid_disable_other_notices() {
|
1858 |
|
@@ -1880,6 +1901,17 @@ function ecwid_disable_other_notices() {
|
|
1880 |
|
1881 |
function ecwid_show_admin_messages() {
|
1882 |
if (is_admin()) {
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
1883 |
Ecwid_Message_Manager::show_messages();
|
1884 |
}
|
1885 |
}
|
@@ -2056,7 +2088,7 @@ function ecwid_update_plugin_params()
|
|
2056 |
die();
|
2057 |
}
|
2058 |
|
2059 |
-
if ( !wp_verify_nonce(@$_POST['nonce'],
|
2060 |
header('403 Access Denied');
|
2061 |
|
2062 |
die();
|
@@ -2077,6 +2109,23 @@ function ecwid_update_plugin_params()
|
|
2077 |
wp_redirect('admin.php?page=ec-params');
|
2078 |
}
|
2079 |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
2080 |
function ecwid_sync_do_page() {
|
2081 |
|
2082 |
require_once ECWID_PLUGIN_DIR . 'includes/class-ecwid-products.php';
|
1 |
<?php
|
2 |
/*
|
3 |
+
Plugin Name: Ecwid Ecommerce Shopping Cart
|
4 |
Plugin URI: http://www.ecwid.com?source=wporg
|
5 |
Description: Ecwid is a free full-featured shopping cart. It can be easily integrated with any Wordpress blog and takes less than 5 minutes to set up.
|
6 |
Text Domain: ecwid-shopping-cart
|
7 |
Author: Ecwid Ecommerce
|
8 |
+
Version: 6.4.12
|
9 |
Author URI: https://ecwid.to/ecwid-site
|
10 |
*/
|
11 |
|
64 |
add_action('wp_ajax_ecwid_sync_products', 'ecwid_sync_products');
|
65 |
add_action('admin_head', 'ecwid_ie8_fonts_inclusion');
|
66 |
add_action('init', 'ecwid_apply_theme', 0);
|
67 |
+
add_action('init', 'ecwid_maybe_remove_emoji');
|
68 |
add_action('get_footer', 'ecwid_admin_get_footer');
|
69 |
add_action('admin_post_ec_connect', 'ecwid_admin_post_connect');
|
70 |
add_filter('tiny_mce_before_init', 'ecwid_tinymce_init');
|
131 |
require_once ECWID_PLUGIN_DIR . 'lib/ecwid_product.php';
|
132 |
require_once ECWID_PLUGIN_DIR . 'lib/ecwid_category.php';
|
133 |
|
134 |
+
|
135 |
require_once ECWID_PLUGIN_DIR . 'includes/class-ecwid-seo-links.php';
|
136 |
require_once ECWID_PLUGIN_DIR . 'includes/class-ecwid-html-meta.php';
|
137 |
require_once ECWID_PLUGIN_DIR . 'includes/class-ecwid-wp-dashboard-feed.php';
|
292 |
HTML;
|
293 |
|
294 |
}
|
295 |
+
add_action( 'wp_head', 'ecwid_maybe_remove_emoji', 0 );
|
296 |
+
function ecwid_maybe_remove_emoji() {
|
297 |
+
|
298 |
+
if ( Ecwid_Store_page::is_store_page() && get_option( 'ecwid_remove_emoji' ) == 'Y' && strpos($_SERVER['HTTP_USER_AGENT'], 'Trident/7.0; rv:11.0') !== false ) {
|
299 |
+
remove_action( 'wp_head', 'print_emoji_detection_script', 7 );
|
300 |
+
}
|
301 |
+
}
|
302 |
|
303 |
add_action('wp_ajax_ecwid_get_product_info', 'ecwid_ajax_get_product_info' );
|
304 |
add_action('wp_ajax_nopriv_ecwid_get_product_info', 'ecwid_ajax_get_product_info' );
|
461 |
|
462 |
function ecwid_load_textdomain() {
|
463 |
load_plugin_textdomain( 'ecwid-shopping-cart', false, dirname( plugin_basename( __FILE__ ) ) . '/languages' );
|
|
|
464 |
}
|
465 |
|
466 |
function ecwid_404_on_broken_escaped_fragment() {
|
695 |
// Since 6.4.8
|
696 |
add_option( 'ecwid_hide_canonical', false );
|
697 |
|
698 |
+
// Since 6.4.9
|
699 |
add_option( Ecwid_Theme_Base::OPTION_LEGACY_CUSTOM_SCROLLER, false );
|
700 |
+
|
701 |
+
// Since 6.4.9+
|
702 |
+
add_option( 'ecwid_remove_emoji', 'Y' );
|
703 |
|
704 |
do_action( 'ecwid_on_plugin_update' );
|
705 |
|
1433 |
return "";
|
1434 |
}
|
1435 |
|
1436 |
+
|
1437 |
add_filter('oembed_endpoint_url', 'ecwid_oembed_url', 10, 3);
|
1438 |
|
1439 |
function ecwid_oembed_url( $url, $permalink, $format ) {
|
1864 |
Ecwid_Config::load_from_ini();
|
1865 |
}
|
1866 |
|
1867 |
+
add_action( 'activated_plugin', 'ecwid_plugin_activation_redirect' );
|
1868 |
+
function ecwid_plugin_activation_redirect( $plugin ) {
|
1869 |
+
$is_newbie = ecwid_is_demo_store();
|
1870 |
+
|
1871 |
+
if( $is_newbie && $plugin == plugin_basename( __FILE__ ) ) {
|
1872 |
+
exit( wp_redirect( Ecwid_Admin::get_dashboard_url() ) );
|
1873 |
+
}
|
1874 |
+
}
|
1875 |
+
|
1876 |
+
|
1877 |
add_action('in_admin_header', 'ecwid_disable_other_notices');
|
1878 |
function ecwid_disable_other_notices() {
|
1879 |
|
1901 |
|
1902 |
function ecwid_show_admin_messages() {
|
1903 |
if (is_admin()) {
|
1904 |
+
global $wp_filter;
|
1905 |
+
if ( $wp_filter && isset($wp_filter['admin_notices']) && class_exists('WP_Hook') ){
|
1906 |
+
foreach ($wp_filter['admin_notices']->callbacks as $priority => $collection) {
|
1907 |
+
foreach ($collection as $name => $item) {
|
1908 |
+
if( is_object($item['function'][0]) && get_class($item['function'][0]) == 'Storefront_NUX_Admin' ){
|
1909 |
+
remove_action('admin_notices', $item['function'], $priority);
|
1910 |
+
}
|
1911 |
+
}
|
1912 |
+
}
|
1913 |
+
}
|
1914 |
+
|
1915 |
Ecwid_Message_Manager::show_messages();
|
1916 |
}
|
1917 |
}
|
2088 |
die();
|
2089 |
}
|
2090 |
|
2091 |
+
if ( !wp_verify_nonce(@$_POST['nonce'], ecwid_get_update_params_action() ) ) {
|
2092 |
header('403 Access Denied');
|
2093 |
|
2094 |
die();
|
2109 |
wp_redirect('admin.php?page=ec-params');
|
2110 |
}
|
2111 |
|
2112 |
+
function ecwid_get_clear_all_cache_action() {
|
2113 |
+
return 'ec-clear-all-cache';
|
2114 |
+
}
|
2115 |
+
|
2116 |
+
add_action('plugins_loaded', 'ecwid_clear_all_cache');
|
2117 |
+
|
2118 |
+
function ecwid_clear_all_cache()
|
2119 |
+
{
|
2120 |
+
if ( array_key_exists( ecwid_get_clear_all_cache_action(), $_GET ) ) {
|
2121 |
+
ecwid_full_cache_reset();
|
2122 |
+
|
2123 |
+
if ( array_key_exists( 'redirect_back', $_GET ) ) {
|
2124 |
+
wp_redirect ( 'admin.php?page=ec-params' );
|
2125 |
+
}
|
2126 |
+
}
|
2127 |
+
}
|
2128 |
+
|
2129 |
function ecwid_sync_do_page() {
|
2130 |
|
2131 |
require_once ECWID_PLUGIN_DIR . 'includes/class-ecwid-products.php';
|
images/gutenberg-icons/aspect-ratio-1-1.svg
ADDED
@@ -0,0 +1,10 @@
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
1 |
+
<?xml version="1.0" encoding="UTF-8"?>
|
2 |
+
<svg width="40px" height="40px" viewBox="0 0 40 40" version="1.1" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink">
|
3 |
+
<!-- Generator: Sketch 50.2 (55047) - http://www.bohemiancoding.com/sketch -->
|
4 |
+
<title>Aspect Ratio Thumbnail_1_1</title>
|
5 |
+
<desc>Created with Sketch.</desc>
|
6 |
+
<defs></defs>
|
7 |
+
<g id="Aspect-Ratio-Thumbnail_1_1" stroke="none" stroke-width="1" fill="none" fill-rule="evenodd">
|
8 |
+
<rect id="Rectangle-3" fill="#000000" x="12" y="12" width="16" height="16" rx="2"></rect>
|
9 |
+
</g>
|
10 |
+
</svg>
|
images/gutenberg-icons/aspect-ratio-16-9.svg
ADDED
@@ -0,0 +1,10 @@
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
1 |
+
<?xml version="1.0" encoding="UTF-8"?>
|
2 |
+
<svg width="40px" height="40px" viewBox="0 0 40 40" version="1.1" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink">
|
3 |
+
<!-- Generator: Sketch 50.2 (55047) - http://www.bohemiancoding.com/sketch -->
|
4 |
+
<title>Aspect Ratio Thumbnail_16_9</title>
|
5 |
+
<desc>Created with Sketch.</desc>
|
6 |
+
<defs></defs>
|
7 |
+
<g id="Aspect-Ratio-Thumbnail_16_9" stroke="none" stroke-width="1" fill="none" fill-rule="evenodd">
|
8 |
+
<rect id="Rectangle-33" fill="#000000" x="9" y="14" width="22" height="12" rx="2"></rect>
|
9 |
+
</g>
|
10 |
+
</svg>
|
images/gutenberg-icons/aspect-ratio-3-4.svg
ADDED
@@ -0,0 +1,10 @@
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
1 |
+
<?xml version="1.0" encoding="UTF-8"?>
|
2 |
+
<svg width="40px" height="40px" viewBox="0 0 40 40" version="1.1" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink">
|
3 |
+
<!-- Generator: Sketch 50.2 (55047) - http://www.bohemiancoding.com/sketch -->
|
4 |
+
<title>Aspect Ratio Thumbnail_3_4</title>
|
5 |
+
<desc>Created with Sketch.</desc>
|
6 |
+
<defs></defs>
|
7 |
+
<g id="Aspect-Ratio-Thumbnail_3_4" stroke="none" stroke-width="1" fill="none" fill-rule="evenodd">
|
8 |
+
<rect id="Rectangle-4" fill="#000000" x="12" y="10" width="16" height="20" rx="2"></rect>
|
9 |
+
</g>
|
10 |
+
</svg>
|
images/gutenberg-icons/aspect-ratio-4-3.svg
ADDED
@@ -0,0 +1,10 @@
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
1 |
+
<?xml version="1.0" encoding="UTF-8"?>
|
2 |
+
<svg width="40px" height="40px" viewBox="0 0 40 40" version="1.1" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink">
|
3 |
+
<!-- Generator: Sketch 50.2 (55047) - http://www.bohemiancoding.com/sketch -->
|
4 |
+
<title>Aspect Ratio Thumbnail_4_3</title>
|
5 |
+
<desc>Created with Sketch.</desc>
|
6 |
+
<defs></defs>
|
7 |
+
<g id="Aspect-Ratio-Thumbnail_4_3" stroke="none" stroke-width="1" fill="none" fill-rule="evenodd">
|
8 |
+
<rect id="Rectangle" fill="#000000" x="10" y="12" width="20" height="16" rx="2"></rect>
|
9 |
+
</g>
|
10 |
+
</svg>
|
images/gutenberg-icons/aspect-ratio-9-16.svg
ADDED
@@ -0,0 +1,10 @@
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
1 |
+
<?xml version="1.0" encoding="UTF-8"?>
|
2 |
+
<svg width="40px" height="40px" viewBox="0 0 40 40" version="1.1" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink">
|
3 |
+
<!-- Generator: Sketch 50.2 (55047) - http://www.bohemiancoding.com/sketch -->
|
4 |
+
<title>Aspect Ratio Thumbnail_9_16</title>
|
5 |
+
<desc>Created with Sketch.</desc>
|
6 |
+
<defs></defs>
|
7 |
+
<g id="Aspect-Ratio-Thumbnail_9_16" stroke="none" stroke-width="1" fill="none" fill-rule="evenodd">
|
8 |
+
<rect id="Rectangle-5" fill="#000000" x="14" y="9" width="12" height="22" rx="2"></rect>
|
9 |
+
</g>
|
10 |
+
</svg>
|
images/gutenberg-icons/ecwid.svg
ADDED
@@ -0,0 +1,21 @@
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
1 |
+
<?xml version="1.0" encoding="utf-8"?>
|
2 |
+
<!-- Generator: Adobe Illustrator 18.0.0, SVG Export Plug-In . SVG Version: 6.00 Build 0) -->
|
3 |
+
<!DOCTYPE svg PUBLIC "-//W3C//DTD SVG 1.1//EN" "http://www.w3.org/Graphics/SVG/1.1/DTD/svg11.dtd">
|
4 |
+
<svg version="1.1" id="Layer_1" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" x="0px" y="0px"
|
5 |
+
viewBox="0 0 20 20" enable-background="new 0 0 20 20" xml:space="preserve">
|
6 |
+
<path fill="#555d66" d="M15.32,15.58c-0.37,0-0.66,0.3-0.66,0.67c0,0.37,0.3,0.67,0.66,0.67c0.37,0,0.67-0.3,0.67-0.67
|
7 |
+
C15.98,15.88,15.69,15.58,15.32,15.58z M15.45,0H4.55C2.04,0,0,2.04,0,4.55v10.91C0,17.97,2.04,20,4.55,20h10.91c2.51,0,4.55-2.04,4.55-4.55V4.55
|
8 |
+
C20,2.04,17.96,0,15.45,0z M12.97,4.94C13.54,4.94,14,5.4,14,5.96s-0.46,1.03-1.03,1.03c-0.57,0-1.03-0.46-1.03-1.03
|
9 |
+
C11.95,5.4,12.41,4.94,12.97,4.94z M12.97,8.02c0.57,0,1.03,0.46,1.03,1.03c0,0.57-0.46,1.03-1.03,1.03c-0.57,0-1.03-0.46-1.03-1.03
|
10 |
+
C11.95,8.48,12.41,8.02,12.97,8.02z M9.98,4.94c0.57,0,1.03,0.46,1.03,1.03s-0.46,1.03-1.03,1.03c-0.57,0-1.03-0.46-1.03-1.03
|
11 |
+
C8.95,5.4,9.41,4.94,9.98,4.94z M9.98,8.02c0.57,0,1.03,0.46,1.03,1.03s-0.46,1.03-1.03,1.03c-0.57,0-1.03-0.46-1.03-1.03
|
12 |
+
C8.95,8.48,9.41,8.02,9.98,8.02z M7.03,4.94c0.57,0,1.03,0.46,1.03,1.03S7.6,6.99,7.03,6.99C6.46,6.99,6,6.53,6,5.96
|
13 |
+
C6,5.4,6.46,4.94,7.03,4.94z M7.03,8.02c0.57,0,1.03,0.46,1.03,1.03s-0.46,1.03-1.03,1.03C6.46,10.08,6,9.62,6,9.05
|
14 |
+
C6,8.48,6.46,8.02,7.03,8.02z M4.6,18.02c-1.02,0-1.86-0.83-1.86-1.86c0-1.03,0.83-1.86,1.86-1.86c1.03,0,1.86,0.83,1.86,1.86
|
15 |
+
C6.45,17.19,5.62,18.02,4.6,18.02z M15.32,18.1c-1.02,0-1.86-0.83-1.86-1.86c0-1.03,0.83-1.86,1.86-1.86c1.03,0,1.86,0.83,1.86,1.86
|
16 |
+
C17.17,17.27,16.34,18.1,15.32,18.1z M18.48,2.79l-1.92,7.14c-0.51,1.91-2.03,3.1-4,3.1H7.2c-1.91,0-3.26-1.09-3.84-2.91L1.73,5
|
17 |
+
C1.7,4.9,1.72,4.79,1.78,4.71c0.06-0.09,0.16-0.14,0.27-0.14l0.31,0c0.75,0,1.41,0.49,1.64,1.2l1.2,3.76
|
18 |
+
c0.32,1.02,1.26,1.7,2.33,1.7h4.81c1.1,0,2.08-0.74,2.36-1.81l1.55-5.78c0.2-0.75,0.89-1.28,1.67-1.28h0.24
|
19 |
+
c0.1,0,0.2,0.05,0.26,0.13C18.48,2.58,18.5,2.68,18.48,2.79z M4.6,15.5c-0.37,0-0.66,0.3-0.66,0.67c0,0.37,0.3,0.67,0.66,0.67c0.37,0,0.67-0.3,0.67-0.67
|
20 |
+
S4.96,15.5,4.6,15.5z"/>
|
21 |
+
</svg>
|
images/gutenberg-icons/product.svg
ADDED
@@ -0,0 +1,13 @@
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
1 |
+
<?xml version="1.0" encoding="utf-8"?>
|
2 |
+
<!-- Generator: Adobe Illustrator 18.0.0, SVG Export Plug-In . SVG Version: 6.00 Build 0) -->
|
3 |
+
<!DOCTYPE svg PUBLIC "-//W3C//DTD SVG 1.1//EN" "http://www.w3.org/Graphics/SVG/1.1/DTD/svg11.dtd">
|
4 |
+
<svg version="1.1" id="Layer_1" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" x="0px" y="0px"
|
5 |
+
viewBox="0 0 20 20" enable-background="new 0 0 20 20" xml:space="preserve">
|
6 |
+
<path fill="#231F20" d="M16.43,5.12c-0.13-1.19-0.15-1.19-1.35-1.33c-0.21-0.02-0.21-0.02-0.43-0.05c-0.01,0.06,0.06,0.78,0.14,1.13
|
7 |
+
c0.57,0.37,0.87,0.98,0.87,1.71c0,1.14-0.93,2.07-2.07,2.07s-2.07-0.93-2.07-2.07c0-0.54,0.09-0.97,0.55-1.4
|
8 |
+
c-0.06-0.61-0.19-1.54-0.18-1.64C10.14,3.46,8.72,3.46,8.58,3.6l-8.17,8.13c-0.56,0.55-0.56,1.43,0,1.97l5.54,5.93
|
9 |
+
c0.56,0.55,1.46,0.55,2.01,0l8.67-8.14C17.04,11.09,16.68,7.14,16.43,5.12z M16.06,0.04c-1.91,0-3.46,1.53-3.46,3.41c0,0.74,0.4,3.09,0.44,3.28c0.07,0.34,0.52,0.56,0.86,0.49
|
10 |
+
C14,7.19,14.07,7.15,14.12,7.1c0.24-0.11,0.32-0.39,0.25-0.68c-0.09-0.45-0.39-2.44-0.39-2.94c0-1.16,0.94-2.09,2.11-2.09
|
11 |
+
c1.24,0,2.11,0.96,2.11,2.34c0,2.43-0.31,4.23-0.32,4.26c-0.1,0.17-0.1,0.38-0.03,0.55c0.03,0.17,0.13,0.31,0.28,0.4
|
12 |
+
c0.1,0.06,0.22,0.09,0.33,0.09c0.21,0,0.42-0.1,0.54-0.3c0.06-0.09,0.52-2.17,0.52-5.03C19.52,1.61,18.04,0.04,16.06,0.04z"/>
|
13 |
+
</svg>
|
images/gutenberg-icons/text-align-center.svg
ADDED
@@ -0,0 +1,14 @@
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
1 |
+
<?xml version="1.0" encoding="UTF-8"?>
|
2 |
+
<svg width="40px" height="40px" viewBox="0 0 40 40" version="1.1" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink">
|
3 |
+
<!-- Generator: Sketch 50.2 (55047) - http://www.bohemiancoding.com/sketch -->
|
4 |
+
<title>Text alignment_center</title>
|
5 |
+
<desc>Created with Sketch.</desc>
|
6 |
+
<defs></defs>
|
7 |
+
<g id="Text-alignment_center" stroke="none" stroke-width="1" fill="none" fill-rule="evenodd">
|
8 |
+
<rect id="Rectangle-45" fill="#000000" x="13" y="13" width="14" height="2"></rect>
|
9 |
+
<rect id="Rectangle-46" fill="#000000" x="16" y="16" width="8" height="2"></rect>
|
10 |
+
<rect id="Rectangle-47" fill="#000000" x="14" y="19" width="12" height="2"></rect>
|
11 |
+
<rect id="Rectangle-48" fill="#000000" x="16" y="22" width="8" height="2"></rect>
|
12 |
+
<rect id="Rectangle-49" fill="#000000" x="13" y="25" width="14" height="2"></rect>
|
13 |
+
</g>
|
14 |
+
</svg>
|
images/gutenberg-icons/text-align-justify.svg
ADDED
@@ -0,0 +1,14 @@
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
1 |
+
<?xml version="1.0" encoding="UTF-8"?>
|
2 |
+
<svg width="40px" height="40px" viewBox="0 0 40 40" version="1.1" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink">
|
3 |
+
<!-- Generator: Sketch 50.2 (55047) - http://www.bohemiancoding.com/sketch -->
|
4 |
+
<title>Text alignment_justify</title>
|
5 |
+
<desc>Created with Sketch.</desc>
|
6 |
+
<defs></defs>
|
7 |
+
<g id="Text-alignment_justify" stroke="none" stroke-width="1" fill="none" fill-rule="evenodd">
|
8 |
+
<rect id="Rectangle-55" fill="#000000" x="13" y="13" width="14" height="2"></rect>
|
9 |
+
<rect id="Rectangle-56" fill="#000000" x="13" y="16" width="14" height="2"></rect>
|
10 |
+
<rect id="Rectangle-57" fill="#000000" x="13" y="19" width="14" height="2"></rect>
|
11 |
+
<rect id="Rectangle-58" fill="#000000" x="13" y="22" width="14" height="2"></rect>
|
12 |
+
<rect id="Rectangle-59" fill="#000000" x="13" y="25" width="14" height="2"></rect>
|
13 |
+
</g>
|
14 |
+
</svg>
|
images/gutenberg-icons/text-align-left.svg
ADDED
@@ -0,0 +1,14 @@
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
1 |
+
<?xml version="1.0" encoding="UTF-8"?>
|
2 |
+
<svg width="40px" height="40px" viewBox="0 0 40 40" version="1.1" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink">
|
3 |
+
<!-- Generator: Sketch 50.2 (55047) - http://www.bohemiancoding.com/sketch -->
|
4 |
+
<title>Text alignment_left</title>
|
5 |
+
<desc>Created with Sketch.</desc>
|
6 |
+
<defs></defs>
|
7 |
+
<g id="Text-alignment_left" stroke="none" stroke-width="1" fill="none" fill-rule="evenodd">
|
8 |
+
<rect id="Rectangle-40" fill="#000000" x="13" y="13" width="14" height="2"></rect>
|
9 |
+
<rect id="Rectangle-41" fill="#000000" x="13" y="16" width="9" height="2"></rect>
|
10 |
+
<rect id="Rectangle-42" fill="#000000" x="13" y="19" width="13" height="2"></rect>
|
11 |
+
<rect id="Rectangle-43" fill="#000000" x="13" y="22" width="9" height="2"></rect>
|
12 |
+
<rect id="Rectangle-44" fill="#000000" x="13" y="25" width="14" height="2"></rect>
|
13 |
+
</g>
|
14 |
+
</svg>
|
images/gutenberg-icons/text-align-right.svg
ADDED
@@ -0,0 +1,14 @@
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
1 |
+
<?xml version="1.0" encoding="UTF-8"?>
|
2 |
+
<svg width="40px" height="40px" viewBox="0 0 40 40" version="1.1" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink">
|
3 |
+
<!-- Generator: Sketch 50.2 (55047) - http://www.bohemiancoding.com/sketch -->
|
4 |
+
<title>Text alignment_right</title>
|
5 |
+
<desc>Created with Sketch.</desc>
|
6 |
+
<defs></defs>
|
7 |
+
<g id="Text-alignment_right" stroke="none" stroke-width="1" fill="none" fill-rule="evenodd">
|
8 |
+
<rect id="Rectangle-50" fill="#000000" x="13" y="13" width="14" height="2"></rect>
|
9 |
+
<rect id="Rectangle-51" fill="#000000" x="18" y="16" width="9" height="2"></rect>
|
10 |
+
<rect id="Rectangle-52" fill="#000000" x="14" y="19" width="13" height="2"></rect>
|
11 |
+
<rect id="Rectangle-53" fill="#000000" x="18" y="22" width="9" height="2"></rect>
|
12 |
+
<rect id="Rectangle-54" fill="#000000" x="13" y="25" width="14" height="2"></rect>
|
13 |
+
</g>
|
14 |
+
</svg>
|
includes/class-ecwid-admin.php
CHANGED
@@ -125,6 +125,16 @@ class Ecwid_Admin {
|
|
125 |
}
|
126 |
}
|
127 |
}
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
128 |
}
|
129 |
|
130 |
if ( !$is_newbie || ( isset($_GET['page']) && $_GET['page'] == 'ec-store-advanced' ) ) {
|
125 |
}
|
126 |
}
|
127 |
}
|
128 |
+
|
129 |
+
if( !Ecwid_Config::is_wl() ) {
|
130 |
+
add_submenu_page(
|
131 |
+
'plugins.php',
|
132 |
+
__('Online Store Apps', 'ecwid-shopping-cart'),
|
133 |
+
__('Online Store Apps', 'ecwid-shopping-cart'),
|
134 |
+
'manage_options',
|
135 |
+
'admin.php?page=ec-store-admin-appmarket'
|
136 |
+
);
|
137 |
+
}
|
138 |
}
|
139 |
|
140 |
if ( !$is_newbie || ( isset($_GET['page']) && $_GET['page'] == 'ec-store-advanced' ) ) {
|
includes/class-ecwid-floating-minicart.php
CHANGED
@@ -29,7 +29,7 @@ if ( version_compare( get_bloginfo('version'), '4.0' ) >= 0 ) {
|
|
29 |
{
|
30 |
if ( post_password_required() ) return;
|
31 |
|
32 |
-
$display = get_option(self::OPTION_WIDGET_DISPLAY);
|
33 |
|
34 |
if (!array_key_exists($display, self::get_display_options())) {
|
35 |
$display = self::DISPLAY_NONE;
|
29 |
{
|
30 |
if ( post_password_required() ) return;
|
31 |
|
32 |
+
$display = get_option(self::OPTION_WIDGET_DISPLAY, self::DISPLAY_STORE);
|
33 |
|
34 |
if (!array_key_exists($display, self::get_display_options())) {
|
35 |
$display = self::DISPLAY_NONE;
|
includes/class-ecwid-html-meta.php
CHANGED
@@ -106,7 +106,7 @@ abstract class Ecwid_HTML_Meta_Catalog_Entry extends Ecwid_HTML_Meta {
|
|
106 |
$twitter_tags = array(
|
107 |
'card' => 'summary_large_image',
|
108 |
'description' => $this->_get_description( ECWID_TRIMMED_DESCRIPTION_LENGTH ),
|
109 |
-
'title' => $this->_get_title()
|
110 |
'image' => $this->_get_image_url()
|
111 |
);
|
112 |
|
@@ -175,7 +175,7 @@ class Ecwid_HTML_Meta_Product extends Ecwid_HTML_Meta_Catalog_Entry {
|
|
175 |
|
176 |
protected function _get_title()
|
177 |
{
|
178 |
-
return @$this->product->
|
179 |
}
|
180 |
|
181 |
protected function _get_raw_description()
|
106 |
$twitter_tags = array(
|
107 |
'card' => 'summary_large_image',
|
108 |
'description' => $this->_get_description( ECWID_TRIMMED_DESCRIPTION_LENGTH ),
|
109 |
+
'title' => $this->_get_title(),
|
110 |
'image' => $this->_get_image_url()
|
111 |
);
|
112 |
|
175 |
|
176 |
protected function _get_title()
|
177 |
{
|
178 |
+
return @$this->product->name;
|
179 |
}
|
180 |
|
181 |
protected function _get_raw_description()
|
includes/class-ecwid-nav-menus.php
CHANGED
@@ -129,8 +129,6 @@ class Ecwid_Nav_Menus {
|
|
129 |
}
|
130 |
|
131 |
public function add_meta_box() {
|
132 |
-
/*
|
133 |
-
*/
|
134 |
add_meta_box('ecwid_nav_links', __('Store', 'ecwid-shopping-cart'), array( $this, 'create_menu_items'), 'nav-menus', 'side');
|
135 |
}
|
136 |
|
129 |
}
|
130 |
|
131 |
public function add_meta_box() {
|
|
|
|
|
132 |
add_meta_box('ecwid_nav_links', __('Store', 'ecwid-shopping-cart'), array( $this, 'create_menu_items'), 'nav-menus', 'side');
|
133 |
}
|
134 |
|
includes/class-ecwid-products.php
CHANGED
@@ -311,12 +311,12 @@ class Ecwid_Products {
|
|
311 |
$result['last_update'] = $this->_status->get_last_sync_time();
|
312 |
|
313 |
if ($updated->total > 0) {
|
314 |
-
$result['updated_from'] = $updated->items[0]->updated
|
315 |
$result['last_updated'] = Ecwid_Api_V3::format_time($this->_status->last_deleted_product_time);
|
316 |
}
|
317 |
|
318 |
if ($deleted->total > 0) {
|
319 |
-
$result['deleted_from'] = $deleted->items[0]->date
|
320 |
$result['last_deleted'] = Ecwid_Api_V3::format_time($this->_status->last_deleted_product_time);
|
321 |
}
|
322 |
|
311 |
$result['last_update'] = $this->_status->get_last_sync_time();
|
312 |
|
313 |
if ($updated->total > 0) {
|
314 |
+
$result['updated_from'] = $updated->items[0]->updated;
|
315 |
$result['last_updated'] = Ecwid_Api_V3::format_time($this->_status->last_deleted_product_time);
|
316 |
}
|
317 |
|
318 |
if ($deleted->total > 0) {
|
319 |
+
$result['deleted_from'] = $deleted->items[0]->date;
|
320 |
$result['last_deleted'] = Ecwid_Api_V3::format_time($this->_status->last_deleted_product_time);
|
321 |
}
|
322 |
|
includes/class-ecwid-seo-links.php
CHANGED
@@ -152,11 +152,7 @@ class Ecwid_Seo_Links {
|
|
152 |
'.*-p([0-9]+)(\/.*|\?.*)?',
|
153 |
'.*-c([0-9]+)(\/.*|\?.*)?',
|
154 |
'cart',
|
155 |
-
'checkout',
|
156 |
-
'checkout\/shipping',
|
157 |
-
'checkout\/payment',
|
158 |
-
'checkout\/place-order',
|
159 |
-
'checkout\/order-confirmation',
|
160 |
'account',
|
161 |
'account\/settings',
|
162 |
'account\/orders',
|
@@ -174,8 +170,6 @@ class Ecwid_Seo_Links {
|
|
174 |
'resetPassword.*',
|
175 |
'checkoutAB.*',
|
176 |
'downloadError.*',
|
177 |
-
'checkoutResult.*',
|
178 |
-
'checkoutWait.*',
|
179 |
'orderFailure.*',
|
180 |
'checkoutCC.*',
|
181 |
'checkoutEC.*',
|
@@ -215,11 +209,13 @@ class Ecwid_Seo_Links {
|
|
215 |
}
|
216 |
|
217 |
$url = esc_js( get_permalink( $page_id ) );
|
218 |
-
|
219 |
$result = <<<JS
|
220 |
window.ec.config.storefrontUrls = window.ec.config.storefrontUrls || {};
|
221 |
window.ec.config.storefrontUrls.cleanUrls = true;
|
222 |
window.ec.config.baseUrl = '$url';
|
|
|
|
|
223 |
JS;
|
224 |
$config .= $result;
|
225 |
|
152 |
'.*-p([0-9]+)(\/.*|\?.*)?',
|
153 |
'.*-c([0-9]+)(\/.*|\?.*)?',
|
154 |
'cart',
|
155 |
+
'checkout.*',
|
|
|
|
|
|
|
|
|
156 |
'account',
|
157 |
'account\/settings',
|
158 |
'account\/orders',
|
170 |
'resetPassword.*',
|
171 |
'checkoutAB.*',
|
172 |
'downloadError.*',
|
|
|
|
|
173 |
'orderFailure.*',
|
174 |
'checkoutCC.*',
|
175 |
'checkoutEC.*',
|
209 |
}
|
210 |
|
211 |
$url = esc_js( get_permalink( $page_id ) );
|
212 |
+
|
213 |
$result = <<<JS
|
214 |
window.ec.config.storefrontUrls = window.ec.config.storefrontUrls || {};
|
215 |
window.ec.config.storefrontUrls.cleanUrls = true;
|
216 |
window.ec.config.baseUrl = '$url';
|
217 |
+
window.ec.storefront = window.ec.storefront || {};
|
218 |
+
window.ec.storefront.sharing_button_link = "DIRECT_PAGE_URL";
|
219 |
JS;
|
220 |
$config .= $result;
|
221 |
|
includes/class-ecwid-store-page.php
CHANGED
@@ -416,9 +416,50 @@ class Ecwid_Store_Page {
|
|
416 |
|
417 |
$catalog->warmup_store_page(intval($category));
|
418 |
}
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
419 |
}
|
420 |
|
421 |
add_action( 'init', array( 'Ecwid_Store_Page', 'flush_rewrites' ) );
|
|
|
422 |
add_action( 'save_post', array( 'Ecwid_Store_Page', 'on_save_post' ) );
|
423 |
add_action( 'wp_ajax_' . Ecwid_Store_Page::WARMUP_ACTION, array( 'Ecwid_Store_Page', 'warmup_store' ) );
|
424 |
-
add_action( 'update_option_page_on_front', array( 'Ecwid_Store_Page', 'schedule_flush_rewrites' ) );
|
|
|
|
416 |
|
417 |
$catalog->warmup_store_page(intval($category));
|
418 |
}
|
419 |
+
|
420 |
+
/* If you figure out a better place to put this the_title functionality, go ahead, move it =) */
|
421 |
+
|
422 |
+
static $original_title = '';
|
423 |
+
static public function enqueue_original_page_title( )
|
424 |
+
{
|
425 |
+
$script = 'dynamic-title';
|
426 |
+
EcwidPlatform::enqueue_script( $script, array( 'jquery' ), true );
|
427 |
+
wp_localize_script( EcwidPlatform::make_handle( $script ), 'ecwidOriginalTitle', array(
|
428 |
+
'title' => get_the_title()
|
429 |
+
) );
|
430 |
+
}
|
431 |
+
|
432 |
+
static public function the_title( $title )
|
433 |
+
{
|
434 |
+
if ( ! self::is_store_page() ) return $title;
|
435 |
+
|
436 |
+
$params = Ecwid_Seo_Links::maybe_extract_html_catalog_params();
|
437 |
+
|
438 |
+
if ( !@$params['mode'] ) {
|
439 |
+
return $title;
|
440 |
+
}
|
441 |
+
|
442 |
+
$ecwid_title = null;
|
443 |
+
|
444 |
+
if ( $params['mode'] == 'product' ) {
|
445 |
+
$p = Ecwid_Product::get_by_id( $params['id'] );
|
446 |
+
$ecwid_title = isset( $p->seoTitle ) ? $p->seoTitle : $p->name;
|
447 |
+
} else if ( $params['mode'] == 'category' ) {
|
448 |
+
$c = Ecwid_Category::get_by_id( $params['id'] );
|
449 |
+
$ecwid_title = $c->name;
|
450 |
+
}
|
451 |
+
|
452 |
+
if ( empty( $ecwid_title ) ) {
|
453 |
+
return $title;
|
454 |
+
}
|
455 |
+
return $ecwid_title;
|
456 |
+
}
|
457 |
}
|
458 |
|
459 |
add_action( 'init', array( 'Ecwid_Store_Page', 'flush_rewrites' ) );
|
460 |
+
//add_action( 'wp_enqueue_scripts', array( 'Ecwid_Store_Page', 'enqueue_original_page_title' ) );
|
461 |
add_action( 'save_post', array( 'Ecwid_Store_Page', 'on_save_post' ) );
|
462 |
add_action( 'wp_ajax_' . Ecwid_Store_Page::WARMUP_ACTION, array( 'Ecwid_Store_Page', 'warmup_store' ) );
|
463 |
+
add_action( 'update_option_page_on_front', array( 'Ecwid_Store_Page', 'schedule_flush_rewrites' ) );
|
464 |
+
|
465 |
+
//add_filter( 'the_title', array( 'Ecwid_Store_Page', 'the_title' ) );
|
includes/importer/class-ecwid-import-page.php
CHANGED
@@ -103,7 +103,7 @@ class Ecwid_Import_Page
|
|
103 |
{
|
104 |
$importer = new Ecwid_Importer();
|
105 |
|
106 |
-
if ( !$importer->has_begun() ) {
|
107 |
$importer->initiate( @$_REQUEST['settings'] );
|
108 |
}
|
109 |
|
103 |
{
|
104 |
$importer = new Ecwid_Importer();
|
105 |
|
106 |
+
if ( !$importer->has_begun() || isset( $_REQUEST['reset'] ) ) {
|
107 |
$importer->initiate( @$_REQUEST['settings'] );
|
108 |
}
|
109 |
|
includes/importer/class-ecwid-importer-task.php
CHANGED
@@ -5,6 +5,9 @@ abstract class Ecwid_Importer_Task
|
|
5 |
|
6 |
const WC_POST_TYPE_PRODUCT = 'product';
|
7 |
|
|
|
|
|
|
|
8 |
public static $type;
|
9 |
|
10 |
public static function build( array $data ) {
|
@@ -62,7 +65,7 @@ abstract class Ecwid_Importer_Task
|
|
62 |
protected function _result_success()
|
63 |
{
|
64 |
return array(
|
65 |
-
'status' =>
|
66 |
);
|
67 |
|
68 |
}
|
@@ -73,538 +76,33 @@ abstract class Ecwid_Importer_Task
|
|
73 |
|
74 |
);
|
75 |
}
|
76 |
-
}
|
77 |
-
|
78 |
-
class Ecwid_Importer_Task_Create_Product extends Ecwid_Importer_Task
|
79 |
-
{
|
80 |
-
public static $type = 'create_product';
|
81 |
-
|
82 |
-
const WC_PRODUCT_TYPE_VARIABLE = 'variable';
|
83 |
-
|
84 |
-
public function execute( Ecwid_Importer $exporter, array $product_data ) {
|
85 |
-
|
86 |
-
$api = new Ecwid_Api_V3( );
|
87 |
-
|
88 |
-
$woo_id = $product_data['woo_id'];
|
89 |
-
|
90 |
-
$product = get_post( $woo_id );
|
91 |
-
|
92 |
-
$data = array(
|
93 |
-
'name' => $product->post_title,
|
94 |
-
'price' => get_post_meta( $woo_id, '_regular_price', true ),
|
95 |
-
'description' => $product->post_content,
|
96 |
-
'isShippingRequired' => get_post_meta( $woo_id, '_virtual', true ) != 'yes',
|
97 |
-
'categoryIds' => array(),
|
98 |
-
'showOnFrontpage' => (int) ( get_post_meta( $woo_id, '_featured', true ) == 'yes' )
|
99 |
-
);
|
100 |
-
|
101 |
-
$meta = get_post_meta( $woo_id, '_sku', true );
|
102 |
-
if ( !empty( $meta ) ) {
|
103 |
-
$data['sku'] = get_post_meta( $woo_id, '_sku', true );
|
104 |
-
}
|
105 |
-
|
106 |
-
if ( get_post_meta( $woo_id, '_manage_stock', true ) == 'yes' ) {
|
107 |
-
$data['unlimited'] = false;
|
108 |
-
$data['quantity'] = intval( get_post_meta( $woo_id, '_stock', true ) );
|
109 |
-
} else {
|
110 |
-
$data['unlimited'] = true;
|
111 |
-
}
|
112 |
-
|
113 |
-
$product = wc_get_product( $woo_id );
|
114 |
-
if ($product->get_type() == self::WC_PRODUCT_TYPE_VARIABLE ) {
|
115 |
-
$data = array_merge( $data, $this->_get_variable_product_data( $woo_id ) );
|
116 |
-
}
|
117 |
-
|
118 |
-
$data['price'] = floatval( $data['price'] );
|
119 |
-
|
120 |
-
$categories = get_the_terms( $woo_id, 'product_cat' );
|
121 |
-
|
122 |
-
if ( $categories ) foreach ( $categories as $category ) {
|
123 |
-
$category_id = $exporter->get_ecwid_category_id( $category->term_id );
|
124 |
-
|
125 |
-
if ( $category_id ) {
|
126 |
-
$data['categoryIds'][] = $category_id;
|
127 |
-
}
|
128 |
-
}
|
129 |
-
if ( empty( $data['categoryIds'] ) ) {
|
130 |
-
unset( $data['categoryIds'] );
|
131 |
-
}
|
132 |
-
|
133 |
-
$ecwid_product_id = null;
|
134 |
-
$result = null;
|
135 |
-
$ecwid_id = null;
|
136 |
-
|
137 |
-
if ( $exporter->get_setting( Ecwid_Importer::SETTING_UPDATE_BY_SKU ) ) {
|
138 |
-
$products = $api->get_products( array( 'sku' => $data['sku'] ) );
|
139 |
-
|
140 |
-
if ( $products->total > 0 ) {
|
141 |
-
$ecwid_id = $products->items[0]->id;
|
142 |
-
$result = $api->update_product( $data, $ecwid_id );
|
143 |
-
$exporter->save_ecwid_product_id( $woo_id, $ecwid_id );
|
144 |
-
}
|
145 |
-
}
|
146 |
-
|
147 |
-
if ( !$result ) {
|
148 |
-
$result = $api->create_product( $data );
|
149 |
-
$result_object = json_decode( $result['body'] );
|
150 |
-
$ecwid_product_id = $result_object->id;
|
151 |
-
}
|
152 |
-
|
153 |
-
$return = array(
|
154 |
-
'type' => self::$type
|
155 |
-
);
|
156 |
-
|
157 |
-
if ( $result['response']['code'] == '200' ) {
|
158 |
-
$result_object = json_decode( $result['body'] );
|
159 |
-
|
160 |
-
update_post_meta( $woo_id, '_ecwid_product_id', $ecwid_id ? $ecwid_id : $result_object->id );
|
161 |
-
$exporter->save_ecwid_product_id( $woo_id, $ecwid_id ? $ecwid_id : $result_object->id );
|
162 |
-
|
163 |
-
$return['status'] = 'success';
|
164 |
-
$return['data'] = $result_object;
|
165 |
-
} else {
|
166 |
-
$return['status'] = 'error';
|
167 |
-
$return['data'] = $result;
|
168 |
-
$return['sent_data'] = $data;
|
169 |
-
}
|
170 |
-
|
171 |
-
return $return;
|
172 |
-
}
|
173 |
-
|
174 |
-
public function _get_variable_product_data( $id )
|
175 |
-
{
|
176 |
-
$result = array();
|
177 |
-
|
178 |
-
$product = new WC_Product_Variable( $id );
|
179 |
-
$result['price'] = $product->get_variation_price();
|
180 |
-
|
181 |
-
$attributes = $product->get_variation_attributes();
|
182 |
-
if ( $attributes && is_array( $attributes ) && count( $attributes ) > 0 ) {
|
183 |
-
|
184 |
-
$default_attributes = $product->get_default_attributes();
|
185 |
-
$result['options'] = array();
|
186 |
-
foreach ( $attributes as $name => $attribute ) {
|
187 |
-
|
188 |
-
$atts = $product->get_attributes();
|
189 |
-
$tax_attribute = $atts[strtolower($name)]->get_taxonomy_object();
|
190 |
-
|
191 |
-
if ($tax_attribute) {
|
192 |
-
$name = $tax_attribute->attribute_label;
|
193 |
-
}
|
194 |
-
|
195 |
-
$option = array( 'type' => 'SELECT', 'name' => $name, 'required' => true, 'choices' => array() );
|
196 |
-
foreach ( $attribute as $option_name ) {
|
197 |
-
$choice = array( 'text' => $option_name, 'priceModifier' => 0, 'priceModifierType' => 'ABSOLUTE' );
|
198 |
-
$option['choices'][] = $choice;
|
199 |
-
}
|
200 |
-
if ( @$default_attributes[$name] ) {
|
201 |
-
$ind = array_search( $default_attributes[$name], $attribute );
|
202 |
-
|
203 |
-
if ( $ind !== false ) {
|
204 |
-
$option['defaultChoice'] = $ind;
|
205 |
-
}
|
206 |
-
}
|
207 |
-
|
208 |
-
$result['options'][] = $option;
|
209 |
-
}
|
210 |
-
}
|
211 |
-
|
212 |
-
return $result;
|
213 |
-
}
|
214 |
-
|
215 |
-
public static function build( array $data ) {
|
216 |
-
return array(
|
217 |
-
'type' => self::$type,
|
218 |
-
'woo_id' => $data['woo_id']
|
219 |
-
);
|
220 |
-
}
|
221 |
-
}
|
222 |
-
|
223 |
-
class Ecwid_Importer_Task_Delete_Products extends Ecwid_Importer_Task
|
224 |
-
{
|
225 |
-
public static $type = 'delete_products';
|
226 |
-
|
227 |
-
public function execute( Ecwid_Importer $exporter, array $data ) {
|
228 |
-
$api = new Ecwid_Api_V3();
|
229 |
-
|
230 |
-
$ids = $data['ids'];
|
231 |
-
|
232 |
-
$result = $api->delete_products( $ids );
|
233 |
-
|
234 |
-
$return = array(
|
235 |
-
'type' => self::$type
|
236 |
-
);
|
237 |
-
|
238 |
-
$return['status'] = 'success';
|
239 |
-
$return['data'] = $result;
|
240 |
-
|
241 |
-
return $return;
|
242 |
-
}
|
243 |
-
|
244 |
-
public static function build( array $ids ) {
|
245 |
-
return array(
|
246 |
-
'type' => self::$type,
|
247 |
-
'ids' => $ids
|
248 |
-
);
|
249 |
-
}
|
250 |
-
}
|
251 |
-
|
252 |
-
class Ecwid_Importer_Task_Upload_Product_Variation_Image extends Ecwid_Importer_Task
|
253 |
-
{
|
254 |
-
public static $type = 'upload_product_variation_image';
|
255 |
-
|
256 |
-
public function execute( Ecwid_Importer $exporter, array $data ) {
|
257 |
-
$api = new Ecwid_Api_V3();
|
258 |
-
|
259 |
-
$product_id = get_post_meta( $data['product_id'], '_ecwid_product_id', true );
|
260 |
-
$variation_id = get_post_meta( $data['variation_id'], '_ecwid_variation_id', true );
|
261 |
-
|
262 |
-
$file = get_attached_file ( get_post_thumbnail_id( $data['variation_id'] ) );
|
263 |
-
|
264 |
-
if ( !$product_id ) {
|
265 |
-
return array(
|
266 |
-
'status' => 'error',
|
267 |
-
'data' => 'skipped',
|
268 |
-
'message' => 'parent product was not imported. data:' . var_export($data, true)
|
269 |
-
);
|
270 |
-
}
|
271 |
-
|
272 |
-
if ( !$variation_id ) {
|
273 |
-
return array(
|
274 |
-
'status' => 'error',
|
275 |
-
'data' => 'skipped',
|
276 |
-
'message' => 'parent variation was not imported. data:' . var_export($data, true)
|
277 |
-
);
|
278 |
-
}
|
279 |
-
|
280 |
-
$data = array(
|
281 |
-
'productId' => $product_id,
|
282 |
-
'variationId' => $variation_id,
|
283 |
-
'data' => file_get_contents( $file )
|
284 |
-
);
|
285 |
-
|
286 |
-
$result = $api->upload_product_variation_image( $data );
|
287 |
-
|
288 |
-
$return = array(
|
289 |
-
'type' => self::$type
|
290 |
-
);
|
291 |
-
if ( $result['response']['code'] == '200' ) {
|
292 |
-
$result_object = json_decode( $result['body'] );
|
293 |
-
|
294 |
-
$return['status'] = 'success';
|
295 |
-
$return['data'] = $result_object;
|
296 |
-
} else {
|
297 |
-
$return['status'] = 'error';
|
298 |
-
$return['data'] = $result;
|
299 |
-
}
|
300 |
-
|
301 |
-
return $return;
|
302 |
-
}
|
303 |
-
|
304 |
-
public static function build( array $data ) {
|
305 |
-
return array(
|
306 |
-
'type' => self::$type,
|
307 |
-
'product_id' => $data['product_id'],
|
308 |
-
'variation_id' => $data['variation_id']
|
309 |
-
);
|
310 |
-
}
|
311 |
-
}
|
312 |
-
|
313 |
-
class Ecwid_Importer_Task_Upload_Category_Image extends Ecwid_Importer_Task
|
314 |
-
{
|
315 |
-
public static $type = 'upload_category_image';
|
316 |
-
|
317 |
-
public function execute( Ecwid_Importer $exporter, array $category_data ) {
|
318 |
-
$api = new Ecwid_Api_V3();
|
319 |
-
|
320 |
-
$woo_id = $category_data['woo_id'];
|
321 |
-
|
322 |
-
// get the thumbnail id using the queried category term_id
|
323 |
-
$thumbnail_id = get_term_meta( $woo_id, 'thumbnail_id', true );
|
324 |
-
$file = get_attached_file ( $thumbnail_id );
|
325 |
-
|
326 |
-
$category_id = $exporter->get_ecwid_category_id( $woo_id );
|
327 |
-
if ( !$category_id ) {
|
328 |
-
return array(
|
329 |
-
'status' => 'error',
|
330 |
-
'data' => 'skipped',
|
331 |
-
'message' => 'parent category was not imported'
|
332 |
-
);
|
333 |
-
}
|
334 |
-
|
335 |
-
$data = array(
|
336 |
-
'categoryId' => $category_id,
|
337 |
-
'data' => file_get_contents( $file )
|
338 |
-
);
|
339 |
-
|
340 |
-
$result = $api->upload_category_image( $data );
|
341 |
-
|
342 |
-
$return = array(
|
343 |
-
'type' => self::$type
|
344 |
-
);
|
345 |
-
if ( $result['response']['code'] == '200' ) {
|
346 |
-
$result_object = json_decode( $result['body'] );
|
347 |
-
|
348 |
-
$return['status'] = 'success';
|
349 |
-
$return['data'] = $result_object;
|
350 |
-
} else {
|
351 |
-
$return['status'] = 'error';
|
352 |
-
$return['data'] = $result;
|
353 |
-
}
|
354 |
-
|
355 |
-
return $return;
|
356 |
-
}
|
357 |
-
|
358 |
-
public static function build( array $data ) {
|
359 |
-
return array(
|
360 |
-
'type' => self::$type,
|
361 |
-
'woo_id' => $data['woo_id']
|
362 |
-
);
|
363 |
-
}
|
364 |
-
}
|
365 |
-
|
366 |
-
class Ecwid_Importer_Task_Upload_Product_Image extends Ecwid_Importer_Task
|
367 |
-
{
|
368 |
-
public static $type = 'upload_product_image';
|
369 |
-
|
370 |
-
public function execute( Ecwid_Importer $exporter, array $product_data ) {
|
371 |
-
$api = new Ecwid_Api_V3();
|
372 |
-
|
373 |
-
$file = get_attached_file ( get_post_thumbnail_id( $product_data['woo_id'] ) );
|
374 |
-
|
375 |
-
$product_id = $exporter->get_ecwid_product_id( $product_data['woo_id'] );
|
376 |
-
if ( !$product_id ) {
|
377 |
-
return array(
|
378 |
-
'status' => 'error',
|
379 |
-
'data' => 'skipped',
|
380 |
-
'message' => 'Parent product was not imported for product #' . $product_data['woo_id']
|
381 |
-
);
|
382 |
-
}
|
383 |
-
|
384 |
-
$data = array(
|
385 |
-
'productId' => $product_id,
|
386 |
-
'data' => file_get_contents( $file )
|
387 |
-
);
|
388 |
-
|
389 |
-
$result = $api->upload_product_image( $data );
|
390 |
-
|
391 |
-
$return = array(
|
392 |
-
'type' => self::$type
|
393 |
-
);
|
394 |
-
if ( $result['response']['code'] == '200' ) {
|
395 |
-
$result_object = json_decode( $result['body'] );
|
396 |
-
|
397 |
-
$return['status'] = 'success';
|
398 |
-
$return['data'] = $result_object;
|
399 |
-
} else {
|
400 |
-
$return['status'] = 'error';
|
401 |
-
$return['data'] = $result;
|
402 |
-
}
|
403 |
-
|
404 |
-
return $return;
|
405 |
-
}
|
406 |
-
|
407 |
-
public static function build( array $data ) {
|
408 |
-
return array(
|
409 |
-
'type' => self::$type,
|
410 |
-
'woo_id' => $data['woo_id']
|
411 |
-
);
|
412 |
-
}
|
413 |
-
}
|
414 |
-
|
415 |
-
class Ecwid_Importer_Task_Upload_Product_Gallery_Image extends Ecwid_Importer_Task
|
416 |
-
{
|
417 |
-
public static $type = 'upload_product_gallery_image';
|
418 |
-
|
419 |
-
public function execute( Ecwid_Importer $exporter, array $product_data ) {
|
420 |
-
$api = new Ecwid_Api_V3();
|
421 |
-
|
422 |
-
$file = get_attached_file( $product_data['image_id'] );
|
423 |
-
|
424 |
-
$product_id = get_post_meta( $product_data['product_id'], '_ecwid_product_id', true );
|
425 |
-
|
426 |
-
if ( !$product_id ) {
|
427 |
-
return array(
|
428 |
-
'status' => 'error',
|
429 |
-
'data' => 'skipped',
|
430 |
-
'message' => 'Parent product was not imported'
|
431 |
-
);
|
432 |
-
}
|
433 |
-
|
434 |
-
if ( !$file || !file_exists( $file ) || !is_readable( $file ) ) {
|
435 |
-
return array(
|
436 |
-
'status' => 'error',
|
437 |
-
'data' => 'skipped',
|
438 |
-
'message' => 'File not found for product#' . $product_data['product_id'] . ' image ' . $product_data['image_id']
|
439 |
-
);
|
440 |
-
}
|
441 |
-
|
442 |
-
$data = array(
|
443 |
-
'productId' => $product_id,
|
444 |
-
'data' => file_get_contents( $file )
|
445 |
-
);
|
446 |
-
|
447 |
-
$result = $api->upload_product_gallery_image( $data );
|
448 |
-
|
449 |
-
$return = array(
|
450 |
-
'type' => self::$type
|
451 |
-
);
|
452 |
-
if ( $result['response']['code'] == '200' ) {
|
453 |
-
$result_object = json_decode( $result['body'] );
|
454 |
-
|
455 |
-
$return['status'] = 'success';
|
456 |
-
$return['data'] = $result_object;
|
457 |
-
} else {
|
458 |
-
$return['status'] = 'error';
|
459 |
-
$return['data'] = $result;
|
460 |
-
}
|
461 |
-
|
462 |
-
return $return;
|
463 |
-
}
|
464 |
-
|
465 |
-
public static function build( array $data ) {
|
466 |
-
return array(
|
467 |
-
'type' => self::$type,
|
468 |
-
'product_id' => $data['product_id'],
|
469 |
-
'image_id' => $data['image_id']
|
470 |
-
);
|
471 |
-
}
|
472 |
-
}
|
473 |
-
|
474 |
-
class Ecwid_Importer_Task_Create_Product_Variation extends Ecwid_Importer_Task
|
475 |
-
{
|
476 |
-
public static $type = 'create_variation';
|
477 |
-
|
478 |
-
public function execute( Ecwid_Importer $exporter, array $data ) {
|
479 |
-
$api = new Ecwid_Api_V3();
|
480 |
-
|
481 |
-
$p = wc_get_product( $data['woo_id'] );
|
482 |
-
$attributes = $p->get_attributes();
|
483 |
-
$vars = $p->get_available_variations();
|
484 |
-
|
485 |
-
$variation_data = array(
|
486 |
-
'productId' => $exporter->get_ecwid_product_id( $data['woo_id'] ),
|
487 |
-
'options' => array()
|
488 |
-
);
|
489 |
-
|
490 |
-
foreach ( $vars as $var ) {
|
491 |
-
if ( $var['variation_id'] != $data['var_id'] ) {
|
492 |
-
continue;
|
493 |
-
}
|
494 |
-
|
495 |
-
foreach ($attributes as $internal_name => $attribute) {
|
496 |
-
$tax_attribute = $attribute->get_taxonomy_object();
|
497 |
-
|
498 |
-
$name = '';
|
499 |
-
if ( $tax_attribute ) {
|
500 |
-
$name = $tax_attribute->attribute_label;
|
501 |
-
} else {
|
502 |
-
$name = $attribute->get_name();
|
503 |
-
}
|
504 |
-
|
505 |
-
$value = $var['attributes']['attribute_' . strtolower($internal_name)];
|
506 |
-
|
507 |
-
$variation_data['options'][] = array(
|
508 |
-
'name' => $name,
|
509 |
-
'value' => $value
|
510 |
-
);
|
511 |
-
}
|
512 |
|
513 |
-
|
514 |
-
|
515 |
-
|
516 |
-
|
517 |
-
|
518 |
-
|
519 |
-
|
520 |
-
|
521 |
-
|
522 |
-
|
523 |
-
|
524 |
-
|
525 |
-
|
526 |
-
|
527 |
-
|
528 |
-
|
529 |
-
|
530 |
-
);
|
531 |
-
|
532 |
-
$return = array(
|
533 |
-
'type' => self::$type
|
534 |
-
);
|
535 |
-
if ( $result['response']['code'] == '200' ) {
|
536 |
-
$result_object = json_decode( $result['body'] );
|
537 |
-
|
538 |
-
update_post_meta( $data['var_id'], '_ecwid_variation_id', $result_object->id );
|
539 |
-
|
540 |
-
$return['status'] = 'success';
|
541 |
-
$return['data'] = $result_object;
|
542 |
-
} else {
|
543 |
-
$return['status'] = 'error';
|
544 |
-
$return['data'] = $result;
|
545 |
-
}
|
546 |
-
|
547 |
-
return $return;
|
548 |
-
}
|
549 |
-
|
550 |
-
public static function build( array $data ) {
|
551 |
-
return array(
|
552 |
-
'type' => self::$type,
|
553 |
-
'woo_id' => $data['woo_id'],
|
554 |
-
'var_id' => $data['var_id']
|
555 |
-
);
|
556 |
-
}
|
557 |
-
}
|
558 |
-
|
559 |
-
class Ecwid_Importer_Task_Create_Category extends Ecwid_Importer_Task
|
560 |
-
{
|
561 |
-
public static $type = 'create_category';
|
562 |
-
|
563 |
-
public function execute( Ecwid_Importer $exporter, array $category_data ) {
|
564 |
-
$api = new Ecwid_Api_V3();
|
565 |
-
|
566 |
-
$category = get_term_by( 'id', $category_data['woo_id'], 'product_cat' );
|
567 |
-
$data = array(
|
568 |
-
'name' => $category->name,
|
569 |
-
'parentId' => $exporter->get_ecwid_category_id( $category->parent ),
|
570 |
-
'description' => $category->description
|
571 |
-
);
|
572 |
-
|
573 |
-
$ecwid_category_id = get_term_meta( $category_data['woo_id'], 'ecwid_category_id', true );
|
574 |
-
if ( $ecwid_category_id ) {
|
575 |
-
$result = $api->update_category( $data, $ecwid_category_id );
|
576 |
-
} else {
|
577 |
-
$result = $api->create_category(
|
578 |
-
$data
|
579 |
);
|
580 |
|
581 |
-
|
582 |
-
$result_object = json_decode( $result['body'] );
|
583 |
-
$ecwid_category_id = $result_object->id;
|
584 |
-
}
|
585 |
-
}
|
586 |
-
|
587 |
-
$return = array(
|
588 |
-
'type' => self::$type
|
589 |
-
);
|
590 |
-
if ( $result['response']['code'] == '200' ) {
|
591 |
-
$exporter->save_ecwid_category( $category_data['woo_id'], $ecwid_category_id );
|
592 |
-
update_term_meta( $category_data['woo_id'], 'ecwid_category_id', $ecwid_category_id );
|
593 |
-
|
594 |
-
$return['status'] = 'success';
|
595 |
-
$return['data'] = json_decode( $result['body'] );
|
596 |
-
} else {
|
597 |
-
$return['status'] = 'error';
|
598 |
-
$return['data'] = $result;
|
599 |
}
|
600 |
|
601 |
-
return $return;
|
602 |
-
}
|
603 |
-
|
604 |
-
public static function build( array $data ) {
|
605 |
return array(
|
606 |
-
'type' =>
|
607 |
-
'
|
|
|
608 |
);
|
609 |
}
|
610 |
}
|
5 |
|
6 |
const WC_POST_TYPE_PRODUCT = 'product';
|
7 |
|
8 |
+
const STATUS_SUCCESS = 'success';
|
9 |
+
const STATUS_ERROR = 'error';
|
10 |
+
|
11 |
public static $type;
|
12 |
|
13 |
public static function build( array $data ) {
|
65 |
protected function _result_success()
|
66 |
{
|
67 |
return array(
|
68 |
+
'status' => self::STATUS_SUCCESS
|
69 |
);
|
70 |
|
71 |
}
|
76 |
|
77 |
);
|
78 |
}
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
79 |
|
80 |
+
protected function _is_api_result_error( $result ) {
|
81 |
+
return is_wp_error( $result )
|
82 |
+
|| !is_array( $result )
|
83 |
+
|| !isset( $result['body'] )
|
84 |
+
|| !isset( $result['response'] )
|
85 |
+
|| !isset( $result['response']['code'] )
|
86 |
+
|| $result['response']['code'] != '200';
|
87 |
+
;
|
88 |
+
}
|
89 |
+
protected function _process_api_result( $result, $sent_data ) {
|
90 |
+
if ( $this->_is_api_result_error( $result )
|
91 |
+
) {
|
92 |
+
$result = array(
|
93 |
+
'type' => static::$type,
|
94 |
+
'status' => self::STATUS_ERROR,
|
95 |
+
'data' => $result,
|
96 |
+
'sent_data' => $sent_data
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
97 |
);
|
98 |
|
99 |
+
return $result;
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
100 |
}
|
101 |
|
|
|
|
|
|
|
|
|
102 |
return array(
|
103 |
+
'type' => static::$type,
|
104 |
+
'status' => self::STATUS_SUCCESS,
|
105 |
+
'data' => json_decode( $result['body'] )
|
106 |
);
|
107 |
}
|
108 |
}
|
includes/importer/class-ecwid-importer.php
CHANGED
@@ -46,6 +46,11 @@ class Ecwid_Importer
|
|
46 |
|
47 |
public function tick()
|
48 |
{
|
|
|
|
|
|
|
|
|
|
|
49 |
set_time_limit(0);
|
50 |
$results = array();
|
51 |
|
@@ -149,11 +154,36 @@ class Ecwid_Importer
|
|
149 |
return $progress;
|
150 |
}
|
151 |
|
152 |
-
public function
|
153 |
|
154 |
$this->_tasks[] = $task;
|
|
|
|
|
155 |
//array_splice( $this->_tasks, (int)$this->_get_current_task() + 1, 0, array( $task ) );
|
156 |
}
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
157 |
|
158 |
public function append_after_type( $task ) {
|
159 |
$ind = $this->_get_current_task();
|
@@ -164,7 +194,7 @@ class Ecwid_Importer
|
|
164 |
$ind++;
|
165 |
}
|
166 |
|
167 |
-
|
168 |
}
|
169 |
|
170 |
public function has_begun()
|
@@ -187,7 +217,7 @@ class Ecwid_Importer
|
|
187 |
|
188 |
$categories = get_option( self::OPTION_CATEGORIES, array() );
|
189 |
|
190 |
-
return
|
191 |
}
|
192 |
|
193 |
public function save_ecwid_category( $woo_category_id, $ecwid_category_id )
|
@@ -221,7 +251,7 @@ class Ecwid_Importer
|
|
221 |
|
222 |
protected function _build_tasks()
|
223 |
{
|
224 |
-
$this->
|
225 |
Ecwid_Importer_Task_Main::build( array() )
|
226 |
);
|
227 |
}
|
@@ -281,6 +311,8 @@ class Ecwid_Importer
|
|
281 |
if ( self::count_ecwid_demo_products() > 0 && self::count_ecwid_demo_products() == self::count_ecwid_products() ) {
|
282 |
$this->_set_setting( self::SETTING_DELETE_DEMO, true );
|
283 |
}
|
|
|
|
|
284 |
}
|
285 |
|
286 |
protected static function _get_woo_categories( $args ) {
|
46 |
|
47 |
public function tick()
|
48 |
{
|
49 |
+
|
50 |
+
$task = Ecwid_Importer_Task_Create_Product::build(array('woo_id' => '596'));
|
51 |
+
$t = new Ecwid_Importer_Task_Create_Product();
|
52 |
+
$t->execute($this, $task);
|
53 |
+
|
54 |
set_time_limit(0);
|
55 |
$results = array();
|
56 |
|
154 |
return $progress;
|
155 |
}
|
156 |
|
157 |
+
public function append_task( $task ) {
|
158 |
|
159 |
$this->_tasks[] = $task;
|
160 |
+
|
161 |
+
return count( $this->_tasks ) - 1;
|
162 |
//array_splice( $this->_tasks, (int)$this->_get_current_task() + 1, 0, array( $task ) );
|
163 |
}
|
164 |
+
|
165 |
+
/**
|
166 |
+
* Appends $task as a child of current task. It skips current task, skips all task with the same type
|
167 |
+
* and appends $task after all its siblings
|
168 |
+
*
|
169 |
+
* @param $task
|
170 |
+
*/
|
171 |
+
public function append_child( $task ) {
|
172 |
+
$ind = $this->_get_current_task();
|
173 |
+
|
174 |
+
$ind++;
|
175 |
+
while ( isset( $this->_tasks[$ind] ) && $this->_tasks[$ind]['type'] == $task['type'] ) {
|
176 |
+
$ind++;
|
177 |
+
}
|
178 |
+
|
179 |
+
return $this->append_after( $task, $ind );
|
180 |
+
}
|
181 |
+
|
182 |
+
public function append_after( $task, $index ) {
|
183 |
+
array_splice( $this->_tasks, $index, 0, array( $task ) );
|
184 |
+
|
185 |
+
return $index;
|
186 |
+
}
|
187 |
|
188 |
public function append_after_type( $task ) {
|
189 |
$ind = $this->_get_current_task();
|
194 |
$ind++;
|
195 |
}
|
196 |
|
197 |
+
return $this->append_after( $task, $ind );
|
198 |
}
|
199 |
|
200 |
public function has_begun()
|
217 |
|
218 |
$categories = get_option( self::OPTION_CATEGORIES, array() );
|
219 |
|
220 |
+
return @$categories[$woo_category_id];
|
221 |
}
|
222 |
|
223 |
public function save_ecwid_category( $woo_category_id, $ecwid_category_id )
|
251 |
|
252 |
protected function _build_tasks()
|
253 |
{
|
254 |
+
$this->append_task(
|
255 |
Ecwid_Importer_Task_Main::build( array() )
|
256 |
);
|
257 |
}
|
311 |
if ( self::count_ecwid_demo_products() > 0 && self::count_ecwid_demo_products() == self::count_ecwid_products() ) {
|
312 |
$this->_set_setting( self::SETTING_DELETE_DEMO, true );
|
313 |
}
|
314 |
+
|
315 |
+
$this->_set_setting( self::SETTING_UPDATE_BY_SKU, true );
|
316 |
}
|
317 |
|
318 |
protected static function _get_woo_categories( $args ) {
|
includes/importer/importer.php
CHANGED
@@ -1,5 +1,7 @@
|
|
1 |
<?php
|
2 |
|
|
|
|
|
3 |
if (version_compare( phpversion(), '5.6', '>=' ) ) {
|
4 |
$oauth = new Ecwid_OAuth();
|
5 |
|
1 |
<?php
|
2 |
|
3 |
+
|
4 |
+
|
5 |
if (version_compare( phpversion(), '5.6', '>=' ) ) {
|
6 |
$oauth = new Ecwid_OAuth();
|
7 |
|
includes/importer/task/class-ecwid-importer-task-create-category.php
ADDED
@@ -0,0 +1,56 @@
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
1 |
+
<?php
|
2 |
+
|
3 |
+
class Ecwid_Importer_Task_Create_Category extends Ecwid_Importer_Task
|
4 |
+
{
|
5 |
+
public static $type = 'create_category';
|
6 |
+
|
7 |
+
public function execute( Ecwid_Importer $exporter, array $category_data ) {
|
8 |
+
$api = new Ecwid_Api_V3();
|
9 |
+
|
10 |
+
$category = get_term_by( 'id', $category_data['woo_id'], 'product_cat' );
|
11 |
+
$data = array(
|
12 |
+
'name' => html_entity_decode( $category->name ),
|
13 |
+
'parentId' => $exporter->get_ecwid_category_id( $category->parent ),
|
14 |
+
'description' => $category->description
|
15 |
+
);
|
16 |
+
|
17 |
+
$ecwid_category_id = get_term_meta( $category_data['woo_id'], 'ecwid_category_id', true );
|
18 |
+
|
19 |
+
$result = false;
|
20 |
+
|
21 |
+
if ( $ecwid_category_id ) {
|
22 |
+
$result = $api->update_category( $data, $ecwid_category_id );
|
23 |
+
|
24 |
+
if ( $this->_is_api_result_error( $result ) ) {
|
25 |
+
$ecwid_category_id = null;
|
26 |
+
};
|
27 |
+
}
|
28 |
+
|
29 |
+
if ( !$ecwid_category_id ) {
|
30 |
+
$result = $api->create_category(
|
31 |
+
$data
|
32 |
+
);
|
33 |
+
|
34 |
+
if ( $result['response']['code'] == 200 ) {
|
35 |
+
$result_object = json_decode( $result['body'] );
|
36 |
+
$ecwid_category_id = $result_object->id;
|
37 |
+
}
|
38 |
+
}
|
39 |
+
|
40 |
+
$return = self::_process_api_result( $result, $data );
|
41 |
+
|
42 |
+
if ( $return['status'] == self::STATUS_SUCCESS ) {
|
43 |
+
$exporter->save_ecwid_category( $category_data['woo_id'], $ecwid_category_id );
|
44 |
+
update_term_meta( $category_data['woo_id'], 'ecwid_category_id', $ecwid_category_id );
|
45 |
+
}
|
46 |
+
|
47 |
+
return $return;
|
48 |
+
}
|
49 |
+
|
50 |
+
public static function build( array $data ) {
|
51 |
+
return array(
|
52 |
+
'type' => self::$type,
|
53 |
+
'woo_id' => $data['woo_id']
|
54 |
+
);
|
55 |
+
}
|
56 |
+
}
|
includes/importer/task/class-ecwid-importer-task-create-product-variation.php
ADDED
@@ -0,0 +1,79 @@
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
1 |
+
<?php
|
2 |
+
|
3 |
+
class Ecwid_Importer_Task_Create_Product_Variation extends Ecwid_Importer_Task
|
4 |
+
{
|
5 |
+
public static $type = 'create_variation';
|
6 |
+
|
7 |
+
public function execute( Ecwid_Importer $exporter, array $data ) {
|
8 |
+
$api = new Ecwid_Api_V3();
|
9 |
+
|
10 |
+
$p = wc_get_product( $data['woo_id'] );
|
11 |
+
$attributes = $p->get_attributes();
|
12 |
+
$vars = $p->get_available_variations();
|
13 |
+
|
14 |
+
$variation_data = array(
|
15 |
+
'productId' => $exporter->get_ecwid_product_id( $data['woo_id'] ),
|
16 |
+
'options' => array()
|
17 |
+
);
|
18 |
+
|
19 |
+
foreach ( $vars as $var ) {
|
20 |
+
if ( $var['variation_id'] != $data['var_id'] ) {
|
21 |
+
continue;
|
22 |
+
}
|
23 |
+
|
24 |
+
foreach ($attributes as $internal_name => $attribute) {
|
25 |
+
$tax_attribute = $attribute->get_taxonomy_object();
|
26 |
+
|
27 |
+
$name = '';
|
28 |
+
if ( $tax_attribute ) {
|
29 |
+
$name = $tax_attribute->attribute_label;
|
30 |
+
} else {
|
31 |
+
$name = $attribute->get_name();
|
32 |
+
}
|
33 |
+
|
34 |
+
$value = $var['attributes']['attribute_' . strtolower($internal_name)];
|
35 |
+
|
36 |
+
$variation_data['options'][] = array(
|
37 |
+
'name' => $name,
|
38 |
+
'value' => $value
|
39 |
+
);
|
40 |
+
}
|
41 |
+
|
42 |
+
$variation_data['price'] = $var['display_price'];
|
43 |
+
if ($var['weight']) {
|
44 |
+
$variation_data['weight'] = $var['weight'];
|
45 |
+
}
|
46 |
+
if ($var['max_qty']) {
|
47 |
+
$variation_data['quantity'] = $var['max_qty'];
|
48 |
+
}
|
49 |
+
|
50 |
+
if ( $var['sku'] != $p->get_sku() ) {
|
51 |
+
$variation_data['sku'] = $var['sku'];
|
52 |
+
}
|
53 |
+
|
54 |
+
break;
|
55 |
+
}
|
56 |
+
|
57 |
+
$result = $api->create_product_variation(
|
58 |
+
$variation_data
|
59 |
+
);
|
60 |
+
|
61 |
+
$return = self::_process_api_result( $result, $data );
|
62 |
+
|
63 |
+
if ( $return['status'] == self::STATUS_SUCCESS ) {
|
64 |
+
$result_object = json_decode( $result['body'] );
|
65 |
+
|
66 |
+
update_post_meta( $data['var_id'], '_ecwid_variation_id', $result_object->id );
|
67 |
+
}
|
68 |
+
|
69 |
+
return $return;
|
70 |
+
}
|
71 |
+
|
72 |
+
public static function build( array $data ) {
|
73 |
+
return array(
|
74 |
+
'type' => self::$type,
|
75 |
+
'woo_id' => $data['woo_id'],
|
76 |
+
'var_id' => $data['var_id']
|
77 |
+
);
|
78 |
+
}
|
79 |
+
}
|
includes/importer/task/class-ecwid-importer-task-create-product.php
ADDED
@@ -0,0 +1,140 @@
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
1 |
+
<?php
|
2 |
+
|
3 |
+
class Ecwid_Importer_Task_Create_Product extends Ecwid_Importer_Task
|
4 |
+
{
|
5 |
+
public static $type = 'create_product';
|
6 |
+
|
7 |
+
const WC_PRODUCT_TYPE_VARIABLE = 'variable';
|
8 |
+
|
9 |
+
public function execute( Ecwid_Importer $exporter, array $product_data ) {
|
10 |
+
|
11 |
+
$api = new Ecwid_Api_V3( );
|
12 |
+
|
13 |
+
$woo_id = $product_data['woo_id'];
|
14 |
+
|
15 |
+
$post = get_post( $woo_id );
|
16 |
+
$product = wc_get_product( $woo_id );
|
17 |
+
|
18 |
+
$data = array(
|
19 |
+
'name' => $post->post_title,
|
20 |
+
'price' => get_post_meta( $woo_id, '_regular_price', true ),
|
21 |
+
'description' => $product->get_description(),
|
22 |
+
'isShippingRequired' => get_post_meta( $woo_id, '_virtual', true ) != 'yes',
|
23 |
+
'categoryIds' => array(),
|
24 |
+
'showOnFrontpage' => (int) $product->get_featured()
|
25 |
+
);
|
26 |
+
|
27 |
+
$meta = get_post_meta( $woo_id, '_sku', true );
|
28 |
+
if ( !empty( $meta ) ) {
|
29 |
+
$data['sku'] = get_post_meta( $woo_id, '_sku', true );
|
30 |
+
}
|
31 |
+
|
32 |
+
if ( get_post_meta( $woo_id, '_manage_stock', true ) == 'yes' ) {
|
33 |
+
$data['unlimited'] = false;
|
34 |
+
$data['quantity'] = intval( get_post_meta( $woo_id, '_stock', true ) );
|
35 |
+
} else {
|
36 |
+
$data['unlimited'] = true;
|
37 |
+
}
|
38 |
+
|
39 |
+
if ($product->get_type() == self::WC_PRODUCT_TYPE_VARIABLE ) {
|
40 |
+
$data = array_merge( $data, $this->_get_variable_product_data( $woo_id ) );
|
41 |
+
}
|
42 |
+
|
43 |
+
$data['price'] = floatval( $data['price'] );
|
44 |
+
|
45 |
+
$categories = get_the_terms( $woo_id, 'product_cat' );
|
46 |
+
|
47 |
+
if ( $categories ) foreach ( $categories as $category ) {
|
48 |
+
$category_id = $exporter->get_ecwid_category_id( $category->term_id );
|
49 |
+
|
50 |
+
if ( $category_id ) {
|
51 |
+
$data['categoryIds'][] = $category_id;
|
52 |
+
}
|
53 |
+
}
|
54 |
+
if ( empty( $data['categoryIds'] ) ) {
|
55 |
+
unset( $data['categoryIds'] );
|
56 |
+
}
|
57 |
+
|
58 |
+
$ecwid_product_id = null;
|
59 |
+
$result = null;
|
60 |
+
$ecwid_id = null;
|
61 |
+
|
62 |
+
if ( $exporter->get_setting( Ecwid_Importer::SETTING_UPDATE_BY_SKU ) ) {
|
63 |
+
$products = $api->get_products( array( 'sku' => $data['sku'] ) );
|
64 |
+
|
65 |
+
if ( $products->total > 0 ) {
|
66 |
+
$ecwid_id = $products->items[0]->id;
|
67 |
+
$result = $api->update_product( $data, $ecwid_id );
|
68 |
+
$exporter->save_ecwid_product_id( $woo_id, $ecwid_id );
|
69 |
+
}
|
70 |
+
}
|
71 |
+
|
72 |
+
if ( !$result ) {
|
73 |
+
$result = $api->create_product( $data );
|
74 |
+
|
75 |
+
if ( !$this->_is_api_result_error($result) ) {
|
76 |
+
$result_object = json_decode( $result['body'] );
|
77 |
+
$ecwid_product_id = $result_object->id;
|
78 |
+
}
|
79 |
+
}
|
80 |
+
|
81 |
+
$return = $this->_process_api_result( $result, $data );
|
82 |
+
|
83 |
+
if ( $return['status'] == self::STATUS_SUCCESS ) {
|
84 |
+
$result_object = json_decode( $result['body'] );
|
85 |
+
|
86 |
+
update_post_meta( $woo_id, '_ecwid_product_id', $ecwid_id ? $ecwid_id : $result_object->id );
|
87 |
+
$exporter->save_ecwid_product_id( $woo_id, $ecwid_id ? $ecwid_id : $result_object->id );
|
88 |
+
}
|
89 |
+
|
90 |
+
return $return;
|
91 |
+
}
|
92 |
+
|
93 |
+
public function _get_variable_product_data( $id )
|
94 |
+
{
|
95 |
+
$result = array();
|
96 |
+
|
97 |
+
$product = new WC_Product_Variable( $id );
|
98 |
+
$result['price'] = $product->get_variation_price();
|
99 |
+
|
100 |
+
$attributes = $product->get_variation_attributes();
|
101 |
+
if ( $attributes && is_array( $attributes ) && count( $attributes ) > 0 ) {
|
102 |
+
|
103 |
+
$default_attributes = $product->get_default_attributes();
|
104 |
+
$result['options'] = array();
|
105 |
+
foreach ( $attributes as $name => $attribute ) {
|
106 |
+
|
107 |
+
$atts = $product->get_attributes();
|
108 |
+
$tax_attribute = $atts[strtolower($name)]->get_taxonomy_object();
|
109 |
+
|
110 |
+
if ($tax_attribute) {
|
111 |
+
$name = $tax_attribute->attribute_label;
|
112 |
+
}
|
113 |
+
|
114 |
+
$option = array( 'type' => 'SELECT', 'name' => $name, 'required' => true, 'choices' => array() );
|
115 |
+
foreach ( $attribute as $option_name ) {
|
116 |
+
$choice = array( 'text' => $option_name, 'priceModifier' => 0, 'priceModifierType' => 'ABSOLUTE' );
|
117 |
+
$option['choices'][] = $choice;
|
118 |
+
}
|
119 |
+
if ( @$default_attributes[$name] ) {
|
120 |
+
$ind = array_search( $default_attributes[$name], $attribute );
|
121 |
+
|
122 |
+
if ( $ind !== false ) {
|
123 |
+
$option['defaultChoice'] = $ind;
|
124 |
+
}
|
125 |
+
}
|
126 |
+
|
127 |
+
$result['options'][] = $option;
|
128 |
+
}
|
129 |
+
}
|
130 |
+
|
131 |
+
return $result;
|
132 |
+
}
|
133 |
+
|
134 |
+
public static function build( array $data ) {
|
135 |
+
return array(
|
136 |
+
'type' => self::$type,
|
137 |
+
'woo_id' => $data['woo_id']
|
138 |
+
);
|
139 |
+
}
|
140 |
+
}
|
includes/importer/task/class-ecwid-importer-task-delete-products.php
ADDED
@@ -0,0 +1,23 @@
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
1 |
+
<?php
|
2 |
+
|
3 |
+
class Ecwid_Importer_Task_Delete_Products extends Ecwid_Importer_Task
|
4 |
+
{
|
5 |
+
public static $type = 'delete_products';
|
6 |
+
|
7 |
+
public function execute( Ecwid_Importer $exporter, array $data ) {
|
8 |
+
$api = new Ecwid_Api_V3();
|
9 |
+
|
10 |
+
$ids = $data['ids'];
|
11 |
+
|
12 |
+
$result = $api->delete_products( $ids );
|
13 |
+
|
14 |
+
return self::_process_api_result( $result, $data );
|
15 |
+
}
|
16 |
+
|
17 |
+
public static function build( array $ids ) {
|
18 |
+
return array(
|
19 |
+
'type' => self::$type,
|
20 |
+
'ids' => $ids
|
21 |
+
);
|
22 |
+
}
|
23 |
+
}
|
includes/importer/task/class-ecwid-importer-task-import-woo-categories.php
CHANGED
@@ -10,14 +10,22 @@ class Ecwid_Importer_Task_Import_Woo_Categories extends Ecwid_Importer_Task {
|
|
10 |
return $this->_result_nothing();
|
11 |
}
|
12 |
$categories = $importer->gather_categories();
|
|
|
|
|
|
|
|
|
|
|
|
|
13 |
|
14 |
foreach ( @$categories as $category ) {
|
15 |
-
$tasks[] = Ecwid_Importer_Task_Create_Category::build( $category );
|
16 |
if ( $category['has_image'] ) {
|
17 |
-
$
|
|
|
|
|
|
|
18 |
}
|
19 |
}
|
20 |
-
|
21 |
return $this->_result_success();
|
22 |
}
|
23 |
}
|
10 |
return $this->_result_nothing();
|
11 |
}
|
12 |
$categories = $importer->gather_categories();
|
13 |
+
|
14 |
+
foreach ( @$categories as $category ) {
|
15 |
+
$index = $importer->append_child(
|
16 |
+
Ecwid_Importer_Task_Create_Category::build( $category )
|
17 |
+
);
|
18 |
+
}
|
19 |
|
20 |
foreach ( @$categories as $category ) {
|
|
|
21 |
if ( $category['has_image'] ) {
|
22 |
+
$importer->append_after(
|
23 |
+
Ecwid_Importer_Task_Upload_Category_Image::build( $category ),
|
24 |
+
$index++
|
25 |
+
);
|
26 |
}
|
27 |
}
|
28 |
+
|
29 |
return $this->_result_success();
|
30 |
}
|
31 |
}
|
includes/importer/task/class-ecwid-importer-task-import-woo-product.php
CHANGED
@@ -12,18 +12,25 @@ class Ecwid_Importer_Task_Import_Woo_Product extends Ecwid_Importer_Task {
|
|
12 |
}
|
13 |
|
14 |
public function execute( Ecwid_Importer $importer, array $product ) {
|
15 |
-
/*
|
16 |
-
$importer->append_after_current(
|
17 |
-
Ecwid_Importer_Task_Create_Product::build( $product )
|
18 |
-
);
|
19 |
|
20 |
-
$
|
21 |
-
|
22 |
-
|
23 |
-
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
24 |
);
|
25 |
}
|
26 |
-
|
27 |
$p = wc_get_product( $product['woo_id'] );
|
28 |
|
29 |
if ( $p instanceof WC_Product_Variable ) {
|
@@ -32,7 +39,7 @@ class Ecwid_Importer_Task_Import_Woo_Product extends Ecwid_Importer_Task {
|
|
32 |
|
33 |
foreach ( $vars as $var ) {
|
34 |
|
35 |
-
$importer->
|
36 |
Ecwid_Importer_Task_Create_Product_Variation::build(
|
37 |
array(
|
38 |
'woo_id' => $product['woo_id'],
|
@@ -42,7 +49,7 @@ class Ecwid_Importer_Task_Import_Woo_Product extends Ecwid_Importer_Task {
|
|
42 |
);
|
43 |
|
44 |
if ( $var['image_id'] && $var['image_id'] != $p->get_image_id() ) {
|
45 |
-
$importer->
|
46 |
Ecwid_Importer_Task_Upload_Product_Variation_Image::build(
|
47 |
array(
|
48 |
'product_id' => $product['woo_id'],
|
@@ -56,7 +63,7 @@ class Ecwid_Importer_Task_Import_Woo_Product extends Ecwid_Importer_Task {
|
|
56 |
|
57 |
if ( $p->get_gallery_image_ids() ) {
|
58 |
foreach ( $p->get_gallery_image_ids() as $image ) {
|
59 |
-
$importer->
|
60 |
Ecwid_Importer_Task_Upload_Product_Gallery_Image::build(
|
61 |
array(
|
62 |
'product_id' => $product['woo_id'],
|
12 |
}
|
13 |
|
14 |
public function execute( Ecwid_Importer $importer, array $product ) {
|
|
|
|
|
|
|
|
|
15 |
|
16 |
+
$importer->append_task(
|
17 |
+
Ecwid_Importer_Task_Create_Product::build(
|
18 |
+
array(
|
19 |
+
'woo_id' => $product['woo_id']
|
20 |
+
)
|
21 |
+
)
|
22 |
+
);
|
23 |
+
|
24 |
+
if ( get_post_thumbnail_id( $product['woo_id'] ) ) {
|
25 |
+
$importer->append_task(
|
26 |
+
Ecwid_Importer_Task_Upload_Product_Image::build(
|
27 |
+
array(
|
28 |
+
'woo_id' => $product['woo_id']
|
29 |
+
)
|
30 |
+
)
|
31 |
);
|
32 |
}
|
33 |
+
|
34 |
$p = wc_get_product( $product['woo_id'] );
|
35 |
|
36 |
if ( $p instanceof WC_Product_Variable ) {
|
39 |
|
40 |
foreach ( $vars as $var ) {
|
41 |
|
42 |
+
$importer->append_task(
|
43 |
Ecwid_Importer_Task_Create_Product_Variation::build(
|
44 |
array(
|
45 |
'woo_id' => $product['woo_id'],
|
49 |
);
|
50 |
|
51 |
if ( $var['image_id'] && $var['image_id'] != $p->get_image_id() ) {
|
52 |
+
$importer->append_task(
|
53 |
Ecwid_Importer_Task_Upload_Product_Variation_Image::build(
|
54 |
array(
|
55 |
'product_id' => $product['woo_id'],
|
63 |
|
64 |
if ( $p->get_gallery_image_ids() ) {
|
65 |
foreach ( $p->get_gallery_image_ids() as $image ) {
|
66 |
+
$importer->append_task(
|
67 |
Ecwid_Importer_Task_Upload_Product_Gallery_Image::build(
|
68 |
array(
|
69 |
'product_id' => $product['woo_id'],
|
includes/importer/task/class-ecwid-importer-task-import-woo-products-batch.php
CHANGED
@@ -17,7 +17,7 @@ class Ecwid_Importer_Task_Import_Woo_Products_Batch extends Ecwid_Importer_Task
|
|
17 |
|
18 |
if ( $products ) {
|
19 |
foreach ( $products as $id ) {
|
20 |
-
$importer->
|
21 |
Ecwid_Importer_Task_Import_Woo_Product::build(
|
22 |
array( 'id' => $id )
|
23 |
)
|
17 |
|
18 |
if ( $products ) {
|
19 |
foreach ( $products as $id ) {
|
20 |
+
$importer->append_child(
|
21 |
Ecwid_Importer_Task_Import_Woo_Product::build(
|
22 |
array( 'id' => $id )
|
23 |
)
|
includes/importer/task/class-ecwid-importer-task-import-woo-products.php
CHANGED
@@ -7,18 +7,13 @@ class Ecwid_Importer_Task_Import_Woo_Products extends Ecwid_Importer_Task {
|
|
7 |
const BATCH_SIZE = 50;
|
8 |
|
9 |
public function execute( Ecwid_Importer $importer, array $data ) {
|
10 |
-
|
11 |
-
|
12 |
-
$products = new WP_Query( array(
|
13 |
-
'post_type' => self::WC_POST_TYPE_PRODUCT
|
14 |
-
) );
|
15 |
-
|
16 |
-
$count = $products->post_count;
|
17 |
|
18 |
$ind = 0;
|
19 |
|
20 |
while ( $ind * self::BATCH_SIZE < $count ) {
|
21 |
-
$importer->
|
22 |
Ecwid_Importer_Task_Import_Woo_Products_Batch::build(
|
23 |
array(
|
24 |
'start' => $ind * self::BATCH_SIZE,
|
7 |
const BATCH_SIZE = 50;
|
8 |
|
9 |
public function execute( Ecwid_Importer $importer, array $data ) {
|
10 |
+
|
11 |
+
$count = wp_count_posts( self::WC_POST_TYPE_PRODUCT )->publish;
|
|
|
|
|
|
|
|
|
|
|
12 |
|
13 |
$ind = 0;
|
14 |
|
15 |
while ( $ind * self::BATCH_SIZE < $count ) {
|
16 |
+
$importer->append_task(
|
17 |
Ecwid_Importer_Task_Import_Woo_Products_Batch::build(
|
18 |
array(
|
19 |
'start' => $ind * self::BATCH_SIZE,
|
includes/importer/task/class-ecwid-importer-task-main.php
CHANGED
@@ -7,12 +7,12 @@ class Ecwid_Importer_Task_Main extends Ecwid_Importer_Task {
|
|
7 |
public function execute( Ecwid_Importer $importer, array $data ) {
|
8 |
|
9 |
if ( $importer->get_setting( Ecwid_Importer::SETTING_DELETE_DEMO ) && Ecwid_Importer::count_ecwid_demo_products() ) {
|
10 |
-
$importer->
|
11 |
Ecwid_Importer_Task_Delete_Products::build( Ecwid_Importer::get_ecwid_demo_products() )
|
12 |
);
|
13 |
}
|
14 |
|
15 |
-
$importer->
|
16 |
-
$importer->
|
17 |
}
|
18 |
}
|
7 |
public function execute( Ecwid_Importer $importer, array $data ) {
|
8 |
|
9 |
if ( $importer->get_setting( Ecwid_Importer::SETTING_DELETE_DEMO ) && Ecwid_Importer::count_ecwid_demo_products() ) {
|
10 |
+
$importer->append_task(
|
11 |
Ecwid_Importer_Task_Delete_Products::build( Ecwid_Importer::get_ecwid_demo_products() )
|
12 |
);
|
13 |
}
|
14 |
|
15 |
+
$importer->append_task( Ecwid_Importer_Task_Import_Woo_Categories::build( array() ) );
|
16 |
+
$importer->append_task( Ecwid_Importer_Task_Import_Woo_Products::build( array() ) );
|
17 |
}
|
18 |
}
|
includes/importer/task/class-ecwid-importer-task-upload-category-image.php
ADDED
@@ -0,0 +1,41 @@
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
1 |
+
<?php
|
2 |
+
|
3 |
+
class Ecwid_Importer_Task_Upload_Category_Image extends Ecwid_Importer_Task
|
4 |
+
{
|
5 |
+
public static $type = 'upload_category_image';
|
6 |
+
|
7 |
+
public function execute( Ecwid_Importer $exporter, array $category_data ) {
|
8 |
+
$api = new Ecwid_Api_V3();
|
9 |
+
|
10 |
+
$woo_id = $category_data['woo_id'];
|
11 |
+
|
12 |
+
// get the thumbnail id using the queried category term_id
|
13 |
+
$thumbnail_id = get_term_meta( $woo_id, 'thumbnail_id', true );
|
14 |
+
$file = get_attached_file ( $thumbnail_id );
|
15 |
+
|
16 |
+
$category_id = $exporter->get_ecwid_category_id( $woo_id );
|
17 |
+
if ( !$category_id ) {
|
18 |
+
return array(
|
19 |
+
'status' => 'error',
|
20 |
+
'data' => 'skipped',
|
21 |
+
'message' => 'parent category was not imported'
|
22 |
+
);
|
23 |
+
}
|
24 |
+
|
25 |
+
$data = array(
|
26 |
+
'categoryId' => $category_id,
|
27 |
+
'data' => file_get_contents( $file )
|
28 |
+
);
|
29 |
+
|
30 |
+
$result = $api->upload_category_image( $data );
|
31 |
+
|
32 |
+
return self::_process_api_result( $result, $data );
|
33 |
+
}
|
34 |
+
|
35 |
+
public static function build( array $data ) {
|
36 |
+
return array(
|
37 |
+
'type' => self::$type,
|
38 |
+
'woo_id' => $data['woo_id']
|
39 |
+
);
|
40 |
+
}
|
41 |
+
}
|
includes/importer/task/class-ecwid-importer-task-upload-product-gallery-image.php
ADDED
@@ -0,0 +1,47 @@
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
1 |
+
<?php
|
2 |
+
|
3 |
+
class Ecwid_Importer_Task_Upload_Product_Gallery_Image extends Ecwid_Importer_Task
|
4 |
+
{
|
5 |
+
public static $type = 'upload_product_gallery_image';
|
6 |
+
|
7 |
+
public function execute( Ecwid_Importer $exporter, array $product_data ) {
|
8 |
+
$api = new Ecwid_Api_V3();
|
9 |
+
|
10 |
+
$file = get_attached_file( $product_data['image_id'] );
|
11 |
+
|
12 |
+
$product_id = get_post_meta( $product_data['product_id'], '_ecwid_product_id', true );
|
13 |
+
|
14 |
+
if ( !$product_id ) {
|
15 |
+
return array(
|
16 |
+
'status' => 'error',
|
17 |
+
'data' => 'skipped',
|
18 |
+
'message' => 'Parent product was not imported'
|
19 |
+
);
|
20 |
+
}
|
21 |
+
|
22 |
+
if ( !$file || !file_exists( $file ) || !is_readable( $file ) ) {
|
23 |
+
return array(
|
24 |
+
'status' => 'error',
|
25 |
+
'data' => 'skipped',
|
26 |
+
'message' => 'File not found for product#' . $product_data['product_id'] . ' image ' . $product_data['image_id']
|
27 |
+
);
|
28 |
+
}
|
29 |
+
|
30 |
+
$data = array(
|
31 |
+
'productId' => $product_id,
|
32 |
+
'data' => file_get_contents( $file )
|
33 |
+
);
|
34 |
+
|
35 |
+
$result = $api->upload_product_gallery_image( $data );
|
36 |
+
|
37 |
+
return self::_process_api_result( $result, $data );
|
38 |
+
}
|
39 |
+
|
40 |
+
public static function build( array $data ) {
|
41 |
+
return array(
|
42 |
+
'type' => self::$type,
|
43 |
+
'product_id' => $data['product_id'],
|
44 |
+
'image_id' => $data['image_id']
|
45 |
+
);
|
46 |
+
}
|
47 |
+
}
|
includes/importer/task/class-ecwid-importer-task-upload-product-image.php
ADDED
@@ -0,0 +1,37 @@
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
1 |
+
<?php
|
2 |
+
|
3 |
+
class Ecwid_Importer_Task_Upload_Product_Image extends Ecwid_Importer_Task
|
4 |
+
{
|
5 |
+
public static $type = 'upload_product_image';
|
6 |
+
|
7 |
+
public function execute( Ecwid_Importer $exporter, array $product_data ) {
|
8 |
+
$api = new Ecwid_Api_V3();
|
9 |
+
|
10 |
+
$file = get_attached_file ( get_post_thumbnail_id( $product_data['woo_id'] ) );
|
11 |
+
|
12 |
+
$product_id = $exporter->get_ecwid_product_id( $product_data['woo_id'] );
|
13 |
+
if ( !$product_id ) {
|
14 |
+
return array(
|
15 |
+
'status' => 'error',
|
16 |
+
'data' => 'skipped',
|
17 |
+
'message' => 'Parent product was not imported for product #' . $product_data['woo_id']
|
18 |
+
);
|
19 |
+
}
|
20 |
+
|
21 |
+
$data = array(
|
22 |
+
'productId' => $product_id,
|
23 |
+
'data' => file_get_contents( $file )
|
24 |
+
);
|
25 |
+
|
26 |
+
$result = $api->upload_product_image( $data );
|
27 |
+
|
28 |
+
return self::_process_api_result( $result, $data );
|
29 |
+
}
|
30 |
+
|
31 |
+
public static function build( array $data ) {
|
32 |
+
return array(
|
33 |
+
'type' => self::$type,
|
34 |
+
'woo_id' => $data['woo_id']
|
35 |
+
);
|
36 |
+
}
|
37 |
+
}
|
includes/importer/task/class-ecwid-importer-task-upload-product-variation-image.php
ADDED
@@ -0,0 +1,49 @@
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
1 |
+
<?php
|
2 |
+
|
3 |
+
class Ecwid_Importer_Task_Upload_Product_Variation_Image extends Ecwid_Importer_Task
|
4 |
+
{
|
5 |
+
public static $type = 'upload_product_variation_image';
|
6 |
+
|
7 |
+
public function execute( Ecwid_Importer $exporter, array $data ) {
|
8 |
+
$api = new Ecwid_Api_V3();
|
9 |
+
|
10 |
+
$product_id = get_post_meta( $data['product_id'], '_ecwid_product_id', true );
|
11 |
+
$variation_id = get_post_meta( $data['variation_id'], '_ecwid_variation_id', true );
|
12 |
+
|
13 |
+
$file = get_attached_file ( get_post_thumbnail_id( $data['variation_id'] ) );
|
14 |
+
|
15 |
+
if ( !$product_id ) {
|
16 |
+
return array(
|
17 |
+
'status' => 'error',
|
18 |
+
'data' => 'skipped',
|
19 |
+
'message' => 'parent product was not imported. data:' . var_export($data, true)
|
20 |
+
);
|
21 |
+
}
|
22 |
+
|
23 |
+
if ( !$variation_id ) {
|
24 |
+
return array(
|
25 |
+
'status' => 'error',
|
26 |
+
'data' => 'skipped',
|
27 |
+
'message' => 'parent variation was not imported. data:' . var_export($data, true)
|
28 |
+
);
|
29 |
+
}
|
30 |
+
|
31 |
+
$data = array(
|
32 |
+
'productId' => $product_id,
|
33 |
+
'variationId' => $variation_id,
|
34 |
+
'data' => file_get_contents( $file )
|
35 |
+
);
|
36 |
+
|
37 |
+
$result = $api->upload_product_variation_image( $data );
|
38 |
+
|
39 |
+
return self::_process_api_result( $result, $data );
|
40 |
+
}
|
41 |
+
|
42 |
+
public static function build( array $data ) {
|
43 |
+
return array(
|
44 |
+
'type' => self::$type,
|
45 |
+
'product_id' => $data['product_id'],
|
46 |
+
'variation_id' => $data['variation_id']
|
47 |
+
);
|
48 |
+
}
|
49 |
+
}
|
includes/integrations/class-ecwid-integration-aiosp.php
CHANGED
@@ -15,6 +15,22 @@ class Ecwid_Integration_All_In_One_SEO_Pack
|
|
15 |
|
16 |
add_filter( 'aiosp_sitemap_extra', array( $this, 'aiosp_hook_sitemap_extra' ) );
|
17 |
add_filter( 'aiosp_sitemap_custom_ecwid', array( $this, 'aiosp_hook_sitemap_content') );
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
18 |
}
|
19 |
|
20 |
// Disable titles, descriptions and canonical link on ecwid _escaped_fragment_ pages
|
15 |
|
16 |
add_filter( 'aiosp_sitemap_extra', array( $this, 'aiosp_hook_sitemap_extra' ) );
|
17 |
add_filter( 'aiosp_sitemap_custom_ecwid', array( $this, 'aiosp_hook_sitemap_content') );
|
18 |
+
add_filter( 'aiosp_sitemap_prio_item_filter', array($this, 'aiosp_hook_sitemap_prio_item_filter'), 10, 3 );
|
19 |
+
}
|
20 |
+
|
21 |
+
public function aiosp_hook_sitemap_prio_item_filter($pr_info, $post, $args)
|
22 |
+
{
|
23 |
+
$post_type = (string)$post->post_type;
|
24 |
+
|
25 |
+
if( $post_type == 'ec-product' ) {
|
26 |
+
return false;
|
27 |
+
}
|
28 |
+
|
29 |
+
if( $post_type == 'attachment' && strpos($pr_info['loc'], Ecwid_Store_Page::get_store_url()) === 0 ){
|
30 |
+
return false;
|
31 |
+
}
|
32 |
+
|
33 |
+
return $pr_info;
|
34 |
}
|
35 |
|
36 |
// Disable titles, descriptions and canonical link on ecwid _escaped_fragment_ pages
|
includes/integrations/class-ecwid-integration-gutenberg.php
CHANGED
@@ -35,7 +35,7 @@ class Ecwid_Integration_Gutenberg {
|
|
35 |
wp_enqueue_script( 'gutenberg-store' );
|
36 |
EcwidPlatform::enqueue_style( 'store-popup' );
|
37 |
}
|
38 |
-
|
39 |
public function block_categories( $categories ) {
|
40 |
return array_merge(
|
41 |
$categories,
|
@@ -334,6 +334,9 @@ JS;
|
|
334 |
*/
|
335 |
public static function get_blocks_on_page() {
|
336 |
$post = get_post();
|
|
|
|
|
|
|
337 |
if ( function_exists( 'gutenberg_parse_blocks' ) ) {
|
338 |
$blocks = gutenberg_parse_blocks( $post->post_content );
|
339 |
} else {
|
35 |
wp_enqueue_script( 'gutenberg-store' );
|
36 |
EcwidPlatform::enqueue_style( 'store-popup' );
|
37 |
}
|
38 |
+
|
39 |
public function block_categories( $categories ) {
|
40 |
return array_merge(
|
41 |
$categories,
|
334 |
*/
|
335 |
public static function get_blocks_on_page() {
|
336 |
$post = get_post();
|
337 |
+
|
338 |
+
if ( !$post ) return array();
|
339 |
+
|
340 |
if ( function_exists( 'gutenberg_parse_blocks' ) ) {
|
341 |
$blocks = gutenberg_parse_blocks( $post->post_content );
|
342 |
} else {
|
includes/integrations/class-ecwid-integration-wpseo.php
CHANGED
@@ -34,6 +34,48 @@ class Ecwid_Integration_WordPress_SEO_By_Yoast
|
|
34 |
}
|
35 |
|
36 |
add_filter( 'ecwid_title_separator', array( $this, 'get_title_separator' ) );
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
37 |
}
|
38 |
|
39 |
public function filter_og_tags( $tags )
|
34 |
}
|
35 |
|
36 |
add_filter( 'ecwid_title_separator', array( $this, 'get_title_separator' ) );
|
37 |
+
|
38 |
+
add_filter( 'wpseo_sitemap_url', array( $this, 'wpseo_hook_sitemap_url' ), 10, 2 );
|
39 |
+
add_action( 'init', array($this, 'clear_ecwid_sitemap_index') );
|
40 |
+
}
|
41 |
+
|
42 |
+
public function wpseo_hook_sitemap_url( $output, $url )
|
43 |
+
{
|
44 |
+
$type = get_query_var( 'sitemap' );
|
45 |
+
|
46 |
+
if( $type == 'ec-product') {
|
47 |
+
return false;
|
48 |
+
}
|
49 |
+
}
|
50 |
+
|
51 |
+
public function clear_ecwid_sitemap_index() {
|
52 |
+
|
53 |
+
if( strpos( $_SERVER['REQUEST_URI'], 'sitemap_index.xml' ) !== false ) {
|
54 |
+
ob_start();
|
55 |
+
add_action('shutdown', array($this, 'shutdown_hook_ecwid_sitemap_clear'), 0);
|
56 |
+
}
|
57 |
+
}
|
58 |
+
|
59 |
+
public function shutdown_hook_ecwid_sitemap_clear()
|
60 |
+
{
|
61 |
+
$output = ob_get_contents();
|
62 |
+
ob_end_clean();
|
63 |
+
|
64 |
+
libxml_use_internal_errors(true);
|
65 |
+
$xml = simplexml_load_string($output);
|
66 |
+
|
67 |
+
if($xml !== false) {
|
68 |
+
foreach ($xml->sitemap as $sitemap) {
|
69 |
+
if( strpos( (string) $sitemap->loc, 'ec-product') !== false ) {
|
70 |
+
$dom = dom_import_simplexml($sitemap);
|
71 |
+
$dom->parentNode->removeChild($dom);
|
72 |
+
}
|
73 |
+
}
|
74 |
+
|
75 |
+
echo $xml->asXML();
|
76 |
+
} else {
|
77 |
+
echo $output;
|
78 |
+
}
|
79 |
}
|
80 |
|
81 |
public function filter_og_tags( $tags )
|
includes/widgets/class-ecwid-widget-products-base.php
CHANGED
@@ -140,13 +140,7 @@ HTML;
|
|
140 |
foreach ($this->_get_form_fields() as $field) {
|
141 |
$name = $field['name'];
|
142 |
if ( $name == 'number_of_products' ) {
|
143 |
-
$
|
144 |
-
if ($num > $this->_max) {
|
145 |
-
$num = $this->_max;
|
146 |
-
} else if ($num < $this->_min) {
|
147 |
-
$num = $this->_default;
|
148 |
-
}
|
149 |
-
$instance[$name] = intval($num);
|
150 |
} else {
|
151 |
$instance[$name] = strip_tags(stripslashes($new_instance[$name]));
|
152 |
}
|
@@ -185,8 +179,14 @@ HTML;
|
|
185 |
}
|
186 |
}
|
187 |
|
188 |
-
function
|
189 |
-
|
|
|
|
|
|
|
|
|
|
|
|
|
190 |
}
|
191 |
|
192 |
protected function _get_form_fields()
|
140 |
foreach ($this->_get_form_fields() as $field) {
|
141 |
$name = $field['name'];
|
142 |
if ( $name == 'number_of_products' ) {
|
143 |
+
$instance[$name] = $this->_get_valid_number_of_products($new_instance['number_of_products']);
|
|
|
|
|
|
|
|
|
|
|
|
|
144 |
} else {
|
145 |
$instance[$name] = strip_tags(stripslashes($new_instance[$name]));
|
146 |
}
|
179 |
}
|
180 |
}
|
181 |
|
182 |
+
function _get_valid_number_of_products($num) {
|
183 |
+
$num = intval($num);
|
184 |
+
if ($num > $this->_max) {
|
185 |
+
$num = $this->_max;
|
186 |
+
} else if ($num < $this->_min) {
|
187 |
+
$num = $this->_default;
|
188 |
+
}
|
189 |
+
return $num;
|
190 |
}
|
191 |
|
192 |
protected function _get_form_fields()
|
includes/widgets/class-ecwid-widget-recently-viewed.php
CHANGED
@@ -47,23 +47,20 @@ class Ecwid_Widget_Recently_Viewed extends Ecwid_Widget_Products_List_Base {
|
|
47 |
}
|
48 |
|
49 |
if ($recently_viewed && isset($recently_viewed->products)) {
|
50 |
-
|
51 |
$to_load = array();
|
52 |
-
|
53 |
foreach ($recently_viewed->products as $product_data) {
|
54 |
$product = Ecwid_Product::get_without_loading($product_data->id);
|
55 |
if (!@$product->imageUrl) {
|
56 |
$to_load[] = $product_data->id;
|
57 |
}
|
58 |
}
|
59 |
-
|
60 |
if (!empty($to_load)) {
|
61 |
-
Ecwid_Product::
|
62 |
}
|
63 |
} else {
|
64 |
return null;
|
65 |
}
|
66 |
-
|
67 |
return array_reverse($recently_viewed->products);
|
68 |
}
|
69 |
|
47 |
}
|
48 |
|
49 |
if ($recently_viewed && isset($recently_viewed->products)) {
|
|
|
50 |
$to_load = array();
|
|
|
51 |
foreach ($recently_viewed->products as $product_data) {
|
52 |
$product = Ecwid_Product::get_without_loading($product_data->id);
|
53 |
if (!@$product->imageUrl) {
|
54 |
$to_load[] = $product_data->id;
|
55 |
}
|
56 |
}
|
|
|
57 |
if (!empty($to_load)) {
|
58 |
+
Ecwid_Product::preload_by_ids($to_load);
|
59 |
}
|
60 |
} else {
|
61 |
return null;
|
62 |
}
|
63 |
+
|
64 |
return array_reverse($recently_viewed->products);
|
65 |
}
|
66 |
|
index.php
ADDED
@@ -0,0 +1,4 @@
|
|
|
|
|
|
|
|
|
1 |
+
<?php
|
2 |
+
/**
|
3 |
+
* Nothing to see here.
|
4 |
+
*/
|
js/dynamic-title.js
ADDED
@@ -0,0 +1,22 @@
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
1 |
+
jQuery(document).ready(function() {
|
2 |
+
if ( jQuery( '.entry-title' ).length > 0 && typeof Ecwid !== 'undefined' ) {
|
3 |
+
Ecwid.OnPageLoaded.add(function(page) {
|
4 |
+
|
5 |
+
var el = jQuery( '.entry-title' ).eq(0);
|
6 |
+
if ( el.length === 0 ) return;
|
7 |
+
|
8 |
+
var isCategory = page.type === 'CATEGORY';
|
9 |
+
var isProduct = page.type === 'PRODUCT';
|
10 |
+
|
11 |
+
if ( !isCategory && !isProduct ) return;
|
12 |
+
|
13 |
+
var newTitle = jQuery('title').html();
|
14 |
+
|
15 |
+
if ( isCategory && page.categoryId === 0 || newTitle.length === 0 ) {
|
16 |
+
newTitle = ecwidOriginalTitle.title;
|
17 |
+
}
|
18 |
+
|
19 |
+
el.html( newTitle );
|
20 |
+
});
|
21 |
+
}
|
22 |
+
});
|
js/importer.js
CHANGED
@@ -66,10 +66,15 @@ jQuery(document).ready(function() {
|
|
66 |
jQuery(el).attr('onclick', 'return false').closest('label').addClass('readonly');
|
67 |
});
|
68 |
|
69 |
-
do_import = function () {
|
|
|
|
|
|
|
|
|
|
|
70 |
jQuery.ajax({
|
71 |
'url': ajaxurl,
|
72 |
-
'data':
|
73 |
'success': function (json) {
|
74 |
|
75 |
try {
|
@@ -134,7 +139,7 @@ jQuery(document).ready(function() {
|
|
134 |
});
|
135 |
};
|
136 |
|
137 |
-
do_import();
|
138 |
|
139 |
doImportComplete = function( status ) {
|
140 |
jQuery('#import-results-products').text(status.success.create_product || 0);
|
@@ -156,8 +161,6 @@ jQuery(document).ready(function() {
|
|
156 |
if (errorContent.length > 0) {
|
157 |
jQuery('.ecwid-importer .errors').show().find('pre').text(errorContent);
|
158 |
}
|
159 |
-
|
160 |
-
|
161 |
}
|
162 |
};
|
163 |
|
66 |
jQuery(el).attr('onclick', 'return false').closest('label').addClass('readonly');
|
67 |
});
|
68 |
|
69 |
+
do_import = function (start = null) {
|
70 |
+
|
71 |
+
var data = {'action': ecwid_importer.do_woo_import_action, settings: settings};
|
72 |
+
if (start) {
|
73 |
+
data.reset = 1
|
74 |
+
}
|
75 |
jQuery.ajax({
|
76 |
'url': ajaxurl,
|
77 |
+
'data': data,
|
78 |
'success': function (json) {
|
79 |
|
80 |
try {
|
139 |
});
|
140 |
};
|
141 |
|
142 |
+
do_import( true );
|
143 |
|
144 |
doImportComplete = function( status ) {
|
145 |
jQuery('#import-results-products').text(status.success.create_product || 0);
|
161 |
if (errorContent.length > 0) {
|
162 |
jQuery('.ecwid-importer .errors').show().find('pre').text(errorContent);
|
163 |
}
|
|
|
|
|
164 |
}
|
165 |
};
|
166 |
|
js/store-editor-common.js
CHANGED
@@ -37,4 +37,29 @@ function ecwid_get_store_shortcode(content) {
|
|
37 |
}
|
38 |
|
39 |
return found;
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
40 |
}
|
37 |
}
|
38 |
|
39 |
return found;
|
40 |
+
}
|
41 |
+
|
42 |
+
function ecwid_create_gutenberged_shortcode_string( shortcode ) {
|
43 |
+
|
44 |
+
if ( typeof shortcode == 'string' ) return shortcode;
|
45 |
+
|
46 |
+
return shortcode.string();
|
47 |
+
|
48 |
+
var result = '<!-- wp:ecwid/store-block ';
|
49 |
+
|
50 |
+
var attributes = {
|
51 |
+
default_category_id: shortcode.attrs.named.default_category_id,
|
52 |
+
show_categories: shortcode.attrs.named.widgets.indexOf('categories') !== -1,
|
53 |
+
show_search: shortcode.attrs.named.widgets.indexOf('search') !== -1
|
54 |
+
}
|
55 |
+
|
56 |
+
result += JSON.stringify(attributes);
|
57 |
+
|
58 |
+
result += ' -->';
|
59 |
+
|
60 |
+
result += shortcode.string();
|
61 |
+
|
62 |
+
result += '<!-- /wp:ecwid/store-block -->';
|
63 |
+
|
64 |
+
return result;
|
65 |
}
|
js/store-editor-mce.js
CHANGED
@@ -218,23 +218,38 @@ tinymce.PluginManager.add( 'ecwid', function( editor ) {
|
|
218 |
// Replace Read More/Next Page tags with images
|
219 |
editor.onBeforeSetContent.add( function( editor, e ) {
|
220 |
if ( e.content ) {
|
221 |
-
|
222 |
-
found = ecwid_get_store_shortcode(e.content);
|
223 |
|
224 |
if (!found) return;
|
225 |
|
|
|
|
|
|
|
226 |
var content = e.content;
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
227 |
|
228 |
var store = '<img height="200" width="100%" data-ecwid-shortcode="' + window.encodeURIComponent(found.content) + '" src="' + ecwid_store_svg + '" data-mce-placeholder="true" data-mce-resize="false" class="ecwid-store-editor mceItem">';
|
229 |
|
230 |
-
e.content = e.content.substr(0,
|
231 |
}
|
232 |
});
|
233 |
|
234 |
// Replace images with tags
|
235 |
editor.onPostProcess.add( function( editor, e ) {
|
236 |
|
237 |
-
|
238 |
|
239 |
return e.content = e.content.replace( /(<img [^>]*data-ecwid-shortcode=[^>]+>)/g, function( match, image ) {
|
240 |
|
218 |
// Replace Read More/Next Page tags with images
|
219 |
editor.onBeforeSetContent.add( function( editor, e ) {
|
220 |
if ( e.content ) {
|
221 |
+
|
222 |
+
var found = ecwid_get_store_shortcode(e.content);
|
223 |
|
224 |
if (!found) return;
|
225 |
|
226 |
+
var start = found.index;
|
227 |
+
var end = found.index + found.content.length;
|
228 |
+
|
229 |
var content = e.content;
|
230 |
+
|
231 |
+
var gutenStart = content.indexOf('<!-- wp:ecwid/store-block');
|
232 |
+
var gutenEnd = content.indexOf('<!-- /wp:ecwid/store-block -->') + '<!-- /wp:ecwid/store-block -->'.length;
|
233 |
+
|
234 |
+
|
235 |
+
if (gutenStart != -1 && gutenEnd != -1) {
|
236 |
+
var gutenberged = content.substr(gutenStart, gutenEnd);
|
237 |
+
if (gutenberged.indexOf(found.content) != -1) {
|
238 |
+
start = gutenStart;
|
239 |
+
end = gutenEnd;
|
240 |
+
}
|
241 |
+
}
|
242 |
|
243 |
var store = '<img height="200" width="100%" data-ecwid-shortcode="' + window.encodeURIComponent(found.content) + '" src="' + ecwid_store_svg + '" data-mce-placeholder="true" data-mce-resize="false" class="ecwid-store-editor mceItem">';
|
244 |
|
245 |
+
e.content = e.content.substr(0, start) + store + e.content.substr(end);
|
246 |
}
|
247 |
});
|
248 |
|
249 |
// Replace images with tags
|
250 |
editor.onPostProcess.add( function( editor, e ) {
|
251 |
|
252 |
+
if ( e.get ) {
|
253 |
|
254 |
return e.content = e.content.replace( /(<img [^>]*data-ecwid-shortcode=[^>]+>)/g, function( match, image ) {
|
255 |
|
js/store-editor-page.js
CHANGED
@@ -1,4 +1,6 @@
|
|
1 |
-
|
|
|
|
|
2 |
|
3 |
jQuery(document).ready(function() {
|
4 |
$popup = jQuery('#ecwid-store-popup-content');
|
@@ -106,14 +108,14 @@ jQuery(document).ready(function() {
|
|
106 |
'minicart_layout': 'MiniAttachToProductBrowser'
|
107 |
}
|
108 |
}
|
109 |
-
|
110 |
/*
|
111 |
* Tests whether there is a valid store shortcode
|
112 |
*/
|
113 |
checkEcwid = function() {
|
114 |
|
115 |
var hasEcwid = false;
|
116 |
-
if (
|
117 |
content = tinyMCE.activeEditor.getBody();
|
118 |
|
119 |
hasEcwid = jQuery(content).find('.ecwid-store-editor').length > 0;
|
@@ -126,7 +128,7 @@ jQuery(document).ready(function() {
|
|
126 |
} else {
|
127 |
jQuery('.wp-media-buttons').removeClass('has-ecwid');
|
128 |
}
|
129 |
-
if (
|
130 |
var body = tinymce.activeEditor.dom.doc.body;
|
131 |
var button = tinymce.activeEditor.dom.select('#ecwid-edit-store-button');
|
132 |
|
@@ -263,7 +265,7 @@ jQuery(document).ready(function() {
|
|
263 |
shortcode.shortcode.attrs.named[i] = result[i];
|
264 |
}
|
265 |
|
266 |
-
var stringToInsert =
|
267 |
|
268 |
if (existingShortcode) {
|
269 |
|
@@ -276,12 +278,12 @@ jQuery(document).ready(function() {
|
|
276 |
jQuery('#content').val(
|
277 |
jQuery('#content').val().replace(stringToReplace, stringToInsert)
|
278 |
);
|
279 |
-
if (
|
280 |
jQuery(tinymce.activeEditor.getBody()).find('.ecwid-store-editor').attr('data-ecwid-shortcode', shortcode.shortcode.string());
|
281 |
}
|
282 |
} else {
|
283 |
|
284 |
-
if (
|
285 |
if ($popup.data('range')) {
|
286 |
tinymce.activeEditor.selection.setRng($popup.data('range'));
|
287 |
}
|
@@ -314,28 +316,6 @@ jQuery(document).ready(function() {
|
|
314 |
|
315 |
jQuery('#ecwid-store-popup-content').removeClass('open');
|
316 |
});
|
317 |
-
|
318 |
-
createGutenbergedShortcodeString = function( shortcode ) {
|
319 |
-
return shortcode.string();
|
320 |
-
|
321 |
-
var result = '<!-- wp:ecwid/store-block ';
|
322 |
-
|
323 |
-
var attributes = {
|
324 |
-
default_category_id: shortcode.attrs.named.default_category_id,
|
325 |
-
show_categories: shortcode.attrs.named.widgets.indexOf('categories') !== -1,
|
326 |
-
show_search: shortcode.attrs.named.widgets.indexOf('search') !== -1
|
327 |
-
}
|
328 |
-
|
329 |
-
result += JSON.stringify(attributes);
|
330 |
-
|
331 |
-
result += ' -->';
|
332 |
-
|
333 |
-
result += shortcode.string();
|
334 |
-
|
335 |
-
result += '<!-- /wp:ecwid/store-block -->';
|
336 |
-
|
337 |
-
return result;
|
338 |
-
}
|
339 |
|
340 |
updatePreview = function() {
|
341 |
jQuery('.store-settings input[type=checkbox]', $popup).each(function(idx, el) {
|
@@ -365,7 +345,7 @@ ecwid_open_store_popup = function() {
|
|
365 |
|
366 |
var shortcode;
|
367 |
|
368 |
-
if (
|
369 |
tinyMCE.activeEditor.save();
|
370 |
|
371 |
$popup.data('range', tinyMCE.activeEditor.selection.getRng());
|
@@ -405,7 +385,7 @@ ecwid_open_store_popup = function() {
|
|
405 |
|
406 |
updatePreview();
|
407 |
|
408 |
-
if (
|
409 |
tinyMCE.activeEditor.execCommand('SelectAll');
|
410 |
tinyMCE.activeEditor.selection.collapse(true);
|
411 |
}
|
1 |
+
function ecwidIsTinyMCEActive() {
|
2 |
+
return typeof tinyMCE != 'undefined' && tinyMCE.activeEditor && !tinyMCE.activeEditor.isHidden();
|
3 |
+
}
|
4 |
|
5 |
jQuery(document).ready(function() {
|
6 |
$popup = jQuery('#ecwid-store-popup-content');
|
108 |
'minicart_layout': 'MiniAttachToProductBrowser'
|
109 |
}
|
110 |
}
|
111 |
+
|
112 |
/*
|
113 |
* Tests whether there is a valid store shortcode
|
114 |
*/
|
115 |
checkEcwid = function() {
|
116 |
|
117 |
var hasEcwid = false;
|
118 |
+
if (ecwidIsTinyMCEActive()) {
|
119 |
content = tinyMCE.activeEditor.getBody();
|
120 |
|
121 |
hasEcwid = jQuery(content).find('.ecwid-store-editor').length > 0;
|
128 |
} else {
|
129 |
jQuery('.wp-media-buttons').removeClass('has-ecwid');
|
130 |
}
|
131 |
+
if (ecwidIsTinyMCEActive()) {
|
132 |
var body = tinymce.activeEditor.dom.doc.body;
|
133 |
var button = tinymce.activeEditor.dom.select('#ecwid-edit-store-button');
|
134 |
|
265 |
shortcode.shortcode.attrs.named[i] = result[i];
|
266 |
}
|
267 |
|
268 |
+
var stringToInsert = ecwid_create_gutenberged_shortcode_string(shortcode.shortcode);
|
269 |
|
270 |
if (existingShortcode) {
|
271 |
|
278 |
jQuery('#content').val(
|
279 |
jQuery('#content').val().replace(stringToReplace, stringToInsert)
|
280 |
);
|
281 |
+
if (ecwidIsTinyMCEActive()) {
|
282 |
jQuery(tinymce.activeEditor.getBody()).find('.ecwid-store-editor').attr('data-ecwid-shortcode', shortcode.shortcode.string());
|
283 |
}
|
284 |
} else {
|
285 |
|
286 |
+
if (ecwidIsTinyMCEActive()) {
|
287 |
if ($popup.data('range')) {
|
288 |
tinymce.activeEditor.selection.setRng($popup.data('range'));
|
289 |
}
|
316 |
|
317 |
jQuery('#ecwid-store-popup-content').removeClass('open');
|
318 |
});
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
319 |
|
320 |
updatePreview = function() {
|
321 |
jQuery('.store-settings input[type=checkbox]', $popup).each(function(idx, el) {
|
345 |
|
346 |
var shortcode;
|
347 |
|
348 |
+
if (ecwidIsTinyMCEActive()) {
|
349 |
tinyMCE.activeEditor.save();
|
350 |
|
351 |
$popup.data('range', tinyMCE.activeEditor.selection.getRng());
|
385 |
|
386 |
updatePreview();
|
387 |
|
388 |
+
if (ecwidIsTinyMCEActive()) {
|
389 |
tinyMCE.activeEditor.execCommand('SelectAll');
|
390 |
tinyMCE.activeEditor.selection.collapse(true);
|
391 |
}
|
languages/ecwid-shopping-cart-de_DE.mo
CHANGED
Binary file
|
languages/ecwid-shopping-cart-de_DE.po
CHANGED
@@ -1,5 +1,5 @@
|
|
1 |
msgid "Ecwid Shopping Cart"
|
2 |
-
msgstr "
|
3 |
|
4 |
msgid "Ecwid Team"
|
5 |
msgstr "Ecwid-Team"
|
1 |
msgid "Ecwid Shopping Cart"
|
2 |
+
msgstr ""
|
3 |
|
4 |
msgid "Ecwid Team"
|
5 |
msgstr "Ecwid-Team"
|
languages/ecwid-shopping-cart-pt_BR.mo
CHANGED
Binary file
|
languages/ecwid-shopping-cart-pt_BR.po
CHANGED
@@ -1295,7 +1295,7 @@ msgstr "Não sincronizado ainda"
|
|
1295 |
#. Plugin Name of the plugin/theme
|
1296 |
#:
|
1297 |
msgid "Ecwid Shopping Cart"
|
1298 |
-
msgstr "
|
1299 |
|
1300 |
#. #-#-#-#-# ecwid-shopping-cart.pot (Ecwid Shopping Cart 5.0.7) #-#-#-#-#
|
1301 |
#. Plugin URI of the plugin/theme
|
1295 |
#. Plugin Name of the plugin/theme
|
1296 |
#:
|
1297 |
msgid "Ecwid Shopping Cart"
|
1298 |
+
msgstr ""
|
1299 |
|
1300 |
#. #-#-#-#-# ecwid-shopping-cart.pot (Ecwid Shopping Cart 5.0.7) #-#-#-#-#
|
1301 |
#. Plugin URI of the plugin/theme
|
languages/ecwid-shopping-cart-ru_RU.mo
CHANGED
Binary file
|
languages/ecwid-shopping-cart-ru_RU.po
CHANGED
@@ -3,16 +3,16 @@
|
|
3 |
msgid ""
|
4 |
msgstr ""
|
5 |
"Project-Id-Version: Ecwid Shopping Cart 4.9.4\n"
|
6 |
-
"Report-Msgid-Bugs-To: https://wordpress.org/support/plugin/ecwid-shopping-"
|
7 |
-
"cart\n"
|
8 |
"POT-Creation-Date: 2017-05-30 19:04:12+00:00\n"
|
9 |
-
"PO-Revision-Date:
|
10 |
-
"
|
11 |
-
"Language-Team: LANGUAGE <LL@li.org>\n"
|
12 |
-
"Language: \n"
|
13 |
"MIME-Version: 1.0\n"
|
14 |
"Content-Type: text/plain; charset=UTF-8\n"
|
15 |
"Content-Transfer-Encoding: 8bit\n"
|
|
|
|
|
|
|
16 |
|
17 |
#: ecwid-shopping-cart.php:820
|
18 |
msgid "%s plugin doesn't work well with my \"%s\" theme"
|
@@ -35,8 +35,7 @@ msgid "Read FAQ"
|
|
35 |
msgstr "Посмотреть FAQ"
|
36 |
|
37 |
#: ecwid-shopping-cart.php:881
|
38 |
-
msgid ""
|
39 |
-
"https://support.ecwid.com/hc/en-us/articles/360000635709-Customizing-design-of-your-Ecwid-store-on-a-Wordpress-site"
|
40 |
msgstr "https://support.ecwid.com/hc/ru/articles/207101259-Wordpress-ORG"
|
41 |
|
42 |
#: ecwid-shopping-cart.php:890
|
@@ -47,10 +46,7 @@ msgstr "Сообщить о проблеме"
|
|
47 |
msgid "<a %s>Online store powered by %s</a>"
|
48 |
msgstr "<a %s>Интернет магазин построен на Эквиде</a>"
|
49 |
|
50 |
-
#: ecwid-shopping-cart.php:1497 includes/class-ecwid-nav-menus.php:111
|
51 |
-
#: includes/class-ecwid-nav-menus.php:297
|
52 |
-
#: includes/class-ecwid-nav-menus.php:300
|
53 |
-
#: includes/class-ecwid-nav-menus.php:308
|
54 |
msgid "Store"
|
55 |
msgstr "Магазин"
|
56 |
|
@@ -70,8 +66,7 @@ msgstr "Настройки"
|
|
70 |
msgid "Dashboard"
|
71 |
msgstr "Консоль"
|
72 |
|
73 |
-
#: ecwid-shopping-cart.php:1801 includes/class-ecwid-admin.php:58
|
74 |
-
#: includes/class-ecwid-admin.php:59 includes/class-ecwid-products.php:242
|
75 |
msgid "Products"
|
76 |
msgstr "Товары"
|
77 |
|
@@ -88,20 +83,12 @@ msgid "Done"
|
|
88 |
msgstr "Готово"
|
89 |
|
90 |
#: ecwid-shopping-cart.php:1807 includes/class-ecwid-nav-menus.php:146
|
91 |
-
msgid ""
|
92 |
-
"The store top-level categories are automatically added to this drop-down menu"
|
93 |
msgstr "Корневые категории добавляются в выпадающее меню автоматически"
|
94 |
|
95 |
#: ecwid-shopping-cart.php:1916 includes/class-ecwid-oauth.php:336
|
96 |
-
msgid ""
|
97 |
-
"
|
98 |
-
"need to re-connect your site to your %s. This will only require you to "
|
99 |
-
"accept permissions request – so that the plugin will be able to list your "
|
100 |
-
"products in the \"Add product\" dialog."
|
101 |
-
msgstr ""
|
102 |
-
"Чтобы показать товары магазина в диалоге вставки товара, плагину нужно "
|
103 |
-
"подключиться к вашему магазину %s. От вас потребуется только разрешить "
|
104 |
-
"плагину доступ к вашему магазину."
|
105 |
|
106 |
#: ecwid-shopping-cart.php:2420
|
107 |
msgid "Recommendations for Your Online Store"
|
@@ -123,8 +110,7 @@ msgstr "Продажи"
|
|
123 |
msgid "Appearance settings"
|
124 |
msgstr "Настройки внешнего вида"
|
125 |
|
126 |
-
#: includes/class-ecwid-admin.php:69 templates/product-popup.php:183
|
127 |
-
#: templates/store-popup.php:13 templates/store-popup.php:31
|
128 |
msgid "Appearance"
|
129 |
msgstr "Внешний вид"
|
130 |
|
@@ -157,9 +143,7 @@ msgid "Admin Label"
|
|
157 |
msgstr ""
|
158 |
|
159 |
#: includes/class-ecwid-integration-divibuilder.php:51
|
160 |
-
msgid ""
|
161 |
-
"This will change the label of the module in the builder for easy "
|
162 |
-
"identification."
|
163 |
msgstr ""
|
164 |
|
165 |
#: includes/class-ecwid-integration-divibuilder.php:54
|
@@ -167,10 +151,7 @@ msgid "CSS ID"
|
|
167 |
msgstr ""
|
168 |
|
169 |
#: includes/class-ecwid-integration-divibuilder.php:57
|
170 |
-
msgid ""
|
171 |
-
"Enter an optional CSS ID to be used for this module. An ID can be used to "
|
172 |
-
"create custom CSS styling, or to create links to particular sections of your "
|
173 |
-
"page."
|
174 |
msgstr ""
|
175 |
|
176 |
#: includes/class-ecwid-integration-divibuilder.php:60
|
@@ -178,27 +159,15 @@ msgid "CSS Class"
|
|
178 |
msgstr ""
|
179 |
|
180 |
#: includes/class-ecwid-integration-divibuilder.php:63
|
181 |
-
msgid ""
|
182 |
-
"Enter optional CSS classes to be used for this module. A CSS class can be "
|
183 |
-
"used to create custom CSS styling. You can add multiple classes, separated "
|
184 |
-
"with a space."
|
185 |
msgstr ""
|
186 |
|
187 |
#: includes/class-ecwid-message-manager.php:45
|
188 |
msgid ""
|
189 |
-
"Sorry, there is a problem. This page is supposed to display your store "
|
190 |
-
"
|
191 |
-
"
|
192 |
-
"
|
193 |
-
"hosting provider. Here is a more techy description of the problem, which you "
|
194 |
-
"can send to your hosting provider: \"The Wordpress function wp_remote_post() "
|
195 |
-
"failed to connect a remote server because of some error: \"%s\". Seems like "
|
196 |
-
"HTTP POST requests are disabled on this server\". <br /><br />Please feel "
|
197 |
-
"free to contact us at <a %s>wordpress@ecwid.com</a> and we will help you "
|
198 |
-
"contact your hosting and ask them to fix the issue. <br /><br /> Meanwhile, "
|
199 |
-
"to manage your store, you can use the Ecwid Web Control Panel at <a %s>my."
|
200 |
-
"ecwid.com</a>. Your store front is working fine as well and you can check it "
|
201 |
-
"here: <a %s>%s</a>."
|
202 |
msgstr ""
|
203 |
|
204 |
#: includes/class-ecwid-message-manager.php:194
|
@@ -226,24 +195,16 @@ msgid "Complete Setup"
|
|
226 |
msgstr "Продолжить установку"
|
227 |
|
228 |
#: includes/class-ecwid-message-manager.php:212
|
229 |
-
msgid ""
|
230 |
-
"
|
231 |
-
"your site. When you're done, you can get back to modifying your settings."
|
232 |
-
msgstr ""
|
233 |
-
"Добавьте дополнительные элементы магазина, перетащив виджеты %s в нужное "
|
234 |
-
"место сайта. После установки виджетов можете вернуться к настройкам магазина."
|
235 |
|
236 |
#: includes/class-ecwid-message-manager.php:213
|
237 |
msgid "Back to Store Settings"
|
238 |
msgstr "Вернуться к настройкам"
|
239 |
|
240 |
#: includes/class-ecwid-message-manager.php:220
|
241 |
-
msgid ""
|
242 |
-
"
|
243 |
-
"and vote for the plugin on WordPress site."
|
244 |
-
msgstr ""
|
245 |
-
"Вам нравится ваш магазин? Будем благодарны, если вы оставите отзыв и "
|
246 |
-
"проголосуете за %s на сайте WordPress."
|
247 |
|
248 |
#: includes/class-ecwid-message-manager.php:224
|
249 |
msgid "Rate %s at WordPress.org"
|
@@ -269,19 +230,15 @@ msgstr "Добавить в меню"
|
|
269 |
msgid "Cart"
|
270 |
msgstr "Корзина"
|
271 |
|
272 |
-
#: includes/class-ecwid-nav-menus.php:276
|
273 |
-
#: includes/widgets/class-ecwid-widget-minicart.php:6
|
274 |
msgid "Shopping Cart"
|
275 |
msgstr "Корзина"
|
276 |
|
277 |
-
#: includes/class-ecwid-nav-menus.php:281
|
278 |
-
#: includes/class-ecwid-nav-menus.php:284
|
279 |
-
#: includes/widgets/class-ecwid-widget-search.php:10
|
280 |
msgid "Product Search"
|
281 |
msgstr "Поиск товаров"
|
282 |
|
283 |
-
#: includes/class-ecwid-nav-menus.php:289
|
284 |
-
#: includes/class-ecwid-nav-menus.php:292
|
285 |
msgid "My Account"
|
286 |
msgstr "Профиль"
|
287 |
|
@@ -309,8 +266,7 @@ msgstr "Следующая"
|
|
309 |
msgid "Last Page"
|
310 |
msgstr "Конец"
|
311 |
|
312 |
-
#: includes/class-ecwid-store-editor.php:44 templates/store-popup.php:11
|
313 |
-
#: templates/store-popup.php:19
|
314 |
msgid "Add Store"
|
315 |
msgstr "Добавить магазин"
|
316 |
|
@@ -328,17 +284,11 @@ msgstr "Безопасен ли Эквид?"
|
|
328 |
|
329 |
#: includes/faq_entries.php:6
|
330 |
msgid ""
|
331 |
-
"Ecwid is PCI DSS Level 1 certified, which is the gold standard for e-"
|
332 |
-
"
|
333 |
-
"compliance issues when selling online with Ecwid. <a target=\"_blank\""
|
334 |
-
" href=\"https://support.ecwid.com/hc/en-us/articles/207101259-Wordpress-"
|
335 |
-
"downloadable-#security\">More details.</a>"
|
336 |
msgstr ""
|
337 |
-
"Эквид сертифицирован по стандарту PCI DSS Level 1. Это высший уровень "
|
338 |
-
"
|
339 |
-
"вашего магазина и ваших клиентов надёжно защищена. <a target=\"_blank\""
|
340 |
-
" href=\"https://support.ecwid.com/hc/ru/articles/207101259-Wordpress#"
|
341 |
-
"security\">Подробнее о безопасности.</a>"
|
342 |
|
343 |
#: includes/faq_entries.php:12
|
344 |
msgid "How can I manage my store from a mobile device?"
|
@@ -346,18 +296,10 @@ msgstr "Как быстро внести изменения в каталог т
|
|
346 |
|
347 |
#: includes/faq_entries.php:13
|
348 |
msgid ""
|
349 |
-
"Ecwid provides free mobile applications for iOS and Android to manage your "
|
350 |
-
"store and sell on the go. Scan products, track inventory, manage sales and "
|
351 |
-
"accept payments using your mobile device as a POS station. <a target=\"_blank"
|
352 |
-
"\" href=\"https://www.ecwid.com/ecwid-mobile\">More details.</a>"
|
353 |
msgstr ""
|
354 |
-
"Лучший способ быстро изменить что-либо в товаре – воспользоваться мобильным "
|
355 |
-
"
|
356 |
-
"тарифным планом и поможет вам управлять заказами, вносить изменения в "
|
357 |
-
"каталог товаров и регистрировать новые покупки при личных встречах с "
|
358 |
-
"покупателями где бы вы ни находились. <a target=\"_blank\" href=\"https://"
|
359 |
-
"www.ecwid.ru/blog/quick-mobile-connect.html\">Подробнее о мобильном "
|
360 |
-
"приложении.</a>"
|
361 |
|
362 |
#: includes/faq_entries.php:20
|
363 |
msgid "How to set up a storefront on Facebook with Ecwid?"
|
@@ -365,50 +307,27 @@ msgstr "Как добавить магазин на Facebook?"
|
|
365 |
|
366 |
#: includes/faq_entries.php:21
|
367 |
msgid ""
|
368 |
-
"You can add your online store to your Facebook business page. No addons "
|
369 |
-
"
|
370 |
-
"and inventory between your WordPress and Facebook storefronts. <a target="
|
371 |
-
"\"_blank\" href=\"https://support.ecwid.com/hc/en-us/articles/115005892705"
|
372 |
-
"-Facebook-Shop\">More details.</a>"
|
373 |
msgstr ""
|
374 |
-
"Вы можете разместить магазин не только на своём WordPress-сайте, но и на "
|
375 |
-
"
|
376 |
-
"отражает любые изменения в магазине. Новые товары в каталоге, наличие на "
|
377 |
-
"складе, заказы и покупатели – все данные распространяются между витринами на "
|
378 |
-
"лету. <a target=\"_blank\" href=\"https://support.ecwid.com/hc/ru/articles/115"
|
379 |
-
"005892705-%D0%9C%D0%B0%D0%B3%D0%B0%D0%B7%D0%B8%D0%BD-%D0%BD%D0%B0-%D0%A4%D0%B5"
|
380 |
-
"%D0%B9%D1%81%D0%B1%D1%83%D0%BA%D0%B5\">Подробнее об установке на Facebook.</a>"
|
381 |
|
382 |
#: includes/faq_entries.php:28
|
383 |
msgid "How can I add a cart widget to my site sidebar?"
|
384 |
msgstr "Как добавить корзину в боковую панель сайта (sidebar)?"
|
385 |
|
386 |
#: includes/faq_entries.php:30
|
387 |
-
msgid ""
|
388 |
-
"
|
389 |
-
"\"Appearance / Widgets page\"</a> here in your site admin. <a target=\"_blank\""
|
390 |
-
" href=\"https://support.ecwid.com/hc/en-us/articles/207101259-Wordpress-downloadable"
|
391 |
-
"-#sidebarwidgets\">More details.</a>"
|
392 |
-
msgstr ""
|
393 |
-
"Вы можете добавить корзину, форму для поиска товаров и другие элементы "
|
394 |
-
"магазина в боковую панель на странице <a href=\"%s\">«Внешний вид > "
|
395 |
-
"Виджеты»</a>."
|
396 |
|
397 |
#: includes/faq_entries.php:38
|
398 |
msgid "How much does Ecwid cost?"
|
399 |
msgstr "Сколько стоит Эквид?"
|
400 |
|
401 |
#: includes/faq_entries.php:39
|
402 |
-
msgid ""
|
403 |
-
"
|
404 |
-
"level of support. For more information, check out our <a target=\"_blank\" "
|
405 |
-
"href=\"%s\">pricing page.</a><br /><br />Pro Tip: You can also save money "
|
406 |
-
"by enrolling in our annual plans."
|
407 |
-
msgstr ""
|
408 |
-
"Мы предлагаем 4 тарифных плана: от бесплатного с 10 товарами до "
|
409 |
-
"безлимитного. Платные тарифные планы расширяют возможности магазина и "
|
410 |
-
"открывают персональную техническую поддержку в реальном времени.<br /><a "
|
411 |
-
"target=\"_blank\" href=\"%s\">Подробнее о расценках.</a>"
|
412 |
|
413 |
#: includes/faq_entries.php:45
|
414 |
msgid "How do I add store categories to the site menu?"
|
@@ -416,15 +335,9 @@ msgstr "Как добавить категории в меню сайта?"
|
|
416 |
|
417 |
#: includes/faq_entries.php:46
|
418 |
msgid ""
|
419 |
-
"You can add the store categories menu to your site menu to help your "
|
420 |
-
"customers easily navigate your site. Just open \"Appearance > Menus\" in "
|
421 |
-
"your WordPress control panel and add the \"Store with Categories Menu\" item "
|
422 |
-
"to your site menu. A drop-down menu containing your store categories will "
|
423 |
"automatically appear on your site."
|
424 |
-
msgstr ""
|
425 |
-
"Перейдите на страницу «Внешний вид > Меню», добавьте элемент «Магазин с меню "
|
426 |
-
"категорий» в меню и сохраните изменения. Сразу после сохранения меню сайта "
|
427 |
-
"пополнится выпадающим списком категорий вашего магазина."
|
428 |
|
429 |
#: includes/faq_entries.php:52
|
430 |
msgid "How do I put my products in the sitemap?"
|
@@ -432,114 +345,70 @@ msgstr "Как добавить товары в карту сайта (sitemap)?
|
|
432 |
|
433 |
#: includes/faq_entries.php:53
|
434 |
msgid ""
|
435 |
-
"To create sitemap for your Wordpress site we suggest using <a target=\"_blank"
|
436 |
-
"\" href=\"https://
|
437 |
-
"
|
438 |
-
"plugins/wordpress-seo/\">Yoast Wordpress SEO</a>. plugins. These "
|
439 |
-
"plugins are fully compatible with Ecwid and allow to generate a sitemap that "
|
440 |
-
"will contain links to categories and product pages, so the store pages will "
|
441 |
-
"get indexed faster. Please note that this option is available to <a target="
|
442 |
-
"\"_blank\" href=\"https://www.ecwid.com/pricing\">paid Ecwid users</a>."
|
443 |
msgstr ""
|
444 |
-
"Для создания карты сайта мы рекомендуем использовать плагин <a target
|
445 |
-
"
|
446 |
-
"\">Google XML Sitemaps</a> или <a target=\"_blank\" href=\"https://ru."
|
447 |
-
"wordpress.org/plugins/wordpress-seo/\">Yoast Wordpress SEO</a>. После "
|
448 |
-
"установки плагин создаст карту сайта, содержащую ссылки на страницы товаров "
|
449 |
-
"и категорий, и ускорит их индексацию поисковыми движками. Чтобы "
|
450 |
-
"воспользоваться этой возможностью подпишитесь на любой <a target=\"_blank\" "
|
451 |
-
"href=\"https://www.ecwid.ru/pricing\">платный тарифный план</a>."
|
452 |
|
453 |
#: includes/faq_entries.php:58
|
454 |
-
msgid ""
|
455 |
-
"How to add a single product with the add to bag button to the site pages?"
|
456 |
msgstr "Как добавить отдельный товар с корзиной на страницу сайта?"
|
457 |
|
458 |
#: includes/faq_entries.php:59
|
459 |
-
msgid ""
|
460 |
-
"
|
461 |
-
"use <b>[ecwid_product]</b> shortcode. <a target=\"_blank\" href=\"https://s"
|
462 |
-
"upport.ecwid.com/hc/en-us/articles/207101259-Wordpress-downloadable-#buynow"
|
463 |
-
"\">How to use it.</a>"
|
464 |
-
msgstr ""
|
465 |
-
"Чтобы разместить товар магазина на страницах сайта отдельно от остальных, "
|
466 |
-
"используйте короткий код [ecwid_product]. <a target=\"_blank\" href="
|
467 |
-
"\"https://support.ecwid.com/hc/ru/articles/207101259-Wordpress#embeda"
|
468 |
-
"singleproduct\">Пошаговая инструкция.</a>"
|
469 |
|
470 |
#: includes/faq_entries.php:65
|
471 |
msgid "Is it possible to display my store on the site home page?"
|
472 |
msgstr "Как добавить магазин на домашнюю страницу?"
|
473 |
|
474 |
#: includes/faq_entries.php:66
|
475 |
-
msgid ""
|
476 |
-
"
|
477 |
-
"settings of your site as described in our <a target=\"_blank\" href="
|
478 |
-
"\"https://support.ecwid.com/hc/en-us/articles/207101259-Wordpress-"
|
479 |
-
"downloadable-#displaystoreonhomepage\">Help Center.</a>"
|
480 |
-
msgstr ""
|
481 |
-
"Перейдите на страницу <a href=\"options-reading.php\">«Настройки > Чтение»</"
|
482 |
-
"a> и выберите «Магазин\t» в выпадающем списке главной страницы."
|
483 |
|
484 |
msgid "Is there a WordPress theme for Ecwid?"
|
485 |
msgstr "Существуют ли темы для Эквида?"
|
486 |
|
487 |
#: includes/faq_entries.php:66
|
488 |
msgid "Ecwid is compatible with any WordPress theme. Be it a free theme from WordPress.org catalog, a premium theme by a third-party vendor or a custom-made theme, your Ecwid store will work good with it. If you want a premium theme, we recommend <a href=\"%s\">TemplateMonster themes</a>"
|
489 |
-
msgstr ""
|
490 |
-
"Эквид совместим с любой темой, будь то бесплатная тема из каталога WordPress.org, платная тема или заказная разработка. Ваш магазин должен работать хорошо в любом случае. Если вы ищете хорошие премиум-темы, мы рекомендуем <a href=\"%s\">TemplateMonster</a>"
|
491 |
-
|
492 |
|
493 |
#: includes/oembed.php:68 includes/oembed.php:97 templates/help.php:96
|
494 |
msgid "See more"
|
495 |
msgstr "Посмотреть все"
|
496 |
|
497 |
-
#: includes/themes/class-ecwid-theme-twentyfifteen.php:32
|
498 |
-
#: includes/themes/class-ecwid-theme-
|
499 |
-
#: includes/themes/class-ecwid-theme-twentyseventeen.php:47
|
500 |
-
#: includes/themes/class-ecwid-theme-twentyseventeen.php:53
|
501 |
-
#: includes/themes/class-ecwid-theme-twentysixteen.php:35
|
502 |
-
#: includes/themes/class-ecwid-theme-twentysixteen.php:41
|
503 |
-
#: includes/widgets/class-ecwid-widget-store-link.php:29
|
504 |
msgid "Shop"
|
505 |
msgstr "Магазин"
|
506 |
|
507 |
#: includes/widgets/class-ecwid-widget-badge.php:9
|
508 |
-
msgid ""
|
509 |
-
"
|
510 |
-
"by Ecwid' badge on your site to show your visitors that you're a proud user "
|
511 |
-
"of Ecwid."
|
512 |
-
msgstr ""
|
513 |
-
"Если вам нравится Эквид и вы хотите помочь ему стать самым популярным "
|
514 |
-
"конструктором интернет-магазинов, вы можете добавить значок на сайт, чтобы "
|
515 |
-
"показать посетителям, что вы пользуетесь Эквидом."
|
516 |
|
517 |
#: includes/widgets/class-ecwid-widget-badge.php:10
|
518 |
msgid "Ecwid Badge"
|
519 |
msgstr "Значок Эквида"
|
520 |
|
521 |
-
#: includes/widgets/class-ecwid-widget-badge.php:17
|
522 |
-
#: includes/widgets/class-ecwid-widget-badge.php:23
|
523 |
msgid "Ecwid shopping cart widget"
|
524 |
msgstr "Виджет интернет-магазина Эквид"
|
525 |
|
526 |
-
#: includes/widgets/class-ecwid-widget-badge.php:29
|
527 |
-
#: includes/widgets/class-ecwid-widget-badge.php:65
|
528 |
msgid "Ecwid ecommerce solution"
|
529 |
msgstr "Решение для электронной коммерции Эквид"
|
530 |
|
531 |
-
#: includes/widgets/class-ecwid-widget-badge.php:35
|
532 |
-
#: includes/widgets/class-ecwid-widget-badge.php:71
|
533 |
msgid "Ecwid free shopping cart"
|
534 |
msgstr "Беспланный конструктов интернет-магазинов Эквид"
|
535 |
|
536 |
-
#: includes/widgets/class-ecwid-widget-badge.php:41
|
537 |
-
#: includes/widgets/class-ecwid-widget-badge.php:53
|
538 |
msgid "Ecwid shopping cart"
|
539 |
msgstr "Интернет-магазин Эквид"
|
540 |
|
541 |
-
#: includes/widgets/class-ecwid-widget-badge.php:47
|
542 |
-
#: includes/widgets/class-ecwid-widget-badge.php:59
|
543 |
msgid "Ecwid e-commerce widgets"
|
544 |
msgstr "Виджеты для электронной коммерции Эквид"
|
545 |
|
@@ -564,52 +433,34 @@ msgid "Top right"
|
|
564 |
msgstr "Справа вверху"
|
565 |
|
566 |
#: includes/widgets/class-ecwid-widget-minicart-miniview.php:5
|
567 |
-
msgid ""
|
568 |
-
"
|
569 |
-
"the cart."
|
570 |
-
msgstr ""
|
571 |
-
"Добавляет компактный виджет корзины покупателя для быстрого доступа к "
|
572 |
-
"добавленным товарам."
|
573 |
|
574 |
#: includes/widgets/class-ecwid-widget-minicart-miniview.php:6
|
575 |
msgid "Shopping Cart (Mini)"
|
576 |
msgstr "Корзина (Мини)"
|
577 |
|
578 |
-
#: includes/widgets/class-ecwid-widget-minicart-miniview.php:44
|
579 |
-
#: includes/widgets/class-ecwid-widget-minicart.php:44
|
580 |
-
#: includes/widgets/class-ecwid-widget-search.php:49
|
581 |
-
#: includes/widgets/class-ecwid-widget-vcategories.php:43
|
582 |
-
#: includes/widgets/class-ecwid-widget-vertical-categories-list.php:71
|
583 |
msgid "Title:"
|
584 |
msgstr "Название:"
|
585 |
|
586 |
#: includes/widgets/class-ecwid-widget-minicart.php:5
|
587 |
-
msgid ""
|
588 |
-
"
|
589 |
-
msgstr ""
|
590 |
-
"Добавляет виджет корзины покупателя для быстрого доступа к добавленным "
|
591 |
-
"товарам."
|
592 |
|
593 |
#: includes/widgets/class-ecwid-widget-recently-viewed.php:9
|
594 |
-
msgid ""
|
595 |
-
"
|
596 |
-
"to the products they saw in your shop."
|
597 |
-
msgstr ""
|
598 |
-
"Показывает список товаров, просмотренных покупателем. Позволяет покупателю "
|
599 |
-
"быстро перейти к товарам, которые их заинтересовали раньше."
|
600 |
|
601 |
-
#: includes/widgets/class-ecwid-widget-recently-viewed.php:10
|
602 |
-
#: includes/widgets/class-ecwid-widget-recently-viewed.php:153
|
603 |
msgid "Recently Viewed Products"
|
604 |
msgstr "Просмотренные товары"
|
605 |
|
606 |
-
#: includes/widgets/class-ecwid-widget-recently-viewed.php:124
|
607 |
-
#: includes/widgets/class-ecwid-widget-recently-viewed.php:154
|
608 |
msgid "You have not viewed any product yet. Open store."
|
609 |
msgstr "Вы пока что не просмотрели ни одного товара. Открыть магазин."
|
610 |
|
611 |
-
#: includes/widgets/class-ecwid-widget-recently-viewed.php:164
|
612 |
-
#: templates/product-popup.php:160
|
613 |
msgid "Title"
|
614 |
msgstr "Название"
|
615 |
|
@@ -622,18 +473,12 @@ msgid "Number of products to show"
|
|
622 |
msgstr "Количество товаров для отображения"
|
623 |
|
624 |
#: includes/widgets/class-ecwid-widget-search.php:9
|
625 |
-
msgid ""
|
626 |
-
"Displays a simple search box for your customers to find a product in your "
|
627 |
-
"store"
|
628 |
msgstr "Показывает покупателю поле поиска товаров в магазине"
|
629 |
|
630 |
#: includes/widgets/class-ecwid-widget-store-link.php:5
|
631 |
-
msgid ""
|
632 |
-
"
|
633 |
-
"your store from any page on the site."
|
634 |
-
msgstr ""
|
635 |
-
"Показывает ссылку на страницу магазина, позволяющую покупателю быстро "
|
636 |
-
"открыть магазин из любой страницы на сайте."
|
637 |
|
638 |
#: includes/widgets/class-ecwid-widget-store-link.php:6
|
639 |
msgid "Store Page Link"
|
@@ -645,26 +490,21 @@ msgstr "Текст ссылки"
|
|
645 |
|
646 |
#: includes/widgets/class-ecwid-widget-vcategories.php:5
|
647 |
msgid "Adds vertical categories block to let the customer navigate your store."
|
648 |
-
msgstr ""
|
649 |
-
"Показывает вертикальный список категорий для удобной навигации по магазину."
|
650 |
|
651 |
#: includes/widgets/class-ecwid-widget-vcategories.php:6
|
652 |
msgid "Store Categories"
|
653 |
msgstr "Категории магазина"
|
654 |
|
655 |
#: includes/widgets/class-ecwid-widget-vertical-categories-list.php:11
|
656 |
-
msgid ""
|
657 |
-
"
|
658 |
-
"store."
|
659 |
-
msgstr ""
|
660 |
-
"Показывает список корневых категорий для удобной навигации по магазину."
|
661 |
|
662 |
#: includes/widgets/class-ecwid-widget-vertical-categories-list.php:12
|
663 |
msgid "Store Root Categories"
|
664 |
msgstr "Корневые категории магазина"
|
665 |
|
666 |
-
#: includes/widgets/class-ecwid-widget-vertical-categories-list.php:22
|
667 |
-
#: includes/widgets/class-ecwid-widget-vertical-categories-list.php:68
|
668 |
msgid "Browse by Category"
|
669 |
msgstr "Категории магазина"
|
670 |
|
@@ -701,15 +541,8 @@ msgid "Sorry we're having technical difficulties."
|
|
701 |
msgstr "Простите, у нас технические проблемы."
|
702 |
|
703 |
#: templates/admin-timeout.php:11
|
704 |
-
msgid ""
|
705 |
-
"
|
706 |
-
"minutes. If the issue persists, please contact <a target=\"_blank\" href="
|
707 |
-
"\"https://help.ecwid.com/customer/portal/emails/new\">our customer support "
|
708 |
-
"team</a>."
|
709 |
-
msgstr ""
|
710 |
-
"Мы уже работаем над исправлением проблемы. Перезагрузите страницу через пару "
|
711 |
-
"минут. Если проблема сохранится, пожалуйста, <a target=\"_blank\" href="
|
712 |
-
"\"https://help.ecwid.com/customer/portal/emails/new\">свяжитесь с нами</a>."
|
713 |
|
714 |
#: templates/advanced-settings.php:1
|
715 |
msgid "%s — Advanced settings"
|
@@ -720,35 +553,16 @@ msgid "SEO friendly clean URLs"
|
|
720 |
msgstr "SEO URLs"
|
721 |
|
722 |
#: templates/advanced-settings.php:34
|
723 |
-
msgid ""
|
724 |
-
"
|
725 |
-
"contain hash sign ('#'), so they look nicer and are better indexed by Google."
|
726 |
-
msgstr ""
|
727 |
-
"Включает новый \"чистый\" формат ссылок на товары и категории в магазине. "
|
728 |
-
"Новые ссылки не содержат символа \"#\" и лучше индексируются поисковыми "
|
729 |
-
"системами."
|
730 |
|
731 |
#: templates/advanced-settings.php:38
|
732 |
-
msgid ""
|
733 |
-
"
|
734 |
-
"permalinks in your WordPress site settings. Navigate to <a%s>Settings-"
|
735 |
-
">Permalink</a> and enable the \"Post name\" permalink type."
|
736 |
-
msgstr ""
|
737 |
-
"Чтобы включить SEO URLs в магазине, вам потребуется для начала включить "
|
738 |
-
"улучшенную структуру постоянных ссылок в настройках Wordpress. Для этого в "
|
739 |
-
"меню \"<a%s>Настройки -> Постоянные ссылки</a>\" выберите тип ссылок "
|
740 |
-
"\"Название записи\"."
|
741 |
|
742 |
#: templates/advanced-settings.php:44
|
743 |
-
msgid ""
|
744 |
-
"
|
745 |
-
"upcoming updates so please make sure to check how the new URLs work in your "
|
746 |
-
"store and <a %s>let us know</a> if you face any trouble with them"
|
747 |
-
msgstr ""
|
748 |
-
"Новые SEO URLs магазина будут включены по умолчанию в одной из будущих "
|
749 |
-
"версий плагина. Поэтому мы рекомендуем вам включить эту опцию и попробовать "
|
750 |
-
"SEO URLs на своём сайте. Если вы заметите какие-либо проблемы, пожалуйста, "
|
751 |
-
"<a %s>дайте нам знать</a>, мы поможем."
|
752 |
|
753 |
#: templates/advanced-settings.php:44 templates/advanced-settings.php:188
|
754 |
msgid "https://support.ecwid.com/hc/en-us/requests/new"
|
@@ -764,15 +578,10 @@ msgstr "Корневая категория магазина"
|
|
764 |
|
765 |
#: templates/advanced-settings.php:74
|
766 |
msgid ""
|
767 |
-
"By default, the storefront shows a list of root categories. You can override "
|
768 |
-
"
|
769 |
-
"for the first time. This is useful if you only have one category or want to "
|
770 |
-
"display a specific set of items (e.g. \"Featured Products\") to new visitors."
|
771 |
msgstr ""
|
772 |
-
"По умолчанию, магазин показывает корневые категории. Здесь можно выбрать "
|
773 |
-
"другую категорию для отображения, когда покупатель впервые открывает ваш "
|
774 |
-
"магазин. Это может быть полезно, если у вас есть только одна категория или "
|
775 |
-
"вы хотите показывать определённые набор товаров (например, специальные "
|
776 |
"предложения) новым пользователям."
|
777 |
|
778 |
#: templates/advanced-settings.php:97
|
@@ -780,17 +589,10 @@ msgid "Customer Single Sign-On"
|
|
780 |
msgstr "Единый вход для покупателей"
|
781 |
|
782 |
#: templates/advanced-settings.php:102
|
783 |
-
msgid ""
|
784 |
-
"Single Sign-On allows your customers to have a single login for your "
|
785 |
-
"WordPress site and your %s. When someone logs in to your site, they "
|
786 |
-
"will automatically be logged in to their customer account in your store as "
|
787 |
-
"well with no need to enter their email/password again."
|
788 |
msgstr ""
|
789 |
-
"Объединяет учетную запись покупателя на сайте с его учетной записью в "
|
790 |
-
"
|
791 |
-
"дважды – на сайте и в магазине. После входа в свой аккаунт на сайте "
|
792 |
-
"покупатель может смотреть историю своих заказов и оформлять новый заказ с "
|
793 |
-
"предзаполненным email и адресом доставки."
|
794 |
|
795 |
#: templates/advanced-settings.php:109
|
796 |
msgid "Upgrade to get this feature"
|
@@ -801,45 +603,24 @@ msgid "Please subscribe to a paid plan to get this feature."
|
|
801 |
msgstr "Подпишитесь на платный план, чтобы получить эту функциональность."
|
802 |
|
803 |
#: templates/advanced-settings.php:118
|
804 |
-
msgid ""
|
805 |
-
"
|
806 |
-
"with a permission to use the customer data in the store. <a %s>Please use "
|
807 |
-
"this link to do that</a>"
|
808 |
-
msgstr ""
|
809 |
-
"Чтобы плагин автоматически объединял учетные записи пользователя на сайте и "
|
810 |
-
"в магазине %s, нужно дать ему доступ до данных покупателей в магазине. <a "
|
811 |
-
"%s>Перейдите по этой ссылке, чтобы предоставить доступ</a>."
|
812 |
|
813 |
#: templates/advanced-settings.php:124
|
814 |
-
msgid ""
|
815 |
-
"
|
816 |
-
"enable registration in the <a %s>site settings</a>"
|
817 |
-
msgstr ""
|
818 |
-
"Чтобы покупатели смогли регистрироваться, убедитесь, что регистрация "
|
819 |
-
"включена в <a %s>настройках сайта</a>"
|
820 |
|
821 |
#: templates/advanced-settings.php:146
|
822 |
msgid "Chameleon skin"
|
823 |
msgstr "Тема \"Хамелеон\""
|
824 |
|
825 |
#: templates/advanced-settings.php:150
|
826 |
-
msgid ""
|
827 |
-
"
|
828 |
-
"WordPress theme you use, %s will detect predominant colors and font and use "
|
829 |
-
"them in your product catalog."
|
830 |
-
msgstr ""
|
831 |
-
"Автоматическая подстройка внешнего вида магазина под стили темы сайта. "
|
832 |
-
"Включите эту опцию, чтобы %s определял цвета и шрифты сайта и использовал их "
|
833 |
-
"в каталоге товаров."
|
834 |
|
835 |
#: templates/advanced-settings.php:153
|
836 |
-
msgid ""
|
837 |
-
"
|
838 |
-
"or find problems with Chameleon, please <a %s>let us know</a>."
|
839 |
-
msgstr ""
|
840 |
-
"Мы добавили этот инструмент недавно, и он сейчас работает в бета-режиме. "
|
841 |
-
"Если вы обнаружите какие-либо проблемы в его работе, пожалуйста, <a "
|
842 |
-
"%s>сообщите нам</a>."
|
843 |
|
844 |
#: templates/advanced-settings.php:176
|
845 |
msgid "Integration with search on your site <sup>beta</sup>"
|
@@ -847,30 +628,15 @@ msgstr "Интеграция с поиском на сайте <sup>бета</su
|
|
847 |
|
848 |
#: templates/advanced-settings.php:180
|
849 |
msgid ""
|
850 |
-
"%s stores your products data in a secure cloud storage. The product pages "
|
851 |
-
"
|
852 |
-
"the products are not stored on the site, that's why the site search doesn't "
|
853 |
-
"find product pages while looking through site pages and posts. This option "
|
854 |
-
"enables a local storage mode: the products will be stored both in the cloud "
|
855 |
-
"and on your site. The site search results will list product pages as well as "
|
856 |
-
"regular pages/posts of your site."
|
857 |
msgstr ""
|
858 |
-
"%s хранит данные товаров магазина в защищенном облачном хранилище, и "
|
859 |
-
"
|
860 |
-
"Поэтому данные товаров не хранятся на вашем сайте, а поиск по сайту находит "
|
861 |
-
"только страницы и записи сайта — не находит товары магазина. Эта настройка "
|
862 |
-
"включает локальное хранение товаров: данные товаров будут храниться и в "
|
863 |
-
"облачном хранилище, и прямо на вашем сайте. Поиск по сайту будет показывать "
|
864 |
-
"страницы товаров магазина так же, как записи или страницы, размещенные на "
|
865 |
-
"сайте."
|
866 |
|
867 |
#: templates/advanced-settings.php:188
|
868 |
-
msgid ""
|
869 |
-
"
|
870 |
-
"or find problems with it, please <a %s>let us know</a>."
|
871 |
-
msgstr ""
|
872 |
-
"Эта функция сейчас работает в бета-режиме. Если вы обнаружите проблемы в её "
|
873 |
-
"работе, пожалуйста, <a %s>сообщите нам</a>."
|
874 |
|
875 |
#: templates/advanced-settings.php:197 templates/appearance-settings.php:217
|
876 |
msgid "Save changes"
|
@@ -885,36 +651,24 @@ msgid "Display search box above products"
|
|
885 |
msgstr "Показывать форму поиска над списком продуктов"
|
886 |
|
887 |
#: templates/appearance-settings.php:31
|
888 |
-
msgid ""
|
889 |
-
"
|
890 |
-
"\">WordPress native widgets</a>"
|
891 |
-
msgstr ""
|
892 |
-
"Или вы можете добавить форму поиска на ваш сайт с помощью <a href=\"%s"
|
893 |
-
"\">виджетов WordPress</a>"
|
894 |
|
895 |
#: templates/appearance-settings.php:51
|
896 |
msgid "Display categories above products"
|
897 |
msgstr "Показывать меню категорий над списком продуктов"
|
898 |
|
899 |
#: templates/appearance-settings.php:55
|
900 |
-
msgid ""
|
901 |
-
"
|
902 |
-
"\"%s\">WordPress native widgets</a>"
|
903 |
-
msgstr ""
|
904 |
-
"Или вы можете добавить вертикальное меню категорий на ваш сайт с помощью <a "
|
905 |
-
"href=\"%s\">виджетов WordPress</a>"
|
906 |
|
907 |
#: templates/appearance-settings.php:76
|
908 |
msgid "Enable minicart attached to categories"
|
909 |
msgstr "Показывать корзину у меню категорий"
|
910 |
|
911 |
#: templates/appearance-settings.php:80
|
912 |
-
msgid ""
|
913 |
-
"
|
914 |
-
"sidebar"
|
915 |
-
msgstr ""
|
916 |
-
"Если вы добавили виджет корзины в боковое меню, следует отключить эту "
|
917 |
-
"настройку"
|
918 |
|
919 |
#: templates/appearance-settings.php:99 templates/store-popup.php:180
|
920 |
msgid "Number of categories per row"
|
@@ -937,32 +691,22 @@ msgid "Table view"
|
|
937 |
msgstr "Вид \"таблица\""
|
938 |
|
939 |
#: templates/appearance-settings.php:171 templates/store-popup.php:145
|
940 |
-
msgid ""
|
941 |
-
"
|
942 |
-
"options define maximum values. If there is not enough space to show all "
|
943 |
-
"product columns, %s will adapt the number of columns to hold all products."
|
944 |
-
msgstr ""
|
945 |
-
"Здесь вы можете задать количество отображаемых продуктов на странице. Эти "
|
946 |
-
"цифры определяют максимальные значения. Если на странице в сетке продуктов "
|
947 |
-
"будет недостаточно места для отображения всех столбцов, %s уменьшит их "
|
948 |
-
"количество."
|
949 |
|
950 |
#: templates/appearance-settings.php:178 templates/store-popup.php:193
|
951 |
msgid "Default view mode on product pages"
|
952 |
msgstr "Вид страницы продуктов по умолчанию"
|
953 |
|
954 |
-
#: templates/appearance-settings.php:183 templates/appearance-settings.php:201
|
955 |
-
#: templates/store-popup.php:197 templates/store-popup.php:215
|
956 |
msgid "Grid"
|
957 |
msgstr "Сетка"
|
958 |
|
959 |
-
#: templates/appearance-settings.php:186 templates/appearance-settings.php:204
|
960 |
-
#: templates/store-popup.php:200 templates/store-popup.php:218
|
961 |
msgid "List"
|
962 |
msgstr "Список"
|
963 |
|
964 |
-
#: templates/appearance-settings.php:189 templates/appearance-settings.php:207
|
965 |
-
#: templates/store-popup.php:203 templates/store-popup.php:221
|
966 |
msgid "Table"
|
967 |
msgstr "Таблица"
|
968 |
|
@@ -970,8 +714,7 @@ msgstr "Таблица"
|
|
970 |
msgid "Default view mode on search results"
|
971 |
msgstr "Вид страницы результатов поиска по умолчанию"
|
972 |
|
973 |
-
#: templates/connect.php:5 templates/dashboard.php:6
|
974 |
-
#: templates/reconnect-sso.php:5 templates/reconnect.php:5
|
975 |
msgid "%s Shopping Cart"
|
976 |
msgstr "Интернет-магазин %s"
|
977 |
|
@@ -983,8 +726,7 @@ msgstr "Подключите магазин<br /> к своему WordPress са
|
|
983 |
msgid "Enter your Store ID"
|
984 |
msgstr "Введите ваш ID Магазина"
|
985 |
|
986 |
-
#: templates/connect.php:20 templates/landing_old.php:27
|
987 |
-
#: templates/reconnect.php:23
|
988 |
msgid "Connect"
|
989 |
msgstr "Подключите магазин"
|
990 |
|
@@ -993,33 +735,22 @@ msgid "Save and connect"
|
|
993 |
msgstr "Сохранить и присоединить"
|
994 |
|
995 |
#: templates/connect.php:27 templates/reconnect.php:46
|
996 |
-
msgid ""
|
997 |
-
"
|
998 |
-
"your %1$s products. Please press connect to provide permission."
|
999 |
-
msgstr ""
|
1000 |
-
"Нажмите на кнопку, авторизуйтесь в %1$s и выдайте запрошенные права доступа"
|
1001 |
|
1002 |
#: templates/connect.php:32
|
1003 |
msgid "Where to find your Store ID:"
|
1004 |
msgstr "Где найти ID Магазина:"
|
1005 |
|
1006 |
#: templates/connect.php:34
|
1007 |
-
msgid ""
|
1008 |
-
"
|
1009 |
-
"your %1$s control panel: open the <a %2$s>Dashboard page</a> and find the "
|
1010 |
-
"\"<b>Store ID: NNNNNNN</b>\" text, where <b>NNNNNNN</b> is your Store "
|
1011 |
-
"ID."
|
1012 |
-
msgstr ""
|
1013 |
-
"ID магазина – это уникальный номер аккаунта в %1$s. Вы можете его найти в "
|
1014 |
-
"панели управления %1$s-магазина: откройте страницу \"<a %2$s>Консоль</a>\" и "
|
1015 |
-
"найдите текст \"<b>ID Магазина NNNNNNN</b>\". "
|
1016 |
|
1017 |
#: templates/connect.php:39
|
1018 |
msgid "Don't have an %s account? Create one now."
|
1019 |
msgstr "Ещё нет аккаунта в %s? Зарегистрируйтесь"
|
1020 |
|
1021 |
-
#: templates/dashboard.php:10 templates/store-popup.php:231
|
1022 |
-
#: templates/store-svg.php:15
|
1023 |
msgid "Store ID"
|
1024 |
msgstr "ID Магазина"
|
1025 |
|
@@ -1069,33 +800,23 @@ msgstr "Искать в базе знаний"
|
|
1069 |
|
1070 |
#: templates/help.php:29
|
1071 |
msgid "https://support.ecwid.com/hc/en-us/sections/201706719-Ecwid-Basics"
|
1072 |
-
msgstr ""
|
1073 |
-
"https://support.ecwid.com/hc/ru/sections/201706719-%D0%9D"
|
1074 |
-
"%D0%B0%D1%87%D0%B0%D0%BB%D0%BE-%D1%80%D0%B0%D0%B1%D0%BE%D1%82%D1%8B-"
|
1075 |
|
1076 |
#: templates/help.php:31
|
1077 |
msgid "Ecwid Basics"
|
1078 |
msgstr "Начало работы"
|
1079 |
|
1080 |
#: templates/help.php:35
|
1081 |
-
msgid ""
|
1082 |
-
"https://support.ecwid.com/hc/
|
1083 |
-
msgstr ""
|
1084 |
-
"https://support.ecwid.com/hc/ru/sections/201758475-%D0%A3%D0%BF"
|
1085 |
-
"%D1%80%D0%B0%D0%B2%D0%BB%D0%B5%D0%BD%D0%B8%D0%B5-%D0%BC"
|
1086 |
-
"%D0%B0%D0%B3%D0%B0%D0%B7%D0%B8%D0%BD%D0%BE%D0%BC"
|
1087 |
|
1088 |
#: templates/help.php:37
|
1089 |
msgid "Manage Your Ecwid Store"
|
1090 |
msgstr "Управление магазином"
|
1091 |
|
1092 |
#: templates/help.php:41
|
1093 |
-
msgid ""
|
1094 |
-
"https://support.ecwid.com/hc/
|
1095 |
-
msgstr ""
|
1096 |
-
"https://support.ecwid.com/hc/ru/sections/201758445-%D0%98%D0%B7%D0%BC"
|
1097 |
-
"%D0%B5%D0%BD%D0%B5%D0%BD%D0%B8%D0%B5-%D0%B4%D0%B8%D0%B7%D0%B0%D0%B9%D0%BD"
|
1098 |
-
"%D0%B0-"
|
1099 |
|
1100 |
#: templates/help.php:43
|
1101 |
msgid "Customize Your Store"
|
@@ -1103,21 +824,15 @@ msgstr "Изменение дизайна"
|
|
1103 |
|
1104 |
#: templates/help.php:47
|
1105 |
msgid "https://support.ecwid.com/hc/en-us/sections/201706799-Billing-Questions"
|
1106 |
-
msgstr ""
|
1107 |
-
"https://support.ecwid.com/hc/ru/sections/201706799-%D0%9F%D0%BE%D0%B4%D0%BF"
|
1108 |
-
"%D0%B8%D1%81%D0%BA%D0%B0"
|
1109 |
|
1110 |
#: templates/help.php:49
|
1111 |
msgid "Billing Questions"
|
1112 |
msgstr "Подписка"
|
1113 |
|
1114 |
#: templates/help.php:53
|
1115 |
-
msgid ""
|
1116 |
-
"https://support.ecwid.com/hc/
|
1117 |
-
msgstr ""
|
1118 |
-
"https://support.ecwid.com/hc/ru/sections/201702859-%D0%A2%D0%B5%D1%85%D0%BD"
|
1119 |
-
"%D0%B8%D1%87%D0%B5%D1%81%D0%BA%D0%B0%D1%8F-%D0%B8%D0%BD%D1%84%D0%BE"
|
1120 |
-
"%D1%80%D0%BC%D0%B0%D1%86%D0%B8%D1%8F"
|
1121 |
|
1122 |
#: templates/help.php:55
|
1123 |
msgid "Technical Reference"
|
@@ -1144,12 +859,8 @@ msgid "Forums"
|
|
1144 |
msgstr "Форум"
|
1145 |
|
1146 |
#: templates/help.php:212
|
1147 |
-
msgid ""
|
1148 |
-
"
|
1149 |
-
"Ecwid users."
|
1150 |
-
msgstr ""
|
1151 |
-
"Общайтесь с другими пользователями Эквида и командой поддержки клиентов по "
|
1152 |
-
"любым вопросам, связанным с работой вашего магазина."
|
1153 |
|
1154 |
#: templates/help.php:221
|
1155 |
msgid "Send a message to our support team"
|
@@ -1176,8 +887,7 @@ msgid "Your email has been sent"
|
|
1176 |
msgstr "Сообщение отправлено"
|
1177 |
|
1178 |
#: templates/help.php:249
|
1179 |
-
msgid ""
|
1180 |
-
" Thank you very much for contacting us! We will get back to you shortly."
|
1181 |
msgstr "Спасибо! Мы скоро свяжемся с вами."
|
1182 |
|
1183 |
#: templates/help.php:250
|
@@ -1189,14 +899,8 @@ msgid "Welcome to %s!"
|
|
1189 |
msgstr "Добро пожаловать в %s!"
|
1190 |
|
1191 |
#: templates/landing.php:9
|
1192 |
-
msgid ""
|
1193 |
-
"
|
1194 |
-
"successfully online is to set up your store! Let’s get started and add a "
|
1195 |
-
"store to your website in a few simple steps."
|
1196 |
-
msgstr ""
|
1197 |
-
"Спасибо, что выбрали %s для создания вашего интернет-магазина. Первый шаг к "
|
1198 |
-
"успешной онлайн торговле — настройка магазина! Давайте добавим магазин на "
|
1199 |
-
"ваш сайт за несколько простых шагов."
|
1200 |
|
1201 |
#: templates/landing.php:15 templates/landing.php:132
|
1202 |
msgid "Create Store"
|
@@ -1219,24 +923,16 @@ msgid "Free registration, No credit card required"
|
|
1219 |
msgstr "Регистрация бесплатна, кредитная карта не требуется"
|
1220 |
|
1221 |
#: templates/landing.php:46
|
1222 |
-
msgid ""
|
1223 |
-
"
|
1224 |
-
"this plugin<br /> to show your %s store on this site."
|
1225 |
-
msgstr ""
|
1226 |
-
"Ошибка подключения: после нажатия на кнопку, авторизуйтесь в %s и "
|
1227 |
-
"предоставьте запрашиваемые права."
|
1228 |
|
1229 |
#: templates/landing.php:49 templates/landing.php:160
|
1230 |
msgid "Already have %s account?"
|
1231 |
msgstr "Уже есть аккаунт в %s?"
|
1232 |
|
1233 |
#: templates/landing.php:53
|
1234 |
-
msgid ""
|
1235 |
-
"
|
1236 |
-
"permissions to show your store on this site"
|
1237 |
-
msgstr ""
|
1238 |
-
"Вам будет предложено войти в панель управления %s<br />и предоставить права "
|
1239 |
-
"доступа для отображения магазина на вашем сайте"
|
1240 |
|
1241 |
#: templates/landing.php:56 templates/landing_old.php:75
|
1242 |
msgid "Get ready to sell online"
|
@@ -1247,21 +943,12 @@ msgid "Sell Everywhere"
|
|
1247 |
msgstr "Продавайте там,<br> где ваши клиенты"
|
1248 |
|
1249 |
#: templates/landing.php:68 templates/landing_old.php:87
|
1250 |
-
msgid ""
|
1251 |
-
"
|
1252 |
-
"page, blog and marketplaces like Google Shopping, Yahoo and Shopping.com."
|
1253 |
-
msgstr ""
|
1254 |
-
"Откройте продажи на своём WordPress сайте, а затем разместите витрину "
|
1255 |
-
"магазина в социальных сетях, блоге, и выгрузите товары на торговые площадки "
|
1256 |
-
"Яндекс.Маркет, eBay и Google Shopping."
|
1257 |
|
1258 |
#: templates/landing.php:69
|
1259 |
-
msgid ""
|
1260 |
-
"
|
1261 |
-
"and inventory are always synchronized with your online store."
|
1262 |
-
msgstr ""
|
1263 |
-
"Используйте мобильное приложение %s, чтобы получать и обрабатывать заказы в "
|
1264 |
-
"любой точке продаж. Все изменения синхронизируются с магазином на лету."
|
1265 |
|
1266 |
#: templates/landing.php:75 templates/landing_old.php:94
|
1267 |
msgid "Features"
|
@@ -1280,12 +967,8 @@ msgid "Free and always up to date"
|
|
1280 |
msgstr "Бесплатный план и обновления"
|
1281 |
|
1282 |
#: templates/landing.php:92 templates/landing_old.php:111
|
1283 |
-
msgid ""
|
1284 |
-
"
|
1285 |
-
"Updates are seamless, automatic<br>and free of charge."
|
1286 |
-
msgstr ""
|
1287 |
-
"Всегда доступный бесплатный план с множеством<br>возможностей. Обновления "
|
1288 |
-
"магазина автоматизированы,<br> бесплатны и не требуют вашего участия."
|
1289 |
|
1290 |
#: templates/landing.php:102 templates/landing_old.php:121
|
1291 |
msgid "Responsive design"
|
@@ -1293,9 +976,7 @@ msgstr "Адаптивный дизайн"
|
|
1293 |
|
1294 |
#: templates/landing.php:103 templates/landing_old.php:122
|
1295 |
msgid "Your store looks perfect<br />on all devices"
|
1296 |
-
msgstr ""
|
1297 |
-
"Ваш магазин выглядит превосходно<br />на любом устройстве: планшете, "
|
1298 |
-
"смартфоне и ноутбуке."
|
1299 |
|
1300 |
#: templates/landing.php:111 templates/landing_old.php:130
|
1301 |
msgid "PCI DSS Certified"
|
@@ -1303,9 +984,7 @@ msgstr "Сертификация по PCI DSS"
|
|
1303 |
|
1304 |
#: templates/landing.php:112 templates/landing_old.php:131
|
1305 |
msgid "Secure checkout with over 40<br />payment options"
|
1306 |
-
msgstr ""
|
1307 |
-
"Эквид сертифицирован по стандарту Level 1 PCI DSS – самому высокому уровню "
|
1308 |
-
"безопасности передачи данных."
|
1309 |
|
1310 |
#: templates/landing.php:120 templates/landing_old.php:139
|
1311 |
msgid "Global Reach"
|
@@ -1328,30 +1007,20 @@ msgid "Plugin is installed successfully!"
|
|
1328 |
msgstr "Плагин успешно установлен!"
|
1329 |
|
1330 |
#: templates/landing_old.php:9
|
1331 |
-
msgid ""
|
1332 |
-
"
|
1333 |
-
msgstr ""
|
1334 |
-
"До открытия магазина на вашем WordPress сайте<br /> осталось несколько "
|
1335 |
-
"простых шагов"
|
1336 |
|
1337 |
#: templates/landing_old.php:13
|
1338 |
-
msgid ""
|
1339 |
-
"
|
1340 |
-
msgstr ""
|
1341 |
-
"До открытия магазина на вашем WordPress сайте<br /> осталось несколько "
|
1342 |
-
"простых шагов"
|
1343 |
|
1344 |
#: templates/landing_old.php:19
|
1345 |
msgid "Register"
|
1346 |
msgstr "Зарегистрируйтесь"
|
1347 |
|
1348 |
#: templates/landing_old.php:20
|
1349 |
-
msgid ""
|
1350 |
-
"
|
1351 |
-
"credit card required"
|
1352 |
-
msgstr ""
|
1353 |
-
"Зарегистрируйте бесплатный аккаунт в Эквиде.<br /> Кредитная карта не "
|
1354 |
-
"требуется"
|
1355 |
|
1356 |
#: templates/landing_old.php:29
|
1357 |
msgid "Add your Ecwid store to your site <nobr>in two clicks</nobr>"
|
@@ -1378,20 +1047,12 @@ msgid "Connect your store"
|
|
1378 |
msgstr "Подключить магазин"
|
1379 |
|
1380 |
#: templates/landing_old.php:55
|
1381 |
-
msgid ""
|
1382 |
-
"
|
1383 |
-
"this plugin<br /> to show your Ecwid store on this site."
|
1384 |
-
msgstr ""
|
1385 |
-
"Ошибка подключения: пожалуйста, нажмите кнопку ещё раз и предоставьте права "
|
1386 |
-
"доступа плагину<br /> для публикации своего Эквид-магазина на этом сайте."
|
1387 |
|
1388 |
#: templates/landing_old.php:58 templates/landing_old.php:69
|
1389 |
-
msgid ""
|
1390 |
-
"
|
1391 |
-
"permissions to show your store on this site"
|
1392 |
-
msgstr ""
|
1393 |
-
"Вам будет предложено войти в панель управления Эквида<br />и предоставить "
|
1394 |
-
"права доступа для отображения магазина на вашем сайте"
|
1395 |
|
1396 |
#: templates/landing_old.php:61 templates/landing_old.php:157
|
1397 |
msgid "Already have Ecwid account?"
|
@@ -1414,16 +1075,11 @@ msgid "Sell Everywhere<br>with your Ecwid store"
|
|
1414 |
msgstr "Продавайте там,<br> где ваши клиенты"
|
1415 |
|
1416 |
#: templates/landing_old.php:88
|
1417 |
-
msgid ""
|
1418 |
-
"
|
1419 |
-
"and inventory are always synchronized with your online store."
|
1420 |
-
msgstr ""
|
1421 |
-
"Используйте наше мобильное приложение, чтобы получать и обрабатывать заказы "
|
1422 |
-
"в любой точке продаж. Все изменения синхронизируются с магазином на лету."
|
1423 |
|
1424 |
#: templates/landing_old.php:102
|
1425 |
-
msgid ""
|
1426 |
-
"Ecwid is compatible with your<br>“%s” WordPress theme<br>out of the box."
|
1427 |
msgstr "Эквид совместим с темой<br>\"%s\" вашего сайта из коробки."
|
1428 |
|
1429 |
#: templates/landing_old.php:140
|
@@ -1442,8 +1098,7 @@ msgstr "Название"
|
|
1442 |
msgid "SKU"
|
1443 |
msgstr "Артикул"
|
1444 |
|
1445 |
-
#: templates/product-popup.php:47 templates/product-popup.php:53
|
1446 |
-
#: templates/product-popup.php:56
|
1447 |
msgid "Search"
|
1448 |
msgstr "Поиск"
|
1449 |
|
@@ -1460,11 +1115,8 @@ msgid "Next page"
|
|
1460 |
msgstr "Следующая"
|
1461 |
|
1462 |
#: templates/product-popup.php:94
|
1463 |
-
msgid ""
|
1464 |
-
"
|
1465 |
-
msgstr ""
|
1466 |
-
"По запросу <span class=\"empty-page__term\">\"{{ data.term }}\"</span> "
|
1467 |
-
"ничего не найдено"
|
1468 |
|
1469 |
#: templates/product-popup.php:96
|
1470 |
msgid "Try another search."
|
@@ -1557,33 +1209,20 @@ msgid "Your store Control Panel. Right here in WordPress."
|
|
1557 |
msgstr "Панель управления магазином, встроенная в Wordpress."
|
1558 |
|
1559 |
#: templates/reconnect-sso.php:12
|
1560 |
-
msgid ""
|
1561 |
-
"
|
1562 |
-
"leaving this page."
|
1563 |
-
msgstr ""
|
1564 |
-
"Вы сможете добавлять товары, обрабатывать заказы и управлять магазином прямо "
|
1565 |
-
"на этой странице."
|
1566 |
|
1567 |
#: templates/reconnect-sso.php:14
|
1568 |
msgid "Re-connect to Enable Control Panel"
|
1569 |
msgstr "Подключить панель управления"
|
1570 |
|
1571 |
#: templates/reconnect.php:31
|
1572 |
-
msgid ""
|
1573 |
-
"
|
1574 |
-
"permissions to use our plugin. Please, try again."
|
1575 |
-
msgstr ""
|
1576 |
-
"Ошибка подключения: после нажатия на кнопку, авторизуйтесь в Эквиде и "
|
1577 |
-
"предоставьте запрашиваемые права."
|
1578 |
|
1579 |
#: templates/reconnect.php:39
|
1580 |
-
msgid ""
|
1581 |
-
"
|
1582 |
-
"for %s API to work. Please, contact your hosting provider to enable cURL."
|
1583 |
-
msgstr ""
|
1584 |
-
"Похоже, что ваш сервер не поддерживает удаленные POST запросы, которые "
|
1585 |
-
"необходимы для работы %s API. Пожалуйста, свяжитесь с хостинг-провайдером, "
|
1586 |
-
"чтобы исправить это."
|
1587 |
|
1588 |
#: templates/store-popup.php:12 templates/store-popup.php:25
|
1589 |
msgid "Store elements"
|
@@ -1610,12 +1249,8 @@ msgid "Show categories"
|
|
1610 |
msgstr "Меню категорий"
|
1611 |
|
1612 |
#: templates/store-popup.php:72
|
1613 |
-
msgid ""
|
1614 |
-
"
|
1615 |
-
"%s>WordPress native widgets</a>"
|
1616 |
-
msgstr ""
|
1617 |
-
"Кроме того, вы можете добавить отдельные элементы магазина в сайдбар сайта "
|
1618 |
-
"используя <a %s>встроенные виджеты WordPress</a>"
|
1619 |
|
1620 |
#: templates/store-popup.php:233
|
1621 |
msgid "Demo store"
|
@@ -1642,12 +1277,8 @@ msgid "Demo Store"
|
|
1642 |
msgstr "Демонстрационный магазин"
|
1643 |
|
1644 |
#: templates/sync.php:161
|
1645 |
-
msgid ""
|
1646 |
-
"
|
1647 |
-
"product information."
|
1648 |
-
msgstr ""
|
1649 |
-
"Чтобы включить интеграцию с поиском, нужно дать плагину доступ до данных "
|
1650 |
-
"товаров в магазине."
|
1651 |
|
1652 |
#: templates/sync.php:162
|
1653 |
msgid "Provide access."
|
@@ -1658,20 +1289,15 @@ msgid "Synchronize products"
|
|
1658 |
msgstr "Синхронизировать товары"
|
1659 |
|
1660 |
#: templates/sync.php:175
|
1661 |
-
msgid ""
|
1662 |
-
"
|
1663 |
-
"not reload the page."
|
1664 |
-
msgstr ""
|
1665 |
-
"Товары загружаются. Это может занять несколько минут. Пожалуйста, не "
|
1666 |
-
"перезагружайте страницу."
|
1667 |
|
1668 |
#: templates/sync.php:179
|
1669 |
msgid "Products synchronized: %s out of %s"
|
1670 |
msgstr "Загружено товаров: %s из %s"
|
1671 |
|
1672 |
#: templates/sync.php:186
|
1673 |
-
msgid ""
|
1674 |
-
"Products are successfully synchronized. The product pages are up to date."
|
1675 |
msgstr "Товары успешно синхронизированы. Страницы товаров обновлены."
|
1676 |
|
1677 |
#: templates/sync.php:190
|
@@ -1708,7 +1334,7 @@ msgstr "https://support.ecwid.com/hc/ru"
|
|
1708 |
|
1709 |
#. Plugin Name of the plugin/theme
|
1710 |
msgid "Ecwid Shopping Cart"
|
1711 |
-
msgstr "
|
1712 |
|
1713 |
msgid "%s products and categories"
|
1714 |
msgstr "Товары и категории магазина %s"
|
@@ -1902,6 +1528,9 @@ msgstr "Горизонтальные 4:3"
|
|
1902 |
msgid "Landscape 3:2"
|
1903 |
msgstr "Горизонтальные 3:2"
|
1904 |
|
|
|
|
|
|
|
1905 |
msgid "Migration warning"
|
1906 |
msgstr ""
|
1907 |
|
@@ -2016,33 +1645,21 @@ msgstr "Витрина магазина"
|
|
2016 |
msgid "To improve the look and feel of your product page and manage your its appearance here, please enable the “Next-gen look and feel of the product page on the storefront” option in your store dashboard (<a href=\"admin.php?page=ec-store-admin-whatsnew\">Settings → What’s New</a>)."
|
2017 |
msgstr "Чтобы обновить дизайн страницы товара и управлять настройками вида в редакторе, включите опцию “Обновленный внешний вид страницы товара” в панели управления магазина (<a href=\"admin.php?page=ec-store-admin-whatsnew\">Настройки → Обновления</a>)"
|
2018 |
|
2019 |
-
#. #-#-#-#-# ecwid-shopping-cart.pot (Ecwid Shopping Cart 5.2) #-#-#-#-#
|
2020 |
#. Plugin URI of the plugin/theme
|
2021 |
-
#. #-#-#-#-# ecwid-shopping-cart.pot (Ecwid Shopping Cart 5.2) #-#-#-#-#
|
2022 |
#. Author URI of the plugin/theme
|
2023 |
msgid "http://www.ecwid.com?source=wporg"
|
2024 |
msgstr ""
|
2025 |
|
2026 |
#. Description of the plugin/theme
|
2027 |
-
msgid ""
|
2028 |
-
"Ecwid is a free full-featured shopping cart. It can be easily integrated "
|
2029 |
-
"with any Wordpress blog and takes less than 5 minutes to set up."
|
2030 |
msgstr "Эквид — это конструктор интернет-магазина."
|
2031 |
|
2032 |
#. Author of the plugin/theme
|
2033 |
msgid "Ecwid Team"
|
2034 |
msgstr ""
|
2035 |
|
2036 |
-
#~ msgid ""
|
2037 |
-
#~ "
|
2038 |
-
#~ "friendly and look better. Please enable them on the plugin settings page "
|
2039 |
-
#~ "and check how they work in your store. The new widgets will be enabled "
|
2040 |
-
#~ "automatically for all users in one of the upcoming plugin versions."
|
2041 |
-
#~ msgstr ""
|
2042 |
-
#~ "Блоки %s в вашем %s-магазине обновлены – теперь они выглядят приятнее и "
|
2043 |
-
#~ "лучше работают на мобильных. Пожалуйста, включите новый вид блоков поиска "
|
2044 |
-
#~ "и категорий на странице настроек плагина. В одном следующих обновлений "
|
2045 |
-
#~ "плагина они будут включены автоматически для всех пользователей."
|
2046 |
|
2047 |
#~ msgctxt "upgrade widgets message"
|
2048 |
#~ msgid "Categories"
|
@@ -2051,21 +1668,11 @@ msgstr ""
|
|
2051 |
#~ msgid "Open %s store settings"
|
2052 |
#~ msgstr "Открыть настройки плагина %s"
|
2053 |
|
2054 |
-
#~ msgid ""
|
2055 |
-
#~ "<a href=\"admin.php?page=ecwid-help\"
|
2056 |
-
#~ msgstr ""
|
2057 |
-
#~ "<a href=\"admin.php?page=ecwid-help\">Посетите Центр поддержки Эквида или "
|
2058 |
-
#~ "напишите нам</a>"
|
2059 |
|
2060 |
#~ msgid "Enable the new category menu"
|
2061 |
#~ msgstr "Включить новое меню категорий"
|
2062 |
|
2063 |
-
#~ msgid ""
|
2064 |
-
#~ "
|
2065 |
-
#~ "haven't yet added category menu to your store page, you can do that in "
|
2066 |
-
#~ "the <a %s>store page editor</a> (enable the \"Show categories\" option)"
|
2067 |
-
#~ msgstr ""
|
2068 |
-
#~ "Новое меню категорий лучше выглядит и отлично работает на мобильных "
|
2069 |
-
#~ "устройствах. Если у вас на странице магазина пока нет меню категорий, "
|
2070 |
-
#~ "добавьте его в <a %s>настройках страницы магазина</a> (включите виджет "
|
2071 |
-
#~ "\"Категории\")."
|
3 |
msgid ""
|
4 |
msgstr ""
|
5 |
"Project-Id-Version: Ecwid Shopping Cart 4.9.4\n"
|
6 |
+
"Report-Msgid-Bugs-To: https://wordpress.org/support/plugin/ecwid-shopping-cart\n"
|
|
|
7 |
"POT-Creation-Date: 2017-05-30 19:04:12+00:00\n"
|
8 |
+
"PO-Revision-Date: 2019-03-11 10:13+0400\n"
|
9 |
+
"Language: ru_RU\n"
|
|
|
|
|
10 |
"MIME-Version: 1.0\n"
|
11 |
"Content-Type: text/plain; charset=UTF-8\n"
|
12 |
"Content-Transfer-Encoding: 8bit\n"
|
13 |
+
"Last-Translator: \n"
|
14 |
+
"Language-Team: \n"
|
15 |
+
"X-Generator: Poedit 2.2.1\n"
|
16 |
|
17 |
#: ecwid-shopping-cart.php:820
|
18 |
msgid "%s plugin doesn't work well with my \"%s\" theme"
|
35 |
msgstr "Посмотреть FAQ"
|
36 |
|
37 |
#: ecwid-shopping-cart.php:881
|
38 |
+
msgid "https://support.ecwid.com/hc/en-us/articles/360000635709-Customizing-design-of-your-Ecwid-store-on-a-Wordpress-site"
|
|
|
39 |
msgstr "https://support.ecwid.com/hc/ru/articles/207101259-Wordpress-ORG"
|
40 |
|
41 |
#: ecwid-shopping-cart.php:890
|
46 |
msgid "<a %s>Online store powered by %s</a>"
|
47 |
msgstr "<a %s>Интернет магазин построен на Эквиде</a>"
|
48 |
|
49 |
+
#: ecwid-shopping-cart.php:1497 includes/class-ecwid-nav-menus.php:111 includes/class-ecwid-nav-menus.php:297 includes/class-ecwid-nav-menus.php:300 includes/class-ecwid-nav-menus.php:308
|
|
|
|
|
|
|
50 |
msgid "Store"
|
51 |
msgstr "Магазин"
|
52 |
|
66 |
msgid "Dashboard"
|
67 |
msgstr "Консоль"
|
68 |
|
69 |
+
#: ecwid-shopping-cart.php:1801 includes/class-ecwid-admin.php:58 includes/class-ecwid-admin.php:59 includes/class-ecwid-products.php:242
|
|
|
70 |
msgid "Products"
|
71 |
msgstr "Товары"
|
72 |
|
83 |
msgstr "Готово"
|
84 |
|
85 |
#: ecwid-shopping-cart.php:1807 includes/class-ecwid-nav-menus.php:146
|
86 |
+
msgid "The store top-level categories are automatically added to this drop-down menu"
|
|
|
87 |
msgstr "Корневые категории добавляются в выпадающее меню автоматически"
|
88 |
|
89 |
#: ecwid-shopping-cart.php:1916 includes/class-ecwid-oauth.php:336
|
90 |
+
msgid "To be able to choose a product to insert to your posts and pages, you will need to re-connect your site to your %s. This will only require you to accept permissions request – so that the plugin will be able to list your products in the \"Add product\" dialog."
|
91 |
+
msgstr "Чтобы показать товары магазина в диалоге вставки товара, плагину нужно подключиться к вашему магазину %s. От вас потребуется только разрешить плагину доступ к вашему магазину."
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
92 |
|
93 |
#: ecwid-shopping-cart.php:2420
|
94 |
msgid "Recommendations for Your Online Store"
|
110 |
msgid "Appearance settings"
|
111 |
msgstr "Настройки внешнего вида"
|
112 |
|
113 |
+
#: includes/class-ecwid-admin.php:69 templates/product-popup.php:183 templates/store-popup.php:13 templates/store-popup.php:31
|
|
|
114 |
msgid "Appearance"
|
115 |
msgstr "Внешний вид"
|
116 |
|
143 |
msgstr ""
|
144 |
|
145 |
#: includes/class-ecwid-integration-divibuilder.php:51
|
146 |
+
msgid "This will change the label of the module in the builder for easy identification."
|
|
|
|
|
147 |
msgstr ""
|
148 |
|
149 |
#: includes/class-ecwid-integration-divibuilder.php:54
|
151 |
msgstr ""
|
152 |
|
153 |
#: includes/class-ecwid-integration-divibuilder.php:57
|
154 |
+
msgid "Enter an optional CSS ID to be used for this module. An ID can be used to create custom CSS styling, or to create links to particular sections of your page."
|
|
|
|
|
|
|
155 |
msgstr ""
|
156 |
|
157 |
#: includes/class-ecwid-integration-divibuilder.php:60
|
159 |
msgstr ""
|
160 |
|
161 |
#: includes/class-ecwid-integration-divibuilder.php:63
|
162 |
+
msgid "Enter optional CSS classes to be used for this module. A CSS class can be used to create custom CSS styling. You can add multiple classes, separated with a space."
|
|
|
|
|
|
|
163 |
msgstr ""
|
164 |
|
165 |
#: includes/class-ecwid-message-manager.php:45
|
166 |
msgid ""
|
167 |
+
"Sorry, there is a problem. This page is supposed to display your store Control Panel. However, this Wordpress site doesn't seem to be able to connect to the Ecwid server to show your store dashboard here. This is likely caused by your server misconfiguration and can be fixed by your hosting "
|
168 |
+
"provider. Here is a more techy description of the problem, which you can send to your hosting provider: \"The Wordpress function wp_remote_post() failed to connect a remote server because of some error: \"%s\". Seems like HTTP POST requests are disabled on this server\". <br /><br />Please "
|
169 |
+
"feel free to contact us at <a %s>wordpress@ecwid.com</a> and we will help you contact your hosting and ask them to fix the issue. <br /><br /> Meanwhile, to manage your store, you can use the Ecwid Web Control Panel at <a %s>my.ecwid.com</a>. Your store front is working fine as well and you "
|
170 |
+
"can check it here: <a %s>%s</a>."
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
171 |
msgstr ""
|
172 |
|
173 |
#: includes/class-ecwid-message-manager.php:194
|
195 |
msgstr "Продолжить установку"
|
196 |
|
197 |
#: includes/class-ecwid-message-manager.php:212
|
198 |
+
msgid "To add extra functions to your store, drag and drop %s store elements on your site. When you're done, you can get back to modifying your settings."
|
199 |
+
msgstr "Добавьте дополнительные элементы магазина, перетащив виджеты %s в нужное место сайта. После установки виджетов можете вернуться к настройкам магазина."
|
|
|
|
|
|
|
|
|
200 |
|
201 |
#: includes/class-ecwid-message-manager.php:213
|
202 |
msgid "Back to Store Settings"
|
203 |
msgstr "Вернуться к настройкам"
|
204 |
|
205 |
#: includes/class-ecwid-message-manager.php:220
|
206 |
+
msgid "Do you like your %s online store? We'd appreciate it if you add your review and vote for the plugin on WordPress site."
|
207 |
+
msgstr "Вам нравится ваш магазин? Будем благодарны, если вы оставите отзыв и проголосуете за %s на сайте WordPress."
|
|
|
|
|
|
|
|
|
208 |
|
209 |
#: includes/class-ecwid-message-manager.php:224
|
210 |
msgid "Rate %s at WordPress.org"
|
230 |
msgid "Cart"
|
231 |
msgstr "Корзина"
|
232 |
|
233 |
+
#: includes/class-ecwid-nav-menus.php:276 includes/widgets/class-ecwid-widget-minicart.php:6
|
|
|
234 |
msgid "Shopping Cart"
|
235 |
msgstr "Корзина"
|
236 |
|
237 |
+
#: includes/class-ecwid-nav-menus.php:281 includes/class-ecwid-nav-menus.php:284 includes/widgets/class-ecwid-widget-search.php:10
|
|
|
|
|
238 |
msgid "Product Search"
|
239 |
msgstr "Поиск товаров"
|
240 |
|
241 |
+
#: includes/class-ecwid-nav-menus.php:289 includes/class-ecwid-nav-menus.php:292
|
|
|
242 |
msgid "My Account"
|
243 |
msgstr "Профиль"
|
244 |
|
266 |
msgid "Last Page"
|
267 |
msgstr "Конец"
|
268 |
|
269 |
+
#: includes/class-ecwid-store-editor.php:44 templates/store-popup.php:11 templates/store-popup.php:19
|
|
|
270 |
msgid "Add Store"
|
271 |
msgstr "Добавить магазин"
|
272 |
|
284 |
|
285 |
#: includes/faq_entries.php:6
|
286 |
msgid ""
|
287 |
+
"Ecwid is PCI DSS Level 1 certified, which is the gold standard for e-commerce solutions worldwide. This means you won't have any banking compliance issues when selling online with Ecwid. <a target=\"_blank\" href=\"https://support.ecwid.com/hc/en-us/articles/207101259-Wordpress-downloadable-"
|
288 |
+
"#security\">More details.</a>"
|
|
|
|
|
|
|
289 |
msgstr ""
|
290 |
+
"Эквид сертифицирован по стандарту PCI DSS Level 1. Это высший уровень соответствия мировым требованиям безопасной передачи данных: информация вашего магазина и ваших клиентов надёжно защищена. <a target=\"_blank\" href=\"https://support.ecwid.com/hc/ru/articles/207101259-Wordpress#security"
|
291 |
+
"\">Подробнее о безопасности.</a>"
|
|
|
|
|
|
|
292 |
|
293 |
#: includes/faq_entries.php:12
|
294 |
msgid "How can I manage my store from a mobile device?"
|
296 |
|
297 |
#: includes/faq_entries.php:13
|
298 |
msgid ""
|
299 |
+
"Ecwid provides free mobile applications for iOS and Android to manage your store and sell on the go. Scan products, track inventory, manage sales and accept payments using your mobile device as a POS station. <a target=\"_blank\" href=\"https://www.ecwid.com/ecwid-mobile\">More details.</a>"
|
|
|
|
|
|
|
300 |
msgstr ""
|
301 |
+
"Лучший способ быстро изменить что-либо в товаре – воспользоваться мобильным приложение. Приложение Эквида для iOS и Android доступно с любым платным тарифным планом и поможет вам управлять заказами, вносить изменения в каталог товаров и регистрировать новые покупки при личных встречах с "
|
302 |
+
"покупателями где бы вы ни находились. <a target=\"_blank\" href=\"https://www.ecwid.ru/blog/quick-mobile-connect.html\">Подробнее о мобильном приложении.</a>"
|
|
|
|
|
|
|
|
|
|
|
303 |
|
304 |
#: includes/faq_entries.php:20
|
305 |
msgid "How to set up a storefront on Facebook with Ecwid?"
|
307 |
|
308 |
#: includes/faq_entries.php:21
|
309 |
msgid ""
|
310 |
+
"You can add your online store to your Facebook business page. No addons needed. Ecwid will automatically synchronize products, customers, orders and inventory between your WordPress and Facebook storefronts. <a target=\"_blank\" href=\"https://support.ecwid.com/hc/en-us/articles/115005892705-"
|
311 |
+
"Facebook-Shop\">More details.</a>"
|
|
|
|
|
|
|
312 |
msgstr ""
|
313 |
+
"Вы можете разместить магазин не только на своём WordPress-сайте, но и на любой другой странице включая Facebook. Зеркальная копия витрины мгновенно отражает любые изменения в магазине. Новые товары в каталоге, наличие на складе, заказы и покупатели – все данные распространяются между "
|
314 |
+
"витринами на лету. <a target=\"_blank\" href=\"https://support.ecwid.com/hc/ru/articles/115005892705-%D0%9C%D0%B0%D0%B3%D0%B0%D0%B7%D0%B8%D0%BD-%D0%BD%D0%B0-%D0%A4%D0%B5%D0%B9%D1%81%D0%B1%D1%83%D0%BA%D0%B5\">Подробнее об установке на Facebook.</a>"
|
|
|
|
|
|
|
|
|
|
|
315 |
|
316 |
#: includes/faq_entries.php:28
|
317 |
msgid "How can I add a cart widget to my site sidebar?"
|
318 |
msgstr "Как добавить корзину в боковую панель сайта (sidebar)?"
|
319 |
|
320 |
#: includes/faq_entries.php:30
|
321 |
+
msgid "You can add product search box, cart widget and more on the <a href=\"%s\">\"Appearance / Widgets page\"</a> here in your site admin. <a target=\"_blank\" href=\"https://support.ecwid.com/hc/en-us/articles/207101259-Wordpress-downloadable-#sidebarwidgets\">More details.</a>"
|
322 |
+
msgstr "Вы можете добавить корзину, форму для поиска товаров и другие элементы магазина в боковую панель на странице <a href=\"%s\">«Внешний вид > Виджеты»</a>."
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
323 |
|
324 |
#: includes/faq_entries.php:38
|
325 |
msgid "How much does Ecwid cost?"
|
326 |
msgstr "Сколько стоит Эквид?"
|
327 |
|
328 |
#: includes/faq_entries.php:39
|
329 |
+
msgid "Our 4 account types vary by number of products, types of functionality, and level of support. For more information, check out our <a target=\"_blank\" href=\"%s\">pricing page.</a><br /><br />Pro Tip: You can also save money by enrolling in our annual plans."
|
330 |
+
msgstr "Мы предлагаем 4 тарифных плана: от бесплатного с 10 товарами до безлимитного. Платные тарифные планы расширяют возможности магазина и открывают персональную техническую поддержку в реальном времени.<br /><a target=\"_blank\" href=\"%s\">Подробнее о расценках.</a>"
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
331 |
|
332 |
#: includes/faq_entries.php:45
|
333 |
msgid "How do I add store categories to the site menu?"
|
335 |
|
336 |
#: includes/faq_entries.php:46
|
337 |
msgid ""
|
338 |
+
"You can add the store categories menu to your site menu to help your customers easily navigate your site. Just open \"Appearance > Menus\" in your WordPress control panel and add the \"Store with Categories Menu\" item to your site menu. A drop-down menu containing your store categories will "
|
|
|
|
|
|
|
339 |
"automatically appear on your site."
|
340 |
+
msgstr "Перейдите на страницу «Внешний вид > Меню», добавьте элемент «Магазин с меню категорий» в меню и сохраните изменения. Сразу после сохранения меню сайта пополнится выпадающим списком категорий вашего магазина."
|
|
|
|
|
|
|
341 |
|
342 |
#: includes/faq_entries.php:52
|
343 |
msgid "How do I put my products in the sitemap?"
|
345 |
|
346 |
#: includes/faq_entries.php:53
|
347 |
msgid ""
|
348 |
+
"To create sitemap for your Wordpress site we suggest using <a target=\"_blank\" href=\"https://wordpress.org/plugins/google-sitemap-generator/\">Google XML Sitemaps</a> or <a target=\"_blank\" href=\"https://wordpress.org/plugins/wordpress-seo/\">Yoast Wordpress SEO</a>. plugins. These "
|
349 |
+
"plugins are fully compatible with Ecwid and allow to generate a sitemap that will contain links to categories and product pages, so the store pages will get indexed faster. Please note that this option is available to <a target=\"_blank\" href=\"https://www.ecwid.com/pricing\">paid Ecwid "
|
350 |
+
"users</a>."
|
|
|
|
|
|
|
|
|
|
|
351 |
msgstr ""
|
352 |
+
"Для создания карты сайта мы рекомендуем использовать плагин <a target=\"_blank\" href=\"https://ru.wordpress.org/plugins/google-sitemap-plugin/\">Google XML Sitemaps</a> или <a target=\"_blank\" href=\"https://ru.wordpress.org/plugins/wordpress-seo/\">Yoast Wordpress SEO</a>. После установки "
|
353 |
+
"плагин создаст карту сайта, содержащую ссылки на страницы товаров и категорий, и ускорит их индексацию поисковыми движками. Чтобы воспользоваться этой возможностью подпишитесь на любой <a target=\"_blank\" href=\"https://www.ecwid.ru/pricing\">платный тарифный план</a>."
|
|
|
|
|
|
|
|
|
|
|
|
|
354 |
|
355 |
#: includes/faq_entries.php:58
|
356 |
+
msgid "How to add a single product with the add to bag button to the site pages?"
|
|
|
357 |
msgstr "Как добавить отдельный товар с корзиной на страницу сайта?"
|
358 |
|
359 |
#: includes/faq_entries.php:59
|
360 |
+
msgid "To feature a single product on a separate page or blog post of your site, use <b>[ecwid_product]</b> shortcode. <a target=\"_blank\" href=\"https://support.ecwid.com/hc/en-us/articles/207101259-Wordpress-downloadable-#buynow\">How to use it.</a>"
|
361 |
+
msgstr "Чтобы разместить товар магазина на страницах сайта отдельно от остальных, используйте короткий код [ecwid_product]. <a target=\"_blank\" href=\"https://support.ecwid.com/hc/ru/articles/207101259-Wordpress#embedasingleproduct\">Пошаговая инструкция.</a>"
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
362 |
|
363 |
#: includes/faq_entries.php:65
|
364 |
msgid "Is it possible to display my store on the site home page?"
|
365 |
msgstr "Как добавить магазин на домашнюю страницу?"
|
366 |
|
367 |
#: includes/faq_entries.php:66
|
368 |
+
msgid "You can display your store on the site main page. Adjust the \"Reading\" settings of your site as described in our <a target=\"_blank\" href=\"https://support.ecwid.com/hc/en-us/articles/207101259-Wordpress-downloadable-#displaystoreonhomepage\">Help Center.</a>"
|
369 |
+
msgstr "Перейдите на страницу <a href=\"options-reading.php\">«Настройки > Чтение»</a> и выберите «Магазин\t» в выпадающем списке главной страницы."
|
|
|
|
|
|
|
|
|
|
|
|
|
370 |
|
371 |
msgid "Is there a WordPress theme for Ecwid?"
|
372 |
msgstr "Существуют ли темы для Эквида?"
|
373 |
|
374 |
#: includes/faq_entries.php:66
|
375 |
msgid "Ecwid is compatible with any WordPress theme. Be it a free theme from WordPress.org catalog, a premium theme by a third-party vendor or a custom-made theme, your Ecwid store will work good with it. If you want a premium theme, we recommend <a href=\"%s\">TemplateMonster themes</a>"
|
376 |
+
msgstr "Эквид совместим с любой темой, будь то бесплатная тема из каталога WordPress.org, платная тема или заказная разработка. Ваш магазин должен работать хорошо в любом случае. Если вы ищете хорошие премиум-темы, мы рекомендуем <a href=\"%s\">TemplateMonster</a>"
|
|
|
|
|
377 |
|
378 |
#: includes/oembed.php:68 includes/oembed.php:97 templates/help.php:96
|
379 |
msgid "See more"
|
380 |
msgstr "Посмотреть все"
|
381 |
|
382 |
+
#: includes/themes/class-ecwid-theme-twentyfifteen.php:32 includes/themes/class-ecwid-theme-twentyfifteen.php:38 includes/themes/class-ecwid-theme-twentyseventeen.php:47 includes/themes/class-ecwid-theme-twentyseventeen.php:53 includes/themes/class-ecwid-theme-twentysixteen.php:35
|
383 |
+
#: includes/themes/class-ecwid-theme-twentysixteen.php:41 includes/widgets/class-ecwid-widget-store-link.php:29
|
|
|
|
|
|
|
|
|
|
|
384 |
msgid "Shop"
|
385 |
msgstr "Магазин"
|
386 |
|
387 |
#: includes/widgets/class-ecwid-widget-badge.php:9
|
388 |
+
msgid "Do you like Ecwid and want to help it grow? You can add this fancy 'Powered by Ecwid' badge on your site to show your visitors that you're a proud user of Ecwid."
|
389 |
+
msgstr "Если вам нравится Эквид и вы хотите помочь ему стать самым популярным конструктором интернет-магазинов, вы можете добавить значок на сайт, чтобы показать посетителям, что вы пользуетесь Эквидом."
|
|
|
|
|
|
|
|
|
|
|
|
|
390 |
|
391 |
#: includes/widgets/class-ecwid-widget-badge.php:10
|
392 |
msgid "Ecwid Badge"
|
393 |
msgstr "Значок Эквида"
|
394 |
|
395 |
+
#: includes/widgets/class-ecwid-widget-badge.php:17 includes/widgets/class-ecwid-widget-badge.php:23
|
|
|
396 |
msgid "Ecwid shopping cart widget"
|
397 |
msgstr "Виджет интернет-магазина Эквид"
|
398 |
|
399 |
+
#: includes/widgets/class-ecwid-widget-badge.php:29 includes/widgets/class-ecwid-widget-badge.php:65
|
|
|
400 |
msgid "Ecwid ecommerce solution"
|
401 |
msgstr "Решение для электронной коммерции Эквид"
|
402 |
|
403 |
+
#: includes/widgets/class-ecwid-widget-badge.php:35 includes/widgets/class-ecwid-widget-badge.php:71
|
|
|
404 |
msgid "Ecwid free shopping cart"
|
405 |
msgstr "Беспланный конструктов интернет-магазинов Эквид"
|
406 |
|
407 |
+
#: includes/widgets/class-ecwid-widget-badge.php:41 includes/widgets/class-ecwid-widget-badge.php:53
|
|
|
408 |
msgid "Ecwid shopping cart"
|
409 |
msgstr "Интернет-магазин Эквид"
|
410 |
|
411 |
+
#: includes/widgets/class-ecwid-widget-badge.php:47 includes/widgets/class-ecwid-widget-badge.php:59
|
|
|
412 |
msgid "Ecwid e-commerce widgets"
|
413 |
msgstr "Виджеты для электронной коммерции Эквид"
|
414 |
|
433 |
msgstr "Справа вверху"
|
434 |
|
435 |
#: includes/widgets/class-ecwid-widget-minicart-miniview.php:5
|
436 |
+
msgid "Adds a compact cart widget for customer to see the products they added to the cart."
|
437 |
+
msgstr "Добавляет компактный виджет корзины покупателя для быстрого доступа к добавленным товарам."
|
|
|
|
|
|
|
|
|
438 |
|
439 |
#: includes/widgets/class-ecwid-widget-minicart-miniview.php:6
|
440 |
msgid "Shopping Cart (Mini)"
|
441 |
msgstr "Корзина (Мини)"
|
442 |
|
443 |
+
#: includes/widgets/class-ecwid-widget-minicart-miniview.php:44 includes/widgets/class-ecwid-widget-minicart.php:44 includes/widgets/class-ecwid-widget-search.php:49 includes/widgets/class-ecwid-widget-vcategories.php:43 includes/widgets/class-ecwid-widget-vertical-categories-list.php:71
|
|
|
|
|
|
|
|
|
444 |
msgid "Title:"
|
445 |
msgstr "Название:"
|
446 |
|
447 |
#: includes/widgets/class-ecwid-widget-minicart.php:5
|
448 |
+
msgid "Adds a cart widget for customer to see the products they added to the cart."
|
449 |
+
msgstr "Добавляет виджет корзины покупателя для быстрого доступа к добавленным товарам."
|
|
|
|
|
|
|
450 |
|
451 |
#: includes/widgets/class-ecwid-widget-recently-viewed.php:9
|
452 |
+
msgid "Displays a list of products recently viewed by the customer to easily return to the products they saw in your shop."
|
453 |
+
msgstr "Показывает список товаров, просмотренных покупателем. Позволяет покупателю быстро перейти к товарам, которые их заинтересовали раньше."
|
|
|
|
|
|
|
|
|
454 |
|
455 |
+
#: includes/widgets/class-ecwid-widget-recently-viewed.php:10 includes/widgets/class-ecwid-widget-recently-viewed.php:153
|
|
|
456 |
msgid "Recently Viewed Products"
|
457 |
msgstr "Просмотренные товары"
|
458 |
|
459 |
+
#: includes/widgets/class-ecwid-widget-recently-viewed.php:124 includes/widgets/class-ecwid-widget-recently-viewed.php:154
|
|
|
460 |
msgid "You have not viewed any product yet. Open store."
|
461 |
msgstr "Вы пока что не просмотрели ни одного товара. Открыть магазин."
|
462 |
|
463 |
+
#: includes/widgets/class-ecwid-widget-recently-viewed.php:164 templates/product-popup.php:160
|
|
|
464 |
msgid "Title"
|
465 |
msgstr "Название"
|
466 |
|
473 |
msgstr "Количество товаров для отображения"
|
474 |
|
475 |
#: includes/widgets/class-ecwid-widget-search.php:9
|
476 |
+
msgid "Displays a simple search box for your customers to find a product in your store"
|
|
|
|
|
477 |
msgstr "Показывает покупателю поле поиска товаров в магазине"
|
478 |
|
479 |
#: includes/widgets/class-ecwid-widget-store-link.php:5
|
480 |
+
msgid "Displays a link to the store page in sidebar for customer to quickly access your store from any page on the site."
|
481 |
+
msgstr "Показывает ссылку на страницу магазина, позволяющую покупателю быстро открыть магазин из любой страницы на сайте."
|
|
|
|
|
|
|
|
|
482 |
|
483 |
#: includes/widgets/class-ecwid-widget-store-link.php:6
|
484 |
msgid "Store Page Link"
|
490 |
|
491 |
#: includes/widgets/class-ecwid-widget-vcategories.php:5
|
492 |
msgid "Adds vertical categories block to let the customer navigate your store."
|
493 |
+
msgstr "Показывает вертикальный список категорий для удобной навигации по магазину."
|
|
|
494 |
|
495 |
#: includes/widgets/class-ecwid-widget-vcategories.php:6
|
496 |
msgid "Store Categories"
|
497 |
msgstr "Категории магазина"
|
498 |
|
499 |
#: includes/widgets/class-ecwid-widget-vertical-categories-list.php:11
|
500 |
+
msgid "Adds root categories list to the sidebar to let your customers navigate the store."
|
501 |
+
msgstr "Показывает список корневых категорий для удобной навигации по магазину."
|
|
|
|
|
|
|
502 |
|
503 |
#: includes/widgets/class-ecwid-widget-vertical-categories-list.php:12
|
504 |
msgid "Store Root Categories"
|
505 |
msgstr "Корневые категории магазина"
|
506 |
|
507 |
+
#: includes/widgets/class-ecwid-widget-vertical-categories-list.php:22 includes/widgets/class-ecwid-widget-vertical-categories-list.php:68
|
|
|
508 |
msgid "Browse by Category"
|
509 |
msgstr "Категории магазина"
|
510 |
|
541 |
msgstr "Простите, у нас технические проблемы."
|
542 |
|
543 |
#: templates/admin-timeout.php:11
|
544 |
+
msgid "Our team is already working on this issue. Please refresh the page in a few minutes. If the issue persists, please contact <a target=\"_blank\" href=\"https://help.ecwid.com/customer/portal/emails/new\">our customer support team</a>."
|
545 |
+
msgstr "Мы уже работаем над исправлением проблемы. Перезагрузите страницу через пару минут. Если проблема сохранится, пожалуйста, <a target=\"_blank\" href=\"https://help.ecwid.com/customer/portal/emails/new\">свяжитесь с нами</a>."
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
546 |
|
547 |
#: templates/advanced-settings.php:1
|
548 |
msgid "%s — Advanced settings"
|
553 |
msgstr "SEO URLs"
|
554 |
|
555 |
#: templates/advanced-settings.php:34
|
556 |
+
msgid "This enables new clean URLs format in your store. The new urls do not contain hash sign ('#'), so they look nicer and are better indexed by Google."
|
557 |
+
msgstr "Включает новый \"чистый\" формат ссылок на товары и категории в магазине. Новые ссылки не содержат символа \"#\" и лучше индексируются поисковыми системами."
|
|
|
|
|
|
|
|
|
|
|
558 |
|
559 |
#: templates/advanced-settings.php:38
|
560 |
+
msgid "To enable clean URLs in your store, you will need to enable pretty permalinks in your WordPress site settings. Navigate to <a%s>Settings->Permalink</a> and enable the \"Post name\" permalink type."
|
561 |
+
msgstr "Чтобы включить SEO URLs в магазине, вам потребуется для начала включить улучшенную структуру постоянных ссылок в настройках Wordpress. Для этого в меню \"<a%s>Настройки -> Постоянные ссылки</a>\" выберите тип ссылок \"Название записи\"."
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
562 |
|
563 |
#: templates/advanced-settings.php:44
|
564 |
+
msgid "Note: the new URLs will be automatically enabled for every store in one of upcoming updates so please make sure to check how the new URLs work in your store and <a %s>let us know</a> if you face any trouble with them"
|
565 |
+
msgstr "Новые SEO URLs магазина будут включены по умолчанию в одной из будущих версий плагина. Поэтому мы рекомендуем вам включить эту опцию и попробовать SEO URLs на своём сайте. Если вы заметите какие-либо проблемы, пожалуйста, <a %s>дайте нам знать</a>, мы поможем."
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
566 |
|
567 |
#: templates/advanced-settings.php:44 templates/advanced-settings.php:188
|
568 |
msgid "https://support.ecwid.com/hc/en-us/requests/new"
|
578 |
|
579 |
#: templates/advanced-settings.php:74
|
580 |
msgid ""
|
581 |
+
"By default, the storefront shows a list of root categories. You can override this behavior and show a different category when customers open your store for the first time. This is useful if you only have one category or want to display a specific set of items (e.g. \"Featured Products\") to "
|
582 |
+
"new visitors."
|
|
|
|
|
583 |
msgstr ""
|
584 |
+
"По умолчанию, магазин показывает корневые категории. Здесь можно выбрать другую категорию для отображения, когда покупатель впервые открывает ваш магазин. Это может быть полезно, если у вас есть только одна категория или вы хотите показывать определённые набор товаров (например, специальные "
|
|
|
|
|
|
|
585 |
"предложения) новым пользователям."
|
586 |
|
587 |
#: templates/advanced-settings.php:97
|
589 |
msgstr "Единый вход для покупателей"
|
590 |
|
591 |
#: templates/advanced-settings.php:102
|
592 |
+
msgid "Single Sign-On allows your customers to have a single login for your WordPress site and your %s. When someone logs in to your site, they will automatically be logged in to their customer account in your store as well with no need to enter their email/password again."
|
|
|
|
|
|
|
|
|
593 |
msgstr ""
|
594 |
+
"Объединяет учетную запись покупателя на сайте с его учетной записью в %s. Когда единый вход включен, покупателю не нужно логиниться дважды – на сайте и в магазине. После входа в свой аккаунт на сайте покупатель может смотреть историю своих заказов и оформлять новый заказ с предзаполненным "
|
595 |
+
"email и адресом доставки."
|
|
|
|
|
|
|
596 |
|
597 |
#: templates/advanced-settings.php:109
|
598 |
msgid "Upgrade to get this feature"
|
603 |
msgstr "Подпишитесь на платный план, чтобы получить эту функциональность."
|
604 |
|
605 |
#: templates/advanced-settings.php:118
|
606 |
+
msgid "To allow %s automatically log in customers to your store, please provide it with a permission to use the customer data in the store. <a %s>Please use this link to do that</a>"
|
607 |
+
msgstr "Чтобы плагин автоматически объединял учетные записи пользователя на сайте и в магазине %s, нужно дать ему доступ до данных покупателей в магазине. <a %s>Перейдите по этой ссылке, чтобы предоставить доступ</a>."
|
|
|
|
|
|
|
|
|
|
|
|
|
608 |
|
609 |
#: templates/advanced-settings.php:124
|
610 |
+
msgid "To make sure your customer can actually log in to your site and store, enable registration in the <a %s>site settings</a>"
|
611 |
+
msgstr "Чтобы покупатели смогли регистрироваться, убедитесь, что регистрация включена в <a %s>настройках сайта</a>"
|
|
|
|
|
|
|
|
|
612 |
|
613 |
#: templates/advanced-settings.php:146
|
614 |
msgid "Chameleon skin"
|
615 |
msgstr "Тема \"Хамелеон\""
|
616 |
|
617 |
#: templates/advanced-settings.php:150
|
618 |
+
msgid "Automatic adjustment of your store design to your WordPress theme. Whatever WordPress theme you use, %s will detect predominant colors and font and use them in your product catalog."
|
619 |
+
msgstr "Автоматическая подстройка внешнего вида магазина под стили темы сайта. Включите эту опцию, чтобы %s определял цвета и шрифты сайта и использовал их в каталоге товаров."
|
|
|
|
|
|
|
|
|
|
|
|
|
620 |
|
621 |
#: templates/advanced-settings.php:153
|
622 |
+
msgid "Please note this functionality is in beta. So if you run into difficulties or find problems with Chameleon, please <a %s>let us know</a>."
|
623 |
+
msgstr "Мы добавили этот инструмент недавно, и он сейчас работает в бета-режиме. Если вы обнаружите какие-либо проблемы в его работе, пожалуйста, <a %s>сообщите нам</a>."
|
|
|
|
|
|
|
|
|
|
|
624 |
|
625 |
#: templates/advanced-settings.php:176
|
626 |
msgid "Integration with search on your site <sup>beta</sup>"
|
628 |
|
629 |
#: templates/advanced-settings.php:180
|
630 |
msgid ""
|
631 |
+
"%s stores your products data in a secure cloud storage. The product pages are displayed on the fly when a customer browses your store. So, basically, the products are not stored on the site, that's why the site search doesn't find product pages while looking through site pages and posts. This "
|
632 |
+
"option enables a local storage mode: the products will be stored both in the cloud and on your site. The site search results will list product pages as well as regular pages/posts of your site."
|
|
|
|
|
|
|
|
|
|
|
633 |
msgstr ""
|
634 |
+
"%s хранит данные товаров магазина в защищенном облачном хранилище, и показывает их прямо на странице магазина, когда посетитель открывает товар. Поэтому данные товаров не хранятся на вашем сайте, а поиск по сайту находит только страницы и записи сайта — не находит товары магазина. Эта "
|
635 |
+
"настройка включает локальное хранение товаров: данные товаров будут храниться и в облачном хранилище, и прямо на вашем сайте. Поиск по сайту будет показывать страницы товаров магазина так же, как записи или страницы, размещенные на сайте."
|
|
|
|
|
|
|
|
|
|
|
|
|
636 |
|
637 |
#: templates/advanced-settings.php:188
|
638 |
+
msgid "Please note this functionality is in beta. So if you run into difficulties or find problems with it, please <a %s>let us know</a>."
|
639 |
+
msgstr "Эта функция сейчас работает в бета-режиме. Если вы обнаружите проблемы в её работе, пожалуйста, <a %s>сообщите нам</a>."
|
|
|
|
|
|
|
|
|
640 |
|
641 |
#: templates/advanced-settings.php:197 templates/appearance-settings.php:217
|
642 |
msgid "Save changes"
|
651 |
msgstr "Показывать форму поиска над списком продуктов"
|
652 |
|
653 |
#: templates/appearance-settings.php:31
|
654 |
+
msgid "Or you can add search box to your website's toolbar using <a href=\"%s\">WordPress native widgets</a>"
|
655 |
+
msgstr "Или вы можете добавить форму поиска на ваш сайт с помощью <a href=\"%s\">виджетов WordPress</a>"
|
|
|
|
|
|
|
|
|
656 |
|
657 |
#: templates/appearance-settings.php:51
|
658 |
msgid "Display categories above products"
|
659 |
msgstr "Показывать меню категорий над списком продуктов"
|
660 |
|
661 |
#: templates/appearance-settings.php:55
|
662 |
+
msgid "Or you can add vertical categories to your website's toolbar using <a href=\"%s\">WordPress native widgets</a>"
|
663 |
+
msgstr "Или вы можете добавить вертикальное меню категорий на ваш сайт с помощью <a href=\"%s\">виджетов WordPress</a>"
|
|
|
|
|
|
|
|
|
664 |
|
665 |
#: templates/appearance-settings.php:76
|
666 |
msgid "Enable minicart attached to categories"
|
667 |
msgstr "Показывать корзину у меню категорий"
|
668 |
|
669 |
#: templates/appearance-settings.php:80
|
670 |
+
msgid "You should disable this option, if you added minicart to your website's sidebar"
|
671 |
+
msgstr "Если вы добавили виджет корзины в боковое меню, следует отключить эту настройку"
|
|
|
|
|
|
|
|
|
672 |
|
673 |
#: templates/appearance-settings.php:99 templates/store-popup.php:180
|
674 |
msgid "Number of categories per row"
|
691 |
msgstr "Вид \"таблица\""
|
692 |
|
693 |
#: templates/appearance-settings.php:171 templates/store-popup.php:145
|
694 |
+
msgid "Here you can control how many products will be displayed per page. These options define maximum values. If there is not enough space to show all product columns, %s will adapt the number of columns to hold all products."
|
695 |
+
msgstr "Здесь вы можете задать количество отображаемых продуктов на странице. Эти цифры определяют максимальные значения. Если на странице в сетке продуктов будет недостаточно места для отображения всех столбцов, %s уменьшит их количество."
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
696 |
|
697 |
#: templates/appearance-settings.php:178 templates/store-popup.php:193
|
698 |
msgid "Default view mode on product pages"
|
699 |
msgstr "Вид страницы продуктов по умолчанию"
|
700 |
|
701 |
+
#: templates/appearance-settings.php:183 templates/appearance-settings.php:201 templates/store-popup.php:197 templates/store-popup.php:215
|
|
|
702 |
msgid "Grid"
|
703 |
msgstr "Сетка"
|
704 |
|
705 |
+
#: templates/appearance-settings.php:186 templates/appearance-settings.php:204 templates/store-popup.php:200 templates/store-popup.php:218
|
|
|
706 |
msgid "List"
|
707 |
msgstr "Список"
|
708 |
|
709 |
+
#: templates/appearance-settings.php:189 templates/appearance-settings.php:207 templates/store-popup.php:203 templates/store-popup.php:221
|
|
|
710 |
msgid "Table"
|
711 |
msgstr "Таблица"
|
712 |
|
714 |
msgid "Default view mode on search results"
|
715 |
msgstr "Вид страницы результатов поиска по умолчанию"
|
716 |
|
717 |
+
#: templates/connect.php:5 templates/dashboard.php:6 templates/reconnect-sso.php:5 templates/reconnect.php:5
|
|
|
718 |
msgid "%s Shopping Cart"
|
719 |
msgstr "Интернет-магазин %s"
|
720 |
|
726 |
msgid "Enter your Store ID"
|
727 |
msgstr "Введите ваш ID Магазина"
|
728 |
|
729 |
+
#: templates/connect.php:20 templates/landing_old.php:27 templates/reconnect.php:23
|
|
|
730 |
msgid "Connect"
|
731 |
msgstr "Подключите магазин"
|
732 |
|
735 |
msgstr "Сохранить и присоединить"
|
736 |
|
737 |
#: templates/connect.php:27 templates/reconnect.php:46
|
738 |
+
msgid "To display your store on this site, you need to allow WordPress to access your %1$s products. Please press connect to provide permission."
|
739 |
+
msgstr "Нажмите на кнопку, авторизуйтесь в %1$s и выдайте запрошенные права доступа"
|
|
|
|
|
|
|
740 |
|
741 |
#: templates/connect.php:32
|
742 |
msgid "Where to find your Store ID:"
|
743 |
msgstr "Где найти ID Магазина:"
|
744 |
|
745 |
#: templates/connect.php:34
|
746 |
+
msgid "Store ID is a unique identifier of your %1$s account. You can find it in your %1$s control panel: open the <a %2$s>Dashboard page</a> and find the \"<b>Store ID: NNNNNNN</b>\" text, where <b>NNNNNNN</b> is your Store ID."
|
747 |
+
msgstr "ID магазина – это уникальный номер аккаунта в %1$s. Вы можете его найти в панели управления %1$s-магазина: откройте страницу \"<a %2$s>Консоль</a>\" и найдите текст \"<b>ID Магазина NNNNNNN</b>\". "
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
748 |
|
749 |
#: templates/connect.php:39
|
750 |
msgid "Don't have an %s account? Create one now."
|
751 |
msgstr "Ещё нет аккаунта в %s? Зарегистрируйтесь"
|
752 |
|
753 |
+
#: templates/dashboard.php:10 templates/store-popup.php:231 templates/store-svg.php:15
|
|
|
754 |
msgid "Store ID"
|
755 |
msgstr "ID Магазина"
|
756 |
|
800 |
|
801 |
#: templates/help.php:29
|
802 |
msgid "https://support.ecwid.com/hc/en-us/sections/201706719-Ecwid-Basics"
|
803 |
+
msgstr "https://support.ecwid.com/hc/ru/sections/201706719-%D0%9D%D0%B0%D1%87%D0%B0%D0%BB%D0%BE-%D1%80%D0%B0%D0%B1%D0%BE%D1%82%D1%8B-"
|
|
|
|
|
804 |
|
805 |
#: templates/help.php:31
|
806 |
msgid "Ecwid Basics"
|
807 |
msgstr "Начало работы"
|
808 |
|
809 |
#: templates/help.php:35
|
810 |
+
msgid "https://support.ecwid.com/hc/en-us/sections/201758475-Manage-Your-Ecwid-Store"
|
811 |
+
msgstr "https://support.ecwid.com/hc/ru/sections/201758475-%D0%A3%D0%BF%D1%80%D0%B0%D0%B2%D0%BB%D0%B5%D0%BD%D0%B8%D0%B5-%D0%BC%D0%B0%D0%B3%D0%B0%D0%B7%D0%B8%D0%BD%D0%BE%D0%BC"
|
|
|
|
|
|
|
|
|
812 |
|
813 |
#: templates/help.php:37
|
814 |
msgid "Manage Your Ecwid Store"
|
815 |
msgstr "Управление магазином"
|
816 |
|
817 |
#: templates/help.php:41
|
818 |
+
msgid "https://support.ecwid.com/hc/en-us/sections/201758445-Customize-Your-Store"
|
819 |
+
msgstr "https://support.ecwid.com/hc/ru/sections/201758445-%D0%98%D0%B7%D0%BC%D0%B5%D0%BD%D0%B5%D0%BD%D0%B8%D0%B5-%D0%B4%D0%B8%D0%B7%D0%B0%D0%B9%D0%BD%D0%B0-"
|
|
|
|
|
|
|
|
|
820 |
|
821 |
#: templates/help.php:43
|
822 |
msgid "Customize Your Store"
|
824 |
|
825 |
#: templates/help.php:47
|
826 |
msgid "https://support.ecwid.com/hc/en-us/sections/201706799-Billing-Questions"
|
827 |
+
msgstr "https://support.ecwid.com/hc/ru/sections/201706799-%D0%9F%D0%BE%D0%B4%D0%BF%D0%B8%D1%81%D0%BA%D0%B0"
|
|
|
|
|
828 |
|
829 |
#: templates/help.php:49
|
830 |
msgid "Billing Questions"
|
831 |
msgstr "Подписка"
|
832 |
|
833 |
#: templates/help.php:53
|
834 |
+
msgid "https://support.ecwid.com/hc/en-us/sections/201702859-Technical-Reference"
|
835 |
+
msgstr "https://support.ecwid.com/hc/ru/sections/201702859-%D0%A2%D0%B5%D1%85%D0%BD%D0%B8%D1%87%D0%B5%D1%81%D0%BA%D0%B0%D1%8F-%D0%B8%D0%BD%D1%84%D0%BE%D1%80%D0%BC%D0%B0%D1%86%D0%B8%D1%8F"
|
|
|
|
|
|
|
|
|
836 |
|
837 |
#: templates/help.php:55
|
838 |
msgid "Technical Reference"
|
859 |
msgstr "Форум"
|
860 |
|
861 |
#: templates/help.php:212
|
862 |
+
msgid "Join the Ecwid community. Discuss support topics and store ideas with other Ecwid users."
|
863 |
+
msgstr "Общайтесь с другими пользователями Эквида и командой поддержки клиентов по любым вопросам, связанным с работой вашего магазина."
|
|
|
|
|
|
|
|
|
864 |
|
865 |
#: templates/help.php:221
|
866 |
msgid "Send a message to our support team"
|
887 |
msgstr "Сообщение отправлено"
|
888 |
|
889 |
#: templates/help.php:249
|
890 |
+
msgid " Thank you very much for contacting us! We will get back to you shortly."
|
|
|
891 |
msgstr "Спасибо! Мы скоро свяжемся с вами."
|
892 |
|
893 |
#: templates/help.php:250
|
899 |
msgstr "Добро пожаловать в %s!"
|
900 |
|
901 |
#: templates/landing.php:9
|
902 |
+
msgid "Thank you for choosing %s to build your online store. The first step to sell successfully online is to set up your store! Let’s get started and add a store to your website in a few simple steps."
|
903 |
+
msgstr "Спасибо, что выбрали %s для создания вашего интернет-магазина. Первый шаг к успешной онлайн торговле — настройка магазина! Давайте добавим магазин на ваш сайт за несколько простых шагов."
|
|
|
|
|
|
|
|
|
|
|
|
|
904 |
|
905 |
#: templates/landing.php:15 templates/landing.php:132
|
906 |
msgid "Create Store"
|
923 |
msgstr "Регистрация бесплатна, кредитная карта не требуется"
|
924 |
|
925 |
#: templates/landing.php:46
|
926 |
+
msgid "Connection error: please click the button again and give permissions for this plugin<br /> to show your %s store on this site."
|
927 |
+
msgstr "Ошибка подключения: после нажатия на кнопку, авторизуйтесь в %s и предоставьте запрашиваемые права."
|
|
|
|
|
|
|
|
|
928 |
|
929 |
#: templates/landing.php:49 templates/landing.php:160
|
930 |
msgid "Already have %s account?"
|
931 |
msgstr "Уже есть аккаунт в %s?"
|
932 |
|
933 |
#: templates/landing.php:53
|
934 |
+
msgid "You will be asked to log in to your %s Control Panel<br />and give permissions to show your store on this site"
|
935 |
+
msgstr "Вам будет предложено войти в панель управления %s<br />и предоставить права доступа для отображения магазина на вашем сайте"
|
|
|
|
|
|
|
|
|
936 |
|
937 |
#: templates/landing.php:56 templates/landing_old.php:75
|
938 |
msgid "Get ready to sell online"
|
943 |
msgstr "Продавайте там,<br> где ваши клиенты"
|
944 |
|
945 |
#: templates/landing.php:68 templates/landing_old.php:87
|
946 |
+
msgid "Start selling on your WordPress site. Then mirror your shop on your Facebook page, blog and marketplaces like Google Shopping, Yahoo and Shopping.com."
|
947 |
+
msgstr "Откройте продажи на своём WordPress сайте, а затем разместите витрину магазина в социальных сетях, блоге, и выгрузите товары на торговые площадки Яндекс.Маркет, eBay и Google Shopping."
|
|
|
|
|
|
|
|
|
|
|
948 |
|
949 |
#: templates/landing.php:69
|
950 |
+
msgid "Use %s's mobile-POS to swipe credit cards and sell on the go. Your orders and inventory are always synchronized with your online store."
|
951 |
+
msgstr "Используйте мобильное приложение %s, чтобы получать и обрабатывать заказы в любой точке продаж. Все изменения синхронизируются с магазином на лету."
|
|
|
|
|
|
|
|
|
952 |
|
953 |
#: templates/landing.php:75 templates/landing_old.php:94
|
954 |
msgid "Features"
|
967 |
msgstr "Бесплатный план и обновления"
|
968 |
|
969 |
#: templates/landing.php:92 templates/landing_old.php:111
|
970 |
+
msgid "Free plan always available with tons of features<br>at no additional cost. Updates are seamless, automatic<br>and free of charge."
|
971 |
+
msgstr "Всегда доступный бесплатный план с множеством<br>возможностей. Обновления магазина автоматизированы,<br> бесплатны и не требуют вашего участия."
|
|
|
|
|
|
|
|
|
972 |
|
973 |
#: templates/landing.php:102 templates/landing_old.php:121
|
974 |
msgid "Responsive design"
|
976 |
|
977 |
#: templates/landing.php:103 templates/landing_old.php:122
|
978 |
msgid "Your store looks perfect<br />on all devices"
|
979 |
+
msgstr "Ваш магазин выглядит превосходно<br />на любом устройстве: планшете, смартфоне и ноутбуке."
|
|
|
|
|
980 |
|
981 |
#: templates/landing.php:111 templates/landing_old.php:130
|
982 |
msgid "PCI DSS Certified"
|
984 |
|
985 |
#: templates/landing.php:112 templates/landing_old.php:131
|
986 |
msgid "Secure checkout with over 40<br />payment options"
|
987 |
+
msgstr "Эквид сертифицирован по стандарту Level 1 PCI DSS – самому высокому уровню безопасности передачи данных."
|
|
|
|
|
988 |
|
989 |
#: templates/landing.php:120 templates/landing_old.php:139
|
990 |
msgid "Global Reach"
|
1007 |
msgstr "Плагин успешно установлен!"
|
1008 |
|
1009 |
#: templates/landing_old.php:9
|
1010 |
+
msgid "There are just a few steps left to start selling<br /> on your WordPress site"
|
1011 |
+
msgstr "До открытия магазина на вашем WordPress сайте<br /> осталось несколько простых шагов"
|
|
|
|
|
|
|
1012 |
|
1013 |
#: templates/landing_old.php:13
|
1014 |
+
msgid "There are few little steps left to start selling<br /> on your WordPress site"
|
1015 |
+
msgstr "До открытия магазина на вашем WordPress сайте<br /> осталось несколько простых шагов"
|
|
|
|
|
|
|
1016 |
|
1017 |
#: templates/landing_old.php:19
|
1018 |
msgid "Register"
|
1019 |
msgstr "Зарегистрируйтесь"
|
1020 |
|
1021 |
#: templates/landing_old.php:20
|
1022 |
+
msgid "Create a free Ecwid account to manage your store and inventory.<br /> No credit card required"
|
1023 |
+
msgstr "Зарегистрируйте бесплатный аккаунт в Эквиде.<br /> Кредитная карта не требуется"
|
|
|
|
|
|
|
|
|
1024 |
|
1025 |
#: templates/landing_old.php:29
|
1026 |
msgid "Add your Ecwid store to your site <nobr>in two clicks</nobr>"
|
1047 |
msgstr "Подключить магазин"
|
1048 |
|
1049 |
#: templates/landing_old.php:55
|
1050 |
+
msgid "Connection error: please click the button again and give permissions for this plugin<br /> to show your Ecwid store on this site."
|
1051 |
+
msgstr "Ошибка подключения: пожалуйста, нажмите кнопку ещё раз и предоставьте права доступа плагину<br /> для публикации своего Эквид-магазина на этом сайте."
|
|
|
|
|
|
|
|
|
1052 |
|
1053 |
#: templates/landing_old.php:58 templates/landing_old.php:69
|
1054 |
+
msgid "You will be asked to log in to your Ecwid Control Panel<br />and give permissions to show your store on this site"
|
1055 |
+
msgstr "Вам будет предложено войти в панель управления Эквида<br />и предоставить права доступа для отображения магазина на вашем сайте"
|
|
|
|
|
|
|
|
|
1056 |
|
1057 |
#: templates/landing_old.php:61 templates/landing_old.php:157
|
1058 |
msgid "Already have Ecwid account?"
|
1075 |
msgstr "Продавайте там,<br> где ваши клиенты"
|
1076 |
|
1077 |
#: templates/landing_old.php:88
|
1078 |
+
msgid "Use Ecwid's mobile-POS to swipe credit cards and sell on the go. Your orders and inventory are always synchronized with your online store."
|
1079 |
+
msgstr "Используйте наше мобильное приложение, чтобы получать и обрабатывать заказы в любой точке продаж. Все изменения синхронизируются с магазином на лету."
|
|
|
|
|
|
|
|
|
1080 |
|
1081 |
#: templates/landing_old.php:102
|
1082 |
+
msgid "Ecwid is compatible with your<br>“%s” WordPress theme<br>out of the box."
|
|
|
1083 |
msgstr "Эквид совместим с темой<br>\"%s\" вашего сайта из коробки."
|
1084 |
|
1085 |
#: templates/landing_old.php:140
|
1098 |
msgid "SKU"
|
1099 |
msgstr "Артикул"
|
1100 |
|
1101 |
+
#: templates/product-popup.php:47 templates/product-popup.php:53 templates/product-popup.php:56
|
|
|
1102 |
msgid "Search"
|
1103 |
msgstr "Поиск"
|
1104 |
|
1115 |
msgstr "Следующая"
|
1116 |
|
1117 |
#: templates/product-popup.php:94
|
1118 |
+
msgid "Nothing found for <span class=\"empty-page__term\">\"{{ data.term }}\"</span>"
|
1119 |
+
msgstr "По запросу <span class=\"empty-page__term\">\"{{ data.term }}\"</span> ничего не найдено"
|
|
|
|
|
|
|
1120 |
|
1121 |
#: templates/product-popup.php:96
|
1122 |
msgid "Try another search."
|
1209 |
msgstr "Панель управления магазином, встроенная в Wordpress."
|
1210 |
|
1211 |
#: templates/reconnect-sso.php:12
|
1212 |
+
msgid "Manage products, track sales, adjust settings - <nobr>All without</nobr> leaving this page."
|
1213 |
+
msgstr "Вы сможете добавлять товары, обрабатывать заказы и управлять магазином прямо на этой странице."
|
|
|
|
|
|
|
|
|
1214 |
|
1215 |
#: templates/reconnect-sso.php:14
|
1216 |
msgid "Re-connect to Enable Control Panel"
|
1217 |
msgstr "Подключить панель управления"
|
1218 |
|
1219 |
#: templates/reconnect.php:31
|
1220 |
+
msgid "Connection error - after clicking button you need to login and accept permissions to use our plugin. Please, try again."
|
1221 |
+
msgstr "Ошибка подключения: после нажатия на кнопку, авторизуйтесь в Эквиде и предоставьте запрашиваемые права."
|
|
|
|
|
|
|
|
|
1222 |
|
1223 |
#: templates/reconnect.php:39
|
1224 |
+
msgid "Looks like your site does not support remote POST requests that are required for %s API to work. Please, contact your hosting provider to enable cURL."
|
1225 |
+
msgstr "Похоже, что ваш сервер не поддерживает удаленные POST запросы, которые необходимы для работы %s API. Пожалуйста, свяжитесь с хостинг-провайдером, чтобы исправить это."
|
|
|
|
|
|
|
|
|
|
|
1226 |
|
1227 |
#: templates/store-popup.php:12 templates/store-popup.php:25
|
1228 |
msgid "Store elements"
|
1249 |
msgstr "Меню категорий"
|
1250 |
|
1251 |
#: templates/store-popup.php:72
|
1252 |
+
msgid "Additionally, you can add store controls to your website's toolbar using <a %s>WordPress native widgets</a>"
|
1253 |
+
msgstr "Кроме того, вы можете добавить отдельные элементы магазина в сайдбар сайта используя <a %s>встроенные виджеты WordPress</a>"
|
|
|
|
|
|
|
|
|
1254 |
|
1255 |
#: templates/store-popup.php:233
|
1256 |
msgid "Demo store"
|
1277 |
msgstr "Демонстрационный магазин"
|
1278 |
|
1279 |
#: templates/sync.php:161
|
1280 |
+
msgid "To enable this feature, the plugin needs a permission to read your store product information."
|
1281 |
+
msgstr "Чтобы включить интеграцию с поиском, нужно дать плагину доступ до данных товаров в магазине."
|
|
|
|
|
|
|
|
|
1282 |
|
1283 |
#: templates/sync.php:162
|
1284 |
msgid "Provide access."
|
1289 |
msgstr "Синхронизировать товары"
|
1290 |
|
1291 |
#: templates/sync.php:175
|
1292 |
+
msgid "We're synchronizing your products. This may take a few minutes. Please do not reload the page."
|
1293 |
+
msgstr "Товары загружаются. Это может занять несколько минут. Пожалуйста, не перезагружайте страницу."
|
|
|
|
|
|
|
|
|
1294 |
|
1295 |
#: templates/sync.php:179
|
1296 |
msgid "Products synchronized: %s out of %s"
|
1297 |
msgstr "Загружено товаров: %s из %s"
|
1298 |
|
1299 |
#: templates/sync.php:186
|
1300 |
+
msgid "Products are successfully synchronized. The product pages are up to date."
|
|
|
1301 |
msgstr "Товары успешно синхронизированы. Страницы товаров обновлены."
|
1302 |
|
1303 |
#: templates/sync.php:190
|
1334 |
|
1335 |
#. Plugin Name of the plugin/theme
|
1336 |
msgid "Ecwid Shopping Cart"
|
1337 |
+
msgstr ""
|
1338 |
|
1339 |
msgid "%s products and categories"
|
1340 |
msgstr "Товары и категории магазина %s"
|
1528 |
msgid "Landscape 3:2"
|
1529 |
msgstr "Горизонтальные 3:2"
|
1530 |
|
1531 |
+
msgid "Online Store Apps"
|
1532 |
+
msgstr "Приложения для магазина"
|
1533 |
+
|
1534 |
msgid "Migration warning"
|
1535 |
msgstr ""
|
1536 |
|
1645 |
msgid "To improve the look and feel of your product page and manage your its appearance here, please enable the “Next-gen look and feel of the product page on the storefront” option in your store dashboard (<a href=\"admin.php?page=ec-store-admin-whatsnew\">Settings → What’s New</a>)."
|
1646 |
msgstr "Чтобы обновить дизайн страницы товара и управлять настройками вида в редакторе, включите опцию “Обновленный внешний вид страницы товара” в панели управления магазина (<a href=\"admin.php?page=ec-store-admin-whatsnew\">Настройки → Обновления</a>)"
|
1647 |
|
|
|
1648 |
#. Plugin URI of the plugin/theme
|
|
|
1649 |
#. Author URI of the plugin/theme
|
1650 |
msgid "http://www.ecwid.com?source=wporg"
|
1651 |
msgstr ""
|
1652 |
|
1653 |
#. Description of the plugin/theme
|
1654 |
+
msgid "Ecwid is a free full-featured shopping cart. It can be easily integrated with any Wordpress blog and takes less than 5 minutes to set up."
|
|
|
|
|
1655 |
msgstr "Эквид — это конструктор интернет-магазина."
|
1656 |
|
1657 |
#. Author of the plugin/theme
|
1658 |
msgid "Ecwid Team"
|
1659 |
msgstr ""
|
1660 |
|
1661 |
+
#~ msgid "Updated %s widgets are available for your %s store. They are more mobile friendly and look better. Please enable them on the plugin settings page and check how they work in your store. The new widgets will be enabled automatically for all users in one of the upcoming plugin versions."
|
1662 |
+
#~ msgstr "Блоки %s в вашем %s-магазине обновлены – теперь они выглядят приятнее и лучше работают на мобильных. Пожалуйста, включите новый вид блоков поиска и категорий на странице настроек плагина. В одном следующих обновлений плагина они будут включены автоматически для всех пользователей."
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
1663 |
|
1664 |
#~ msgctxt "upgrade widgets message"
|
1665 |
#~ msgid "Categories"
|
1668 |
#~ msgid "Open %s store settings"
|
1669 |
#~ msgstr "Открыть настройки плагина %s"
|
1670 |
|
1671 |
+
#~ msgid "<a href=\"admin.php?page=ecwid-help\">Read FAQ or contact support</a>"
|
1672 |
+
#~ msgstr "<a href=\"admin.php?page=ecwid-help\">Посетите Центр поддержки Эквида или напишите нам</a>"
|
|
|
|
|
|
|
1673 |
|
1674 |
#~ msgid "Enable the new category menu"
|
1675 |
#~ msgstr "Включить новое меню категорий"
|
1676 |
|
1677 |
+
#~ msgid "The new category menu looks better and is more mobile-friendly. If you haven't yet added category menu to your store page, you can do that in the <a %s>store page editor</a> (enable the \"Show categories\" option)"
|
1678 |
+
#~ msgstr "Новое меню категорий лучше выглядит и отлично работает на мобильных устройствах. Если у вас на странице магазина пока нет меню категорий, добавьте его в <a %s>настройках страницы магазина</a> (включите виджет \"Категории\")."
|
|
|
|
|
|
|
|
|
|
|
|
|
|
languages/ecwid-shopping-cart-tr_TR.mo
CHANGED
Binary file
|
languages/ecwid-shopping-cart-tr_TR.po
CHANGED
@@ -1,5 +1,5 @@
|
|
1 |
msgid "Ecwid Shopping Cart"
|
2 |
-
msgstr "
|
3 |
|
4 |
msgid "Ecwid Team"
|
5 |
msgstr "Ecwid Team"
|
1 |
msgid "Ecwid Shopping Cart"
|
2 |
+
msgstr ""
|
3 |
|
4 |
msgid "Ecwid Team"
|
5 |
msgstr "Ecwid Team"
|
lib/ecwid_api_v3.php
CHANGED
@@ -93,6 +93,11 @@ class Ecwid_Api_V3
|
|
93 |
{
|
94 |
$api = new Ecwid_Api_V3();
|
95 |
|
|
|
|
|
|
|
|
|
|
|
96 |
$profile = $api->get_store_profile();
|
97 |
|
98 |
if ( $profile ) {
|
@@ -119,11 +124,6 @@ class Ecwid_Api_V3
|
|
119 |
if (-$tls_fails ) {
|
120 |
return self::set_api_status( self::API_STATUS_ERROR_TLS );
|
121 |
}
|
122 |
-
|
123 |
-
$token = self::_load_token();
|
124 |
-
if ( !$token ) {
|
125 |
-
return self::set_api_status( self::API_STATUS_ERROR_TOKEN );
|
126 |
-
}
|
127 |
|
128 |
return self::set_api_status( self::API_STATUS_ERROR_OTHER );
|
129 |
}
|
93 |
{
|
94 |
$api = new Ecwid_Api_V3();
|
95 |
|
96 |
+
$token = self::_load_token();
|
97 |
+
if ( !$token ) {
|
98 |
+
return self::set_api_status( self::API_STATUS_ERROR_TOKEN );
|
99 |
+
}
|
100 |
+
|
101 |
$profile = $api->get_store_profile();
|
102 |
|
103 |
if ( $profile ) {
|
124 |
if (-$tls_fails ) {
|
125 |
return self::set_api_status( self::API_STATUS_ERROR_TLS );
|
126 |
}
|
|
|
|
|
|
|
|
|
|
|
127 |
|
128 |
return self::set_api_status( self::API_STATUS_ERROR_OTHER );
|
129 |
}
|
lib/ecwid_catalog_entry.php
CHANGED
@@ -6,9 +6,6 @@ abstract class Ecwid_Catalog_Entry {
|
|
6 |
protected $_cache_name_prefix = null;
|
7 |
protected $_link_prefix = null;
|
8 |
|
9 |
-
abstract protected function _get_from_local_object_cache( $id );
|
10 |
-
abstract protected function _put_into_local_object_cache( $id );
|
11 |
-
|
12 |
protected function __construct()
|
13 |
{
|
14 |
$this->_data = new stdClass();
|
@@ -20,7 +17,11 @@ abstract class Ecwid_Catalog_Entry {
|
|
20 |
return $this->get_link();
|
21 |
}
|
22 |
|
23 |
-
|
|
|
|
|
|
|
|
|
24 |
}
|
25 |
|
26 |
public function __isset( $name ) {
|
6 |
protected $_cache_name_prefix = null;
|
7 |
protected $_link_prefix = null;
|
8 |
|
|
|
|
|
|
|
9 |
protected function __construct()
|
10 |
{
|
11 |
$this->_data = new stdClass();
|
17 |
return $this->get_link();
|
18 |
}
|
19 |
|
20 |
+
if ( isset($this->_data->$name) ) {
|
21 |
+
return $this->_data->$name;
|
22 |
+
}
|
23 |
+
|
24 |
+
return null;
|
25 |
}
|
26 |
|
27 |
public function __isset( $name ) {
|
lib/ecwid_platform.php
CHANGED
@@ -43,24 +43,43 @@ class EcwidPlatform {
|
|
43 |
$filename = substr( $filename, 0, strlen( $file ) - 3 );
|
44 |
}
|
45 |
|
46 |
-
|
47 |
-
$handle = self::slugify( $filename );
|
48 |
-
}
|
49 |
|
50 |
-
$
|
51 |
-
|
52 |
-
$file .= '.js';
|
53 |
|
54 |
if ( defined( 'WP_DEBUG' ) ) {
|
55 |
-
$path = ECWID_PLUGIN_DIR . 'js/' . $
|
56 |
|
57 |
$ver = filemtime( $path );
|
58 |
} else {
|
59 |
$ver = get_option( 'ecwid_plugin_version' );
|
60 |
}
|
61 |
|
62 |
-
wp_enqueue_script( $handle, ECWID_PLUGIN_URL . 'js/' . $
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
63 |
}
|
|
|
|
|
64 |
|
65 |
/*
|
66 |
* @throws InvalidArgumentException if $file can't be slugified at all
|
@@ -100,14 +119,25 @@ class EcwidPlatform {
|
|
100 |
if ( $result && count( @$match[0] ) > 0 ) {
|
101 |
$handle = implode('-', $match[0] );
|
102 |
} else {
|
103 |
-
throw new InvalidArgumentException( 'Can\'t make slug from ' . $
|
104 |
}
|
105 |
return $handle;
|
106 |
}
|
107 |
|
108 |
static protected function _init_crypt()
|
109 |
{
|
110 |
-
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
111 |
self::$crypt->setKey( SECURE_AUTH_KEY );
|
112 |
}
|
113 |
|
43 |
$filename = substr( $filename, 0, strlen( $file ) - 3 );
|
44 |
}
|
45 |
|
46 |
+
$handle = self::make_handle( $file );
|
|
|
|
|
47 |
|
48 |
+
$filename .= '.js';
|
|
|
|
|
49 |
|
50 |
if ( defined( 'WP_DEBUG' ) ) {
|
51 |
+
$path = ECWID_PLUGIN_DIR . 'js/' . $filename;
|
52 |
|
53 |
$ver = filemtime( $path );
|
54 |
} else {
|
55 |
$ver = get_option( 'ecwid_plugin_version' );
|
56 |
}
|
57 |
|
58 |
+
wp_enqueue_script( $handle, ECWID_PLUGIN_URL . 'js/' . $filename, $deps, $ver, $in_footer );
|
59 |
+
}
|
60 |
+
|
61 |
+
static public function make_handle( $file )
|
62 |
+
{
|
63 |
+
$filename = $file;
|
64 |
+
|
65 |
+
if ( strpos( $file, '.js' ) == strlen( $file ) - 3 ) {
|
66 |
+
$filename = substr( $filename, 0, strlen( $file ) - 3 );
|
67 |
+
}
|
68 |
+
|
69 |
+
$prefix = 'ecwid-';
|
70 |
+
|
71 |
+
if ( strpos( $file, $prefix ) === 0 ) {
|
72 |
+
$filename = substr( $filename, strlen( $prefix ) );
|
73 |
+
}
|
74 |
+
|
75 |
+
$handle = self::slugify( $filename );
|
76 |
+
|
77 |
+
$handle = $prefix . $handle;
|
78 |
+
|
79 |
+
return $handle;
|
80 |
}
|
81 |
+
|
82 |
+
|
83 |
|
84 |
/*
|
85 |
* @throws InvalidArgumentException if $file can't be slugified at all
|
119 |
if ( $result && count( @$match[0] ) > 0 ) {
|
120 |
$handle = implode('-', $match[0] );
|
121 |
} else {
|
122 |
+
throw new InvalidArgumentException( 'Can\'t make slug from ' . $string );
|
123 |
}
|
124 |
return $handle;
|
125 |
}
|
126 |
|
127 |
static protected function _init_crypt()
|
128 |
{
|
129 |
+
$salt = '';
|
130 |
+
|
131 |
+
// It turns out sometimes there is no salt is wp-config. And since it is already seeded
|
132 |
+
// with the SECURE_AUTH_KEY, and to avoid breaking someones encryption
|
133 |
+
// we use 'SECURE_AUTH_SALT' as string
|
134 |
+
if ( defined( 'SECURE_AUTH_SALT' ) ) {
|
135 |
+
$salt = SECURE_AUTH_SALT;
|
136 |
+
} else {
|
137 |
+
$salt = 'SECURE_AUTH_SALT';
|
138 |
+
}
|
139 |
+
|
140 |
+
self::$crypt->setIV( substr( md5( $salt . get_option('ecwid_store_id') ), 0, 16 ) );
|
141 |
self::$crypt->setKey( SECURE_AUTH_KEY );
|
142 |
}
|
143 |
|
lib/ecwid_product.php
CHANGED
@@ -8,32 +8,12 @@ class Ecwid_Product extends Ecwid_Catalog_Entry
|
|
8 |
protected $_cache_name_prefix = 'ecwid-product-';
|
9 |
protected $_link_prefix = 'p';
|
10 |
|
11 |
-
protected function _get_from_local_object_cache( $id ) {
|
12 |
-
if ( isset( self::$products[$id] ) ) {
|
13 |
-
return self::$products[$id];
|
14 |
-
}
|
15 |
-
|
16 |
-
return null;
|
17 |
-
}
|
18 |
-
|
19 |
-
protected function _put_into_local_object_cache( $obj ) {
|
20 |
-
if ( !isset( $obj->id ) ) {
|
21 |
-
return false;
|
22 |
-
}
|
23 |
-
|
24 |
-
self::$products[$obj->id] = $obj;
|
25 |
-
}
|
26 |
-
|
27 |
public static function get_by_id( $id )
|
28 |
{
|
29 |
$p = new Ecwid_Product();
|
30 |
|
31 |
-
if ( $product = $p->_get_from_local_object_cache( $id ) ) {
|
32 |
-
return $product;
|
33 |
-
}
|
34 |
-
|
35 |
$product_data = $p->_get_from_cache( $id );
|
36 |
-
|
37 |
if ( !$product_data ) {
|
38 |
$p->_load($id);
|
39 |
if ( !$p->_data ) {
|
@@ -42,10 +22,7 @@ class Ecwid_Product extends Ecwid_Catalog_Entry
|
|
42 |
$p->_persist();
|
43 |
} else {
|
44 |
$p->_data = $product_data;
|
45 |
-
}
|
46 |
-
|
47 |
-
$p->_put_into_local_object_cache( $p );
|
48 |
-
|
49 |
|
50 |
return $p;
|
51 |
}
|
@@ -83,7 +60,12 @@ class Ecwid_Product extends Ecwid_Catalog_Entry
|
|
83 |
return null;
|
84 |
}
|
85 |
|
86 |
-
|
|
|
|
|
|
|
|
|
|
|
87 |
}
|
88 |
|
89 |
return Ecwid_Product::get_by_id( $random_product_id );
|
@@ -93,10 +75,6 @@ class Ecwid_Product extends Ecwid_Catalog_Entry
|
|
93 |
{
|
94 |
$p = new Ecwid_Product();
|
95 |
|
96 |
-
if ( $product = $p->_get_from_local_object_cache( $id ) ) {
|
97 |
-
return $product;
|
98 |
-
}
|
99 |
-
|
100 |
$product_data = $p->_get_from_cache( $id );
|
101 |
if ( !$product_data ) {
|
102 |
if ( $fallback_object ) {
|
@@ -123,7 +101,7 @@ class Ecwid_Product extends Ecwid_Catalog_Entry
|
|
123 |
return $p;
|
124 |
}
|
125 |
|
126 |
-
public static function
|
127 |
{
|
128 |
if ( !is_array( $ids ) || empty( $ids ) || !Ecwid_Api_V3::is_available() ) {
|
129 |
return;
|
@@ -133,7 +111,15 @@ class Ecwid_Product extends Ecwid_Catalog_Entry
|
|
133 |
|
134 |
$api = new Ecwid_Api_V3();
|
135 |
|
136 |
-
$api->search_products( array( 'productId' => $ids_string ) );
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
137 |
}
|
138 |
|
139 |
protected function _get_from_cache( $id ) {
|
8 |
protected $_cache_name_prefix = 'ecwid-product-';
|
9 |
protected $_link_prefix = 'p';
|
10 |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
11 |
public static function get_by_id( $id )
|
12 |
{
|
13 |
$p = new Ecwid_Product();
|
14 |
|
|
|
|
|
|
|
|
|
15 |
$product_data = $p->_get_from_cache( $id );
|
16 |
+
|
17 |
if ( !$product_data ) {
|
18 |
$p->_load($id);
|
19 |
if ( !$p->_data ) {
|
22 |
$p->_persist();
|
23 |
} else {
|
24 |
$p->_data = $product_data;
|
25 |
+
}
|
|
|
|
|
|
|
26 |
|
27 |
return $p;
|
28 |
}
|
60 |
return null;
|
61 |
}
|
62 |
|
63 |
+
if( count($result->items) < ($index - $offset) ) {
|
64 |
+
$random_product = current($result->items);
|
65 |
+
$random_product_id = $random_product->id;
|
66 |
+
} else {
|
67 |
+
$random_product_id = $result->items[$index - $offset]->id;
|
68 |
+
}
|
69 |
}
|
70 |
|
71 |
return Ecwid_Product::get_by_id( $random_product_id );
|
75 |
{
|
76 |
$p = new Ecwid_Product();
|
77 |
|
|
|
|
|
|
|
|
|
78 |
$product_data = $p->_get_from_cache( $id );
|
79 |
if ( !$product_data ) {
|
80 |
if ( $fallback_object ) {
|
101 |
return $p;
|
102 |
}
|
103 |
|
104 |
+
public static function preload_by_ids($ids)
|
105 |
{
|
106 |
if ( !is_array( $ids ) || empty( $ids ) || !Ecwid_Api_V3::is_available() ) {
|
107 |
return;
|
111 |
|
112 |
$api = new Ecwid_Api_V3();
|
113 |
|
114 |
+
$data = $api->search_products( array( 'productId' => $ids_string ) );
|
115 |
+
|
116 |
+
if ($data && $data->count > 0) {
|
117 |
+
foreach($data->items as $product_data){
|
118 |
+
$p = new Ecwid_Product();
|
119 |
+
$p->_data = $product_data;
|
120 |
+
$p->_persist();
|
121 |
+
}
|
122 |
+
}
|
123 |
}
|
124 |
|
125 |
protected function _get_from_cache( $id ) {
|
readme.txt
CHANGED
@@ -3,7 +3,7 @@ Contributors: Ecwid
|
|
3 |
Tags: ecommerce, downloadable products, Facebook ecommerce, online store, paypal, product catalog, shop, shopping cart, store
|
4 |
Requires at least: 3.7
|
5 |
Tested up to: 5.1
|
6 |
-
Stable tag: 6.4.
|
7 |
|
8 |
Powerful, easy to use ecommerce shopping cart. Sell on Facebook and Instagram. iPhone & Android apps. Superb support. Free plan available.
|
9 |
|
@@ -150,8 +150,15 @@ You can use Ecwid’s built-in import tools to copy your store products from any
|
|
150 |
* [Ecwid eCommerce Forums](https://www.ecwid.com/forums/forumdisplay.php?f=19)
|
151 |
|
152 |
== Changelog ==
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
153 |
= 6.4.11 - Feb 26, 2019 =
|
154 |
-
- Minor fixes and improvements.
|
155 |
|
156 |
= 6.4.9 - Feb 7, 2019 =
|
157 |
- **Fixes for the Open Graph image tag (og:image tag) .** When you share a page from your ecommerce site on Facebook or in a messenger, you should see the product title, description and image in the sharing preview snippet.
|
3 |
Tags: ecommerce, downloadable products, Facebook ecommerce, online store, paypal, product catalog, shop, shopping cart, store
|
4 |
Requires at least: 3.7
|
5 |
Tested up to: 5.1
|
6 |
+
Stable tag: 6.4.12
|
7 |
|
8 |
Powerful, easy to use ecommerce shopping cart. Sell on Facebook and Instagram. iPhone & Android apps. Superb support. Free plan available.
|
9 |
|
150 |
* [Ecwid eCommerce Forums](https://www.ecwid.com/forums/forumdisplay.php?f=19)
|
151 |
|
152 |
== Changelog ==
|
153 |
+
= 6.4.12 - Mar 11, 2019 =
|
154 |
+
- Improvement for the sharing buttons on the product pages. "Share to Facebook", "Tweet" and other share buttons now uses the actual product page URLs instead of a "proxy" Ecwid URL. This should make shared links look more appealing in social networks and improve the SEO of your ecommerce store.
|
155 |
+
- Fixed an issue in the "Import products from WooCommerce" tool. In some cases, import failed and stopped importing products — we fixed that, now it should work fine and you can import your products from WooCommerce to Ecwid when you need it.
|
156 |
+
- Fixed a Javascript warning message in the browser console when the Recently viewed products widget is used.
|
157 |
+
- Minor fixes and improvements for SEO, stability and performance.
|
158 |
+
- Besides the changes in the plugin, Ecwid e-commerce functionality is constantly updated with new features and tools. One of the recent major updates is product filters — you can now add product filtering panel to your store search page without dealing with custom code or an external plugin. Check it out in our [blog](https://www.ecwid.com/blog/all-sorted-introducing-storefront-product-filters.html).
|
159 |
+
|
160 |
= 6.4.11 - Feb 26, 2019 =
|
161 |
+
- Minor fixes and improvements.
|
162 |
|
163 |
= 6.4.9 - Feb 7, 2019 =
|
164 |
- **Fixes for the Open Graph image tag (og:image tag) .** When you share a page from your ecommerce site on Facebook or in a messenger, you should see the product title, description and image in the sharing preview snippet.
|
templates/admin-params.php
CHANGED
@@ -34,4 +34,8 @@
|
|
34 |
</div>
|
35 |
<?php endforeach; ?>
|
36 |
<button class="btn btn-primary">submit</button>
|
37 |
-
</form>
|
|
|
|
|
|
|
|
34 |
</div>
|
35 |
<?php endforeach; ?>
|
36 |
<button class="btn btn-primary">submit</button>
|
37 |
+
</form>
|
38 |
+
|
39 |
+
<br />
|
40 |
+
<h2>Clear plugin cache</h2>
|
41 |
+
<a href="?<?php echo ecwid_get_clear_all_cache_action(); ?>&redirect_back">Clear all caches</a>
|
templates/importer/woo-main.tpl.php
CHANGED
@@ -47,6 +47,9 @@
|
|
47 |
<p>
|
48 |
<label><input type="checkbox" class="import-settings" name="<?php echo Ecwid_Importer::SETTING_DELETE_DEMO; ?>"><?php _e( 'Remove demo products', 'ecwid-shopping-cart' ); ?></label>
|
49 |
</p>
|
|
|
|
|
|
|
50 |
<p>
|
51 |
<label><input type="checkbox" class="import-settings" name="<?php echo Ecwid_Importer::SETTING_UPDATE_BY_SKU; ?>"><?php _e( 'Overwrite existing products with matching SKU', 'ecwid-shopping-cart' ); ?></label>
|
52 |
</p>
|
47 |
<p>
|
48 |
<label><input type="checkbox" class="import-settings" name="<?php echo Ecwid_Importer::SETTING_DELETE_DEMO; ?>"><?php _e( 'Remove demo products', 'ecwid-shopping-cart' ); ?></label>
|
49 |
</p>
|
50 |
+
<?php endif; ?>
|
51 |
+
|
52 |
+
<?php if ( Ecwid_Importer::count_ecwid_demo_products() < Ecwid_Importer::count_ecwid_products() ): ?>
|
53 |
<p>
|
54 |
<label><input type="checkbox" class="import-settings" name="<?php echo Ecwid_Importer::SETTING_UPDATE_BY_SKU; ?>"><?php _e( 'Overwrite existing products with matching SKU', 'ecwid-shopping-cart' ); ?></label>
|
55 |
</p>
|