Title: asnever's Replies | WordPress.org

---

# asnever

  [  ](https://wordpress.org/support/users/asnever/)

 *   [Profile](https://wordpress.org/support/users/asnever/)
 *   [Topics Started](https://wordpress.org/support/users/asnever/topics/)
 *   [Replies Created](https://wordpress.org/support/users/asnever/replies/)
 *   [Reviews Written](https://wordpress.org/support/users/asnever/reviews/)
 *   [Topics Replied To](https://wordpress.org/support/users/asnever/replied-to/)
 *   [Engagements](https://wordpress.org/support/users/asnever/engagements/)
 *   [Favorites](https://wordpress.org/support/users/asnever/favorites/)

 Search replies:

## Forum Replies Created

Viewing 5 replies - 1 through 5 (of 5 total)

 *   Forum: [Plugins](https://wordpress.org/support/forum/plugins-and-hacks/)
    In
   reply to: [[Data Exchange for WooCommerce and 1C:Enterprise/1С:Предприятие] Характеристики в глобальные атрибуты](https://wordpress.org/support/topic/%d1%85%d0%b0%d1%80%d0%b0%d0%ba%d1%82%d0%b5%d1%80%d0%b8%d1%81%d1%82%d0%b8%d0%ba%d0%b8-%d0%b2-%d0%b3%d0%bb%d0%be%d0%b1%d0%b0%d0%bb%d1%8c%d0%bd%d1%8b%d0%b5-%d0%b0%d1%82%d1%80%d0%b8%d0%b1%d1%83%d1%82/)
 *  Thread Starter [asnever](https://wordpress.org/support/users/asnever/)
 * (@asnever)
 * [5 years, 8 months ago](https://wordpress.org/support/topic/%d1%85%d0%b0%d1%80%d0%b0%d0%ba%d1%82%d0%b5%d1%80%d0%b8%d1%81%d1%82%d0%b8%d0%ba%d0%b8-%d0%b2-%d0%b3%d0%bb%d0%be%d0%b1%d0%b0%d0%bb%d1%8c%d0%bd%d1%8b%d0%b5-%d0%b0%d1%82%d1%80%d0%b8%d0%b1%d1%83%d1%82/#post-13425557)
 * [@meckerpry](https://wordpress.org/support/users/meckerpry/) тут необходимо понимать
   о чем речь. Т.е. допустим у вас на сайте есть глобальный атрибут цвет, и у него
   есть значения (термины) – зеленый, синий, красный. Соответственно, их слаги (
   значения) будут, допустим, zelenyj sinij, krasnyj (если к примеру вы используете
   cyr-to-lat).
    Так вот нужно именно это значение тут вставлять. Т.е. просто одной
   строчкой не решить, перед тем как присвоить $value этот значение, его нужно сначала
   определить. Я делал так – создавал массив, где ключами были эти нужные слаги 
   глобального атрибута, а значениями – то что приходит из 1с. Выполнял поиск в 
   массиве значения из 1с, и найденный ключ и был искомым значением, которое присваивалось
   переменной $value Сейчас я уже не использую эту схему, переработал по другому,
   более логично и правильно, но больше кода
    -  This reply was modified 5 years, 8 months ago by [asnever](https://wordpress.org/support/users/asnever/).
 *   Forum: [Plugins](https://wordpress.org/support/forum/plugins-and-hacks/)
    In
   reply to: [[Data Exchange for WooCommerce and 1C:Enterprise/1С:Предприятие] Характеристики в глобальные атрибуты](https://wordpress.org/support/topic/%d1%85%d0%b0%d1%80%d0%b0%d0%ba%d1%82%d0%b5%d1%80%d0%b8%d1%81%d1%82%d0%b8%d0%ba%d0%b8-%d0%b2-%d0%b3%d0%bb%d0%be%d0%b1%d0%b0%d0%bb%d1%8c%d0%bd%d1%8b%d0%b5-%d0%b0%d1%82%d1%80%d0%b8%d0%b1%d1%83%d1%82/)
 *  Thread Starter [asnever](https://wordpress.org/support/users/asnever/)
 * (@asnever)
 * [5 years, 11 months ago](https://wordpress.org/support/topic/%d1%85%d0%b0%d1%80%d0%b0%d0%ba%d1%82%d0%b5%d1%80%d0%b8%d1%81%d1%82%d0%b8%d0%ba%d0%b8-%d0%b2-%d0%b3%d0%bb%d0%be%d0%b1%d0%b0%d0%bb%d1%8c%d0%bd%d1%8b%d0%b5-%d0%b0%d1%82%d1%80%d0%b8%d0%b1%d1%83%d1%82/#post-12889418)
 * [@andyganesh](https://wordpress.org/support/users/andyganesh/) если вы решили
   изменять код плагина, то тогда вам нужно проследить по всему файлу import.php
   где используются Свойства, и заменить на ваше СвойстваНоменклатуры, плюс как 
   у вас значения свойств выгружаются, также пробежаться по всему файлу если вдруг
   есть отличия. Но это так себе вариант. Хотя по идее работать должен.
    Для свойств,
   которые попадают в глобальные атрибуты, есть фильтр ‘wc1c_import_property_xml’
   попробуйте добавить в functions.php такой код
 *     ```
       add_filter( ''wc1c_import_property_xml', 'theme_name_wc1c_filter_property', 10, 2 );
       function theme_name_wc1c_filter_property( $property, $is_full ) {
           var_dump( $property );
           return $property;
       }
       ```
   
 * вручную выполнить импорт с помощью запроса в браузере ([https://wordpress.org/plugins/woocommerce-and-1centerprise-data-exchange/#%D0%BA%D0%B0%D0%BA%20%D0%B2%D1%80%D1%83%D1%87%D0%BD%D1%83%D1%8E%20%D0%B2%D0%BE%D1%81%D0%BF%D1%80%D0%BE%D0%B8%D0%B7%D0%B2%D0%B5%D1%81%D1%82%D0%B8%20%D0%B8%D0%BC%D0%BF%D0%BE%D1%80%D1%82%20%D1%82%D0%BE%D0%B2%D0%B0%D1%80%D0%BE%D0%B2%3F](https://wordpress.org/plugins/woocommerce-and-1centerprise-data-exchange/#%D0%BA%D0%B0%D0%BA%20%D0%B2%D1%80%D1%83%D1%87%D0%BD%D1%83%D1%8E%20%D0%B2%D0%BE%D1%81%D0%BF%D1%80%D0%BE%D0%B8%D0%B7%D0%B2%D0%B5%D1%81%D1%82%D0%B8%20%D0%B8%D0%BC%D0%BF%D0%BE%D1%80%D1%82%20%D1%82%D0%BE%D0%B2%D0%B0%D1%80%D0%BE%D0%B2%3F))
   
   и посмотрите что там приходит у вас, и тогда уже сможете оценить, есть ли возможность
   изменить массив $property и передать дальше для обработки правильные значения
    -  This reply was modified 5 years, 11 months ago by [asnever](https://wordpress.org/support/users/asnever/).
 *   Forum: [Plugins](https://wordpress.org/support/forum/plugins-and-hacks/)
    In
   reply to: [[Data Exchange for WooCommerce and 1C:Enterprise/1С:Предприятие] Характеристики в глобальные атрибуты](https://wordpress.org/support/topic/%d1%85%d0%b0%d1%80%d0%b0%d0%ba%d1%82%d0%b5%d1%80%d0%b8%d1%81%d1%82%d0%b8%d0%ba%d0%b8-%d0%b2-%d0%b3%d0%bb%d0%be%d0%b1%d0%b0%d0%bb%d1%8c%d0%bd%d1%8b%d0%b5-%d0%b0%d1%82%d1%80%d0%b8%d0%b1%d1%83%d1%82/)
 *  Thread Starter [asnever](https://wordpress.org/support/users/asnever/)
 * (@asnever)
 * [5 years, 11 months ago](https://wordpress.org/support/topic/%d1%85%d0%b0%d1%80%d0%b0%d0%ba%d1%82%d0%b5%d1%80%d0%b8%d1%81%d1%82%d0%b8%d0%ba%d0%b8-%d0%b2-%d0%b3%d0%bb%d0%be%d0%b1%d0%b0%d0%bb%d1%8c%d0%bd%d1%8b%d0%b5-%d0%b0%d1%82%d1%80%d0%b8%d0%b1%d1%83%d1%82/#post-12875211)
 * [@andyganesh](https://wordpress.org/support/users/andyganesh/) вообще при импорте
   именно глобальные атрибуты и создаются. Взможно у вас проблема в том, что вы 
   отправляете ЗначенияРеквизитов, тогда как для простых товаров, чтобы атрибуты
   создавались как глобальные, необходимо передавать СвойстваТовара в файле import.
   xml
 *   Forum: [Plugins](https://wordpress.org/support/forum/plugins-and-hacks/)
    In
   reply to: [[Data Exchange for WooCommerce and 1C:Enterprise/1С:Предприятие] Характеристики в глобальные атрибуты](https://wordpress.org/support/topic/%d1%85%d0%b0%d1%80%d0%b0%d0%ba%d1%82%d0%b5%d1%80%d0%b8%d1%81%d1%82%d0%b8%d0%ba%d0%b8-%d0%b2-%d0%b3%d0%bb%d0%be%d0%b1%d0%b0%d0%bb%d1%8c%d0%bd%d1%8b%d0%b5-%d0%b0%d1%82%d1%80%d0%b8%d0%b1%d1%83%d1%82/)
 *  Thread Starter [asnever](https://wordpress.org/support/users/asnever/)
 * (@asnever)
 * [5 years, 12 months ago](https://wordpress.org/support/topic/%d1%85%d0%b0%d1%80%d0%b0%d0%ba%d1%82%d0%b5%d1%80%d0%b8%d1%81%d1%82%d0%b8%d0%ba%d0%b8-%d0%b2-%d0%b3%d0%bb%d0%be%d0%b1%d0%b0%d0%bb%d1%8c%d0%bd%d1%8b%d0%b5-%d0%b0%d1%82%d1%80%d0%b8%d0%b1%d1%83%d1%82/#post-12868968)
 *     ```
       /*
        * Фильтруем вариации при получении из 1с, цепляемся за хук wc1c_post_offer_meta
        */
       add_action( 'wc1c_post_offer_meta', 'theme_name_filter_attributes_wc1c', 10, 3 );
       function theme_name_filter_attributes_wc1c( $post_id, $offer, $is_full ) {
           if ( isset( $offer['ХарактеристикиТовара'] ) ) {
               $key = array_search( 'здесь пишем наименование характеристики, как в 1с', array_column( $offer['ХарактеристикиТовара'], 'Наименование' ) );
               if ( false !== $key ) {
                   $product = wc_get_product( $post_id );
                   if ( 'variation' == $product->get_type() ) {
                       // меняем атрибуты родительского товара
                       $parent = wc_get_product( $product->get_parent_id() );
                       $parent_attributes = $parent->get_attributes();
                       if ( array_key_exists( $slug, $parent_attributes ) ) { // $slug -это слаг локального (индивидуального) атрибута на сайте, не наименование из 1с, это важно
                           unset( $parent_attributes[ $slug ] );
                       }
                       $new_attr = new WC_Product_Attribute();
                       $new_attr->set_id( 7 ); // в моем случае 7, в общем случае - id глобального атрибута на сайте
                       $new_attr->set_name( 'pa_' . $slug );
                       $new_attr->set_options( [1,2,3] ); // тут id значений глобального атрибута на сайте, в массиве
                       $new_attr->set_variation( true ); // делаем доступным для вариаций
                       $new_attr->set_position( 0 ); // можно задавать позицию в списке атрибутов товара
                       $parent_attributes['pa_' . $slug] = $new_attr;
                       $parent->set_attributes( $parent_attributes );
   
                       // теперь, если нужно, можно установить значение атрибута для вариации по умолчанию
                       $def_attr = $parent->get_default_attributes();
                       $def_attr['pa_' . $slug] = $value_slug; // тут пишем слаг значения атрибута, который хотим установить по умолчанию
                       $parent->set_default_attributes( $def_attr );
                       $parent->save();
   
                       // меняем атрибуты дочернего товара
                       $attributes = $product->get_variation_attributes();
                       if ( array_key_exists( 'attribute_' . $slug, $attributes ) ) {
                           unset( $attributes['attribute_' . $slug] );
                       }
                       $value = тут необходимо получить значение глобального атрибута именно для текущей вариации, через проверку по имени или другим способом, получить нужно именно слаг атрибута
                       $attributes['attribute_pa_' . $slug] = $value;
                       $product->set_attributes( $attributes );
                       $product->set_stock_status( 'instock' ); // если нужно
                       $product->save();
   
                       // синхронизируем статусы для основного и вариативных товаров (это уже по потребностям конкретной ситуации)
                       if ( $parent->child_is_in_stock() ) {
                           $parent->set_manage_stock( false );
                           $parent->set_stock_status( 'instok' );
                           $parent->save();
                       }
                   }
               }
           }
       }
       ```
   
 *   Forum: [Plugins](https://wordpress.org/support/forum/plugins-and-hacks/)
    In
   reply to: [[Data Exchange for WooCommerce and 1C:Enterprise/1С:Предприятие] Характеристики в глобальные атрибуты](https://wordpress.org/support/topic/%d1%85%d0%b0%d1%80%d0%b0%d0%ba%d1%82%d0%b5%d1%80%d0%b8%d1%81%d1%82%d0%b8%d0%ba%d0%b8-%d0%b2-%d0%b3%d0%bb%d0%be%d0%b1%d0%b0%d0%bb%d1%8c%d0%bd%d1%8b%d0%b5-%d0%b0%d1%82%d1%80%d0%b8%d0%b1%d1%83%d1%82/)
 *  Thread Starter [asnever](https://wordpress.org/support/users/asnever/)
 * (@asnever)
 * [5 years, 12 months ago](https://wordpress.org/support/topic/%d1%85%d0%b0%d1%80%d0%b0%d0%ba%d1%82%d0%b5%d1%80%d0%b8%d1%81%d1%82%d0%b8%d0%ba%d0%b8-%d0%b2-%d0%b3%d0%bb%d0%be%d0%b1%d0%b0%d0%bb%d1%8c%d0%bd%d1%8b%d0%b5-%d0%b0%d1%82%d1%80%d0%b8%d0%b1%d1%83%d1%82/#post-12868950)
 * В общем два дня ковыряния в коде плагина привели к решению, оно конечно не идеальное,
   но другого пока не нашел. Вообще в плагине очень мало хуков, за которые можно
   зацепиться и хоть как-то кастомизировать его поведение.
    Свой вопрос решил следующим
   образом:
    -  This reply was modified 5 years, 12 months ago by [asnever](https://wordpress.org/support/users/asnever/).

Viewing 5 replies - 1 through 5 (of 5 total)