Инструкция по переходу с WordPress WooCommerce на Shop-Script

Подробное описание переноса данных из интернет-магазина на основе WordPress WooCommerce в Shop-Script

Для того чтобы перейти с WordPress WooCommerce на Shop-Script, используйте бесплатный плагин «Переход на Shop-Script».

1. Настройка WordPress WooCommerce

Включите REST API

Перейдите в раздел «WooCommerce → Settings → API» и включите «Enable REST API».


Сгенерируйте API-ключ

Перейдите в раздел «WooCommerce → Settings → API → Keys/Apps».


Нажмите «Add Key».

В полях настройки ключа введите любое описание, выберите любого пользователя и оставьте выбранным уровень доступа Read.


Нажмите «Generate API Key».

Скопируйте значения «Consumer Key» и «Consumer Secret» — они потребуются для настройки переноса данных в Shop-Script.

2. Перенос данных из WordPress в Shop-Script

Установите Shop-Script: зарегистрируйтесь в облаке Webasyst или установите скрипты на своем сервере.

В установленном бекенде Shop-Script откройте встроенное приложение «Инсталлер», перейдите в раздел «Плагины», выберите плагины для Shop-Script, найдите и установите одной кнопкой плагин «Переход на Shop-Script».


Для импорта данных откройте приложение «Магазин» и перейдите в раздел «Импорт/экспорт».

Выберите пункт «Переход на Shop-Script».

Из списка доступных CMS выберите «WordPress WooCommerce».

Введите URL установки WordPress, а также вставьет значения Consumer Key и Consumer Secret , скопированные в настройках WordPress WooCommerce.

Нажмите «Загрузить».

В появившейся области выберите соответствие статусов заказов, доступных в WooCommerce, статусам, настроенным в Shop-Script.


Нажмите на кнопку подтверждения для запуска импорта данных.

Дождитесь завершения процесса — не закрывайте окно браузера до его окончания.

