Инструкция по переходу с 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».

В некоторых версиях WooCommerce эта настройка может быть доступна по пути «Advanced → Enable the legacy 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, начинающийся с https://, а также вставьте значения Consumer Key и Consumer Secret , скопированные в настройках WordPress WooCommerce.

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

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

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

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

22 комментария

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

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

    Что делать?

    • +1
      Михаил Ушенин Михаил Ушенин 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
          Михаил Ушенин Михаил Ушенин 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
              Михаил Ушенин Михаил Ушенин 3 мая 2018 10:32 #

              Ваш запрос в службу поддержки находится в обработке. Подождите ответа, пожалуйста.

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

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

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

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

              • 0
                Михаил Ушенин Михаил Ушенин 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
                    Михаил Ушенин Михаил Ушенин 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
                    Shyvarbidze Zurab Shyvarbidze Zurab 26 мая 2021 08:56 #

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

                  • +1
                    Павел Павел 2 декабря 2021 00:09 #

                    Мне помогло:

                    1. Отключить SSL на сайте (откуда загружались данные
                    2. Заменить $url = "{$protocol}, на $url = "http://
                    3. В строке 745 добавить версию, строка выглядит так: $url = "http://{$hostname}/wc-api/{$this->getOption('version','v2')}";

                    После этого, все загрузилось, до этого одни ошибки.

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

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

                    Раздел помощи работает на основе приложения «Хаб»