Частая задача, когда уже есть товары на сайте, требуется обновлять только остатки или только цены, или и то и другое.

Алгоритм обновления

Шаг первый

Подразумевается, что на сайте уже заведены товары. Для обновления создаем новый импорт и обязательно указывается что используются существующие записи.

WP All Import. Эпизод 4. Обновление остатков и цен • 1 • Финты WordPress
Первый шаг при обновлении данных

Шаг второй

При настройке данных, указываем только те данные которые необходимо обновить. Так как обновляем цены и остатки, то заполняем соответствующие поля

к содержанию

Шаг третий

При настройке импорта указываем данные, по которым будет происходить сравнение записей.

WP All Import. Эпизод 4. Обновление остатков и цен • 4 • Финты WordPress

Шаг четвертый

Этот шаг вещь индивидуальная. Зависит от исходных данных. Но если у вас проблемы с обновлением остатков, то данный способ вам подойдет.

Конкретно в этом примере, при заведении товаров создаются одинаковые артикулы в одной из вариаций и родительском товаре

Из-за этого при обновлении остатков включается режим управления запасами на уровне родительского товара, при котором значение остатка записывается по артикулу.

Это проблема. Так как товары на сайте будут отображаться некорректно. Для решения этой проблемы необходимо, чтобы у родительского товара был уникальный артикул.

Средствами WP All Import это проблему решить мне не удалось. Потому написал небольшой сниппет, который при создании товара будет присваивать ему нужный артикул взятый из исходного файла.

/**
 * Обновление основного артикула
 *
 * @param  int    $id        идентификатор сохраняемой записи
 * @param  object $xml       данные загрузки
 * @param  bool   $is_update проверка на обновление
 *
 * @throws \WC_Data_Exception
 *
 * @sourcecode    https://wpruse.ru/courses/plugin-serial-wp-all-import/wp-all-import-epizod-4/
 * @author        Artem Abramovich
 */
function art_added_general_sku( $id, $xml, $is_update ) {

   if ( ! $id ) {
      return;
   }

   $product = wc_get_product( $id );

   if ( ! $product ) {
      return;
   }

   $general_sku = (string) $xml->article;

   if ( 'variable' === $product->get_type() ) {

      $pos = strpos( $product->get_sku(), $general_sku );

      if ( false !== $pos ) {
         $product->set_sku( $general_sku );
         $product->save();
      }

   }

}

add_action( 'pmxi_saved_post', 'art_added_general_sku', 10, 3 );
Внимание!
Весь код необходимо добавлять в файл functions.php через дочернюю тему или например пустой плагин. Прежде чем, вносить какие либо изменения, сделайте бекап сайта.
к содержанию

Исходники файлов

0 0 голоса
Рейтинг статьи

Подписаться
Уведомить о
guest
4 комментарев
Новые
Старые Популярные
Межтекстовые Отзывы
Посмотреть все комментарии
4
0
Оставьте комментарий! Напишите, что думаете по поводу статьи.x