19 комментариев

  • +1
    Niba Niba 9 октября 2017 19:20 #

    Ругается: Could not find WordPress installation by the URL provided

    Что делать?

    • +1
      Михаил Ушенин Михаил Ушенин Webasyst 10 октября 2017 09:27 #

      Попробуйте в файле wa-apps/shop/plugins/migrate/lib/transport/shopMigrateWoocommerceTransport.class.php в 2 местах заменить

      http://{$hostname}

      на

      https://{$hostname}
      • +1
        Виктор Виктор 21 марта 2019 14:02 #

        После смены получаю ошибку Пользовательский ключ утерян (woocommerce_api_authentication_error)

        Вот что нашел в поддержке WP:

        Ключ потребителя отсутствует

        Иногда серверы могут неправильно анализировать заголовок авторизации (если вы видите ошибку «Ключ потребителя отсутствует» при аутентификации через SSL, у вас есть проблема с сервером).

        В этом случае вы можете вместо этого указать в качестве параметров строки запроса ключ / секретный ключ. Пример:

        https://local.wordpress.dev/wp-json/wc/v2/orders?consumer_key=XXXX&consumer_secret=XXXX

        Как исправить ошибку и импортировать данные из WP?

        • +1
          Михаил Ушенин Михаил Ушенин Webasyst 21 марта 2019 16:36 #

          Попробуйте в файле wa-apps/shop/plugins/migrate/lib/transport/shopMigrateWoocommerceTransport.class.php заменить строку

          $url = "http://{$hostname}/wc-api/{$this->getOption('version')}/";

          на

          $url = "http://{$hostname}/wc-api/{$this->getOption('version')}/consumer_key={$this->getOption('consumer_key')}&consumer_secret={$this->getOption('consumer_secret')}";

          и строку

          $url = "http://{$hostname}/wc-api/{$this->getOption('version')}/{$query}";

          на

          $url = "http://{$hostname}/wc-api/{$this->getOption('version')}/{$query}?consumer_key={$this->getOption('consumer_key')}&consumer_secret={$this->getOption('consumer_secret')}";

          • +1
            Евгений Евгений 16 марта 2021 09:36 #

            Я заменил протокол в целевом адресе с https на http в настройках плагинах и все заработало без правок кода :) 
            Это как вариант для тех кто не хочет лезть в код - возможно у них тоже это сработает

          • +1
            MR.GOOGLE MR.GOOGLE 29 октября 2017 12:44 #

            Не работает.

            Enter your main WordPress blog URL

            Could not find WordPress installation by the URL provided


            Возможно ли что ошибка появляется из-за того что SC стоит на локале?

          • +1
            Anton Anton 28 апреля 2018 18:17 #

            Пишу вам, но что-то вы не подсказываете. Плагин как не работает, так и не работает. Как перенести данные то ?

          • +1
            Minya Jam Minya Jam 10 сентября 2018 15:17 #

            С чем связана такая ошибка?

            Пользовательский ключ утерян (woocommerce_api_authentication_error)

            При этом данные CK и CS верные.
            Woocommerce plugin version: 3.1.1

            • 0
              Михаил Ушенин Михаил Ушенин Webasyst 10 сентября 2018 15:40 #

              Это стоит уточнить в базе знаний WooCommerce.

              • +1
                Minya Jam Minya Jam 10 сентября 2018 20:49 #

                Тут всегда авторизация с помощью oauth 

                    private function query($query, $params = array(), $file = null)
                    {
                        waSessionStorage::close();
                        $time = microtime(true);
                        $hostname = rtrim(preg_replace('@^https?://@', '', $this->getOption('url')), '/');
                        $params = array_filter($params);
                
                        if ($query) {
                            if (false) {
                                $url = "https://{$this->getOption('consumer_key')}:{$this->getOption('consumer_secret')}@{$hostname}/wc-api/{$this->getOption('version','v2')}/{$query}";
                            } else {
                                $url = "http://{$hostname}/wc-api/{$this->getOption('version')}/{$query}";
                                $params = $this->getOauthParams($url, $params);
                            }
                
                        } else {
                            $url = "http://{$hostname}/wc-api/{$this->getOption('version')}/";
                        }

                Только вот, если указать адрес начиная с https , то ожидается совсем другое.

                Листинг woocommerce:

                    /**
                     * Authenticate the request. The authentication method varies based on whether the request was made over SSL or not.
                     *
                     * @since 2.1
                     * @param WP_User $user
                     * @return null|WP_Error|WP_User
                     */
                    public function authenticate( $user ) {
                
                        // Allow access to the index by default
                        if ( '/' === WC()->api->server->path ) {
                            return new WP_User( 0 );
                        }
                
                        try {
                
                            if ( is_ssl() ) {
                                $keys = $this->perform_ssl_authentication();
                            } else {
                                $keys = $this->perform_oauth_authentication();
                            }
                
                            // Check API key-specific permission
                            $this->check_api_key_permissions( $keys['permissions'] );
                
                            $user = $this->get_user_by_id( $keys['user_id'] );
                
                            $this->update_api_key_last_access( $keys['key_id'] );
                
                        } catch ( Exception $e ) {
                            $user = new WP_Error( 'woocommerce_api_authentication_error', $e->getMessage(), array( 'status' => $e->getCode() ) );
                        }
                
                        return $user;
                    }

                Выполнится условие if ( is_ssl() ) { ... соответственно авторизация не сработает. Также обнаружена ошибка, не совпадает oauth_signature

                Вот что shop-script помещает в значение $string_to_sign

                GET&http%3A%2F%2Fsite.com%2Fwc-api%2Fv2%2Fproducts%2Fcategories&oauth_consumer_key%3Dck_10c8bc0de17c28d08c07314823f64271bd69a1b4%26oauth_nonce%3D587f2d69c1371e4a857c54e45a40f31d632b2468%26oauth_signature_method%3DHMAC-SHA256%26oauth_timestamp%3D1536592732

                А вот то, что в woocommerce

                GET&http%3A%2F%2Fsite.com%2Fwc-api%2Fv2%2Fproducts%2Fcategories&oauth_consumer_key%3Dck_10c8bc0de17c28d08c07314823f64271bd69a1b4%26oauth_nonce%3D587f2d69c1371e4a857c54e45a40f31d632b2468%26oauth_signature_method%3DHMAC-SHA256%26oauth_timestamp%3D1536592732%26q%3D%252Fwc-api%252Fv2%252Fproducts%252Fcategories

                Соотвественно хеш не совпадает

                Плагин не рабочий для woocommerce. Не умеет импортировать вариативные товары.

                • +1
                  Михаил Ушенин Михаил Ушенин Webasyst 11 сентября 2018 09:39 #

                  Вы пишете о 3 проблемах?

                  1. При указании URL с https:// используется авторизация OAuth.
                  2. Shop-Script отправляет неправильное значение параметра oauth_signature.
                  3. Плагин не умеет импортировать вариативные товары.

                  Сообщения об ошибках желательно оформлять в виде сообщений в специальном разделе форума поддержки. Отдельное сообщение для каждой ошибки. Так их удобнее обрабатывать и обсуждать, если потребуется.

                • +1
                  Александр Сухов Александр Сухов 10 ноября 2019 20:26 #

                  Здравствуйте! Не работает плагин. Ошибка из 2017 года: Could not find WordPress installation by the URL provided.

                • +1
                  Zurab Shivarbidze Zurab Shivarbidze 26 мая 2021 08:56 #

                  День добрый! а если обратная интеграция с WebAsyst в WordPress? 

                  Добавить комментарий

                  Чтобы добавить комментарий, зарегистрируйтесь или войдите