PRO IT

профессиональное мнение

  • IT
    • Android
    • IP телефония
    • Linux
    • Mac OS X
    • Железо
    • Интернет
    • Программирование
    • Софт
  • Бизнес
  • WOW!
  • Литература
    • Аудиокниги
    • Книги
    • Публикации
  • Музыка
  • Сервисы
    • Генератор паролей Онлайн
    • Код ответа сервера
    • Количество символов в тексте
  • О блоге
    • Написать автору
    • Как написать гостевой пост в блоге ablex.ru ?
    • Реклама в блоге
  • IT
    • Android
    • IP телефония
    • Linux
    • Mac OS X
    • Telegram
    • Железо
    • Интернет
    • Программирование
    • Софт
  • WOW!
  • Бизнес
  • Литература
    • Аудиокниги
    • Книги
    • Публикации
  • Музыка
  • Сервисы
    • Аналитика
      • Анализ сайтов
      • Скорость сайта
    • Дизайн
    • Продвижение
      • СЕО
        • СЕО анализ сайта
      • СММ
    • Разработка
  • События
  • Юмор
PRO IT Программирование WordPress WooCommerce: добавление категорий и товаров по API в каталог


WordPress WooCommerce: добавление категорий и товаров по API в каталог

Ablex · Фев 17, 2017 · 0 комментариев
Wordpress Woocommerce API: добавление категорий и товаров в каталог

Если вы делаете или уже работаете с интернет-магазином на WooCommerce, рано или поздно возникнет желание автоматизировать добавление и обновление товаров и цен. А если каталог товаров большой, то есть смысл с этого и начать. Ниже — мои наработки по добавлению товаров и категорий в WooCommerce по API с помощью скрипта. Думаю, эта статья на много облегчит вам жизнь, т.к. не придется собирать сведения «по крупицам», из разных источников.

Пока писал статью «Magento 2.1: Добавление категорий и товаров по API«, вспомнил, что где-то год назад решал аналогичную задачу для Woocommerce. А в WordPress с этим, как водится, все немного проще. Поэтому возникло желание поделится.

Не раз уже писал, и еще раз повторюсь: я не профессиональный программист. Поэтому вид и структура кода далеко не идеальны. Многое, наверняка, можно сделать значительно проще. Но данное решение работает корректно, поэтому можно пользоваться им для примера, и для изучения WordPress API.

Итак, сначала создаем файл php скрипта в корневой папке с wordpress. Можно и не в корневой, но подключение к API WordPress тогда будет с другим путем.
В файле, сначала подключаемся к API:

PHP
1
2
3
4
5
6
require_once( 'wp-load.php' );
require_once( ABSPATH . '/wp-admin/includes/taxonomy.php');
 
ini_set('display_errors', 'On'); // сообщения с ошибками будут показываться
error_reporting(E_ALL); // E_ALL - отображаем ВСЕ ошибки
set_time_limit(0); //Не ограничиваем время работы скрипта

Если нужно, после этого качаем файл с XML поставщика и парсим его в массив. Этот процесс тут я описывать не буду, в общем то, это стандартный процесс в PHP, и отношения к WordPress не имеет.

Добавление категорий товаров WooCommerce по API

Далее — добавляем категории. Для этого нужно сформировать массив данных добавляемой категории и воспользоваться функцией WooCommerce wp_insert_category. $xmlCat — массив с описанием категорий сформированный из XML поставщика.
Но сначала проверяем, существует ли такая категория или нет. Потом ищем ID родительской категории, что бы создать нужную структуру каталога.
В общем то, по коду много комментариев, поэтому излишне тут описывать не буду.

PHP
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
//СТАРТ БЛОКА ДОБАВЛЕНИЯ КАТЕГОРИЙ
$xmlCat = $xml -> categories -> category;
 
$count = count($xmlCat);
$key = 0;
 
while ($count >= $key) {
 
$CatName = (string)$xmlCat[$key];
$ParentID = (string)$xmlCat[$key]['parentId'];
$CatID = (string)$xmlCat[$key]['id'];
$k = SearchCat($CatName);
$ParentCatID = '';
 
if (!$k) {  
//Если такая категория еще не создана проверяем, есть ли у нее $ParentID,
//ищем ид родительской категории в Wordpress и добавляем новую категорию
if ( $ParentID ) {
 
$x = SearchParentId ($ParentID, $xmlCat);
if ($x) { $x = SearchCat($x); };
if ($x) {
$ParentCatID = (array)$x -> term_id;
$ParentCatID = (string)$ParentCatID[0];
}
};
 
 
 
//Найти категорию по названию. Родительскую категорию. Обновить в скрипте (не ИД ХМЛ, а ИД Вордпресса)
$cat_defaults = array(
  //'cat_ID' => $CatID,                // ID категории, которую нужно обновить. 0 - добавит новую категорию.
  'cat_name' => $CatName,             // название категории. Обязательный.
  'category_description' => '', // описание категории
  'category_nicename' => '',      // слаг категории
  'category_parent' => $ParentCatID,        // ID родительской категории
  'taxonomy' => 'product_cat'      // таксономия. Измените, чтобы добавить элемент другой таксономии. Например для меток будет post_tag
);
 
//print_r ($cat_defaults );
//О функции добавления категорий, устнарение ошибки Call to undefined function wp_insert_category()
//http://wp-kama.ru/function/wp_insert_category
$cat_id = wp_insert_category( $cat_defaults, true);
//print_r ($cat_id);
 
} else {/*echo 'Категория ID ' ,$k -> term_id,' существует' */;};
 
$key++;
};
 
Function SearchCat ($Cat) {
//Функция ищет категорию по названию. Возвращает Wordpress id  категории, если найдена и false, если нет
 
$cat_id = get_term_by( 'name', $Cat, 'product_cat', 'OBJECT', 'raw' );
//print_r ($cat_id);
 
if ($cat_id) {return $cat_id;} else {return false;};
 
}
 
Function SearchParentId ($ParentID, $xmlCat) {
//Функция ищет название категории по ParentID
 
$size = sizeof( $xmlCat ) - 1;
$i = 0;
 
while($i <= $size) {
 
$CatID =  (string)$xmlCat[$i]['id'] ;
if (isset( $xmlCat[$i] ) ){
 
if ($CatID == $ParentID) {
 
return (string)$xmlCat[$i];
}
 
} else {return False;};
 
$i++;
}
}
 
//КОНЕЦ БЛОКА ДОБАВЛЕНИЯ КАТЕГОРИЙ

Добавление товаров в WooCommerce по API

Перед добавлением товара, так же нужно проверить, существует ли уже такой товар (по артикулу). У меня для этого используется цикл, который вызывает такие функции:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
//СТАРТ БЛОКА ДОБАВЛЕНИЯ ТОВАРОВ
$xmlOffers = $xml -> offers -> offer;
 
foreach ($xmlOffers as $k => $v) {
 
//Проверяем, есть ли уже товар с таким артикулом
$Find = FindArt($v);
 
if (!$Find){
Xml2Perem($v);} //Если нет - добавляем
else {
echo $Find;
};
};
 
 
Function FindArt ($xmlOffer){
//Функция проверяет, есть ли товар с таким артикулом. Если есть - выводит кол-во товаров с таким артикулом.
//Если нет - возвращает False
 
$Art = (string)$xmlOffer["id"];
$NumArt = SearchArt ($Art);
if ($NumArt) {
$massage = 'Найдено '.$NumArt. 'позиций с артикулом '.$Art ;
return $massage;
} else {
return false;
};
 
};
 
Function SearchArt ($Art ) {
//Функция ищет товар с заданным артикулом. Если находит - возвращает кол-во найденых товаров с таким артикулом (число)
 
// Пример получения товаров по фильтру
//http://woocommerce-russian.ru/vyvodim-tovary-v-woocommerce-po-tegam/
//Описание WP_Query
//http://wp-kama.ru/function/wp_query#znakomstvo-s-wp_query
//Работа с произвольными полями WP_Query
//https://wpmag.ru/2014/rabota-s-proizvolnyimi-polyami-v-wp_query/
 
$args =  array(
'post_type' => 'product',
'meta_query' => array(
        array(
            'key' => '_SKU',
            'value' =>  $Art,
        ),),
) ;
 
$query = new WP_Query( $args );
//$query = $query -> posts;
 
 
//Получаем количество товаров соответствующих результатам поиска
$product_count = $query -> post_count;
//print_r($product_count );   //print_r ($query);
wp_reset_postdata();
return $product_count ;
}
 
Function Xml2Perem ($xmlOffer) {
//Получает массив одного товара. Раскладывает его на переменные - свойства
//И передает в функцию StartAdd для добавления товара на сайт
 
 
$OpisProd = (string)($xmlOffer  -> description);
$KratOpisProd = (string)($xmlOffer  -> namefull);
$NameProd = (string)($xmlOffer  -> name);
$ProdCat = (string)($xmlOffer  ->  subcategory);
 
if ($xmlOffer["available"] == 'true')  {$Stock = 'instock';} else {$Stock = 'outofstock';};
 
$BasePrice = (string)($xmlOffer  ->  price1);
$SalePrice = ''; //price2 в XML это не цена со скидкой, а отпускная цена для опта
$Note = '';
$Weight = (string)($xmlOffer  ->  weight);
 
$Length = '';
$Width = '';
$Height = '';
 
$Art = (string)$xmlOffer["id"];
 
//Проверяем некоторые значения, что бы были не нулевыми. Если 0 - стираем.
if ((string)($xmlOffer  ->  demission) <= 0) {$Razmer = "";} else { $Razmer = (string)($xmlOffer  ->  demission); };
if ((string)($xmlOffer  ->  gabarit) <= 0) {$gabarit = "";} else { $gabarit = (string)($xmlOffer  ->  gabarit); };
if ((string)($xmlOffer  ->   weight) <= 0) {$weight = "";} else { $weight = (string)($xmlOffer  ->   weight); };
if ((string)($xmlOffer  ->   nettoweight) <= 0) {$nettoweight= "";} else { $nettoweight = (string)($xmlOffer  ->   nettoweight); };
if ((string)($xmlOffer  ->   garantee) <= 0) {$garantee = "";} else { $garantee = (string)($xmlOffer  ->   garantee); };
if ((string)($xmlOffer  ->   nettoweight) <= 0) {$nettoweight= "";} else { $nettoweight = (string)($xmlOffer  ->   nettoweight); };
 
//Пример массива добавления атрибутов
//http://wordpress.stackexchange.com/questions/134026/setting-an-attribute-as-variation-in-woo-commerce-via-php
 
$TaxAttributes = array (
'vendor'=> (string)($xmlOffer  ->  vendor),
'country'=> (string)($xmlOffer  ->  country),
                );
 
$Attributes = array(
'vendorCode'=> array(
                'name'=>'Артикул производителя',
                'value'=>(string)($xmlOffer  ->  vendorCode),
                'is_visible' => '1',
                'is_variation' => '0',
                'is_taxonomy' => '0'
                ),
'code'=> array(
                'name'=>'Код',
                'value'=>(string)($xmlOffer  ->  code),
                'is_visible' => '1',
                'is_variation' => '0',
                'is_taxonomy' => '0'
                ),
'demission'=> array(
                'name'=>'Размер, см',
                'value'=>$Razmer,
                'is_visible' => '1',
                'is_variation' => '0',
                'is_taxonomy' => '0'
                ),
'gabarit'=> array(
                'name'=>'Габариты упаковки, см',
                'value'=>$gabarit,
                'is_visible' => '1',
                'is_variation' => '0',
                'is_taxonomy' => '0'
                ),
'weight'=> array(
                'name'=>'Вес, кг',
                'value'=>$weight,
                'is_visible' => '1',
                'is_variation' => '0',
                'is_taxonomy' => '0'
                ),
'nettoweight'=> array(
                'name'=>'Вес нетто, кг',
                'value'=>$nettoweight,
                'is_visible' => '1',
                'is_variation' => '0',
                'is_taxonomy' => '0'
                ),
'garantee'=> array(
                'name'=>'Гарантия, мес',
                'value'=>$garantee,
                'is_visible' => '1',
                'is_variation' => '0',
                'is_taxonomy' => '0'
                ),
'stockstatus'=> array(
                'name'=>'Остаток',
                'value'=>(string)($xmlOffer  ->  stockstatus),
                'is_visible' => '1',
                'is_variation' => '0',
                'is_taxonomy' => '0'
                ) );
 
$thumb_url  = (string)($xmlOffer  -> picture[0]);
$thumb_url_all = (array)($xmlOffer  -> picture);
unset($thumb_url_all[0]);
 
AddProduct($OpisProd, $KratOpisProd, $NameProd, $ProdCat, $Stock, $BasePrice, $SalePrice, $Note, $Weight, $Length, $Width, $Height, $Art, $Attributes, $TaxAttributes, $thumb_url, $thumb_url_all);
 
};

Сама функция добавления товара в WooCommerce выглядит так.
Как видно, в функции используются отдельные блоки для добавления превью, доп картинок. Показан механизм добавления свойств товаров.

Что касается свойств, для работы скрипта нужно вручную создать атрибуты Страна, Производитель, Цвет, Материал и т.д. в Woocommerce и прописать их идентификаторы в скрипте. Например, pa_proizvoditel (ид атрибута Производитель). Добавление производится только по заданному, конечному количеству атрибутов.

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

PHP
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
203
204
205
206
207
208
209
210
211
212
213
214
215
216
217
218
219
220
221
222
223
224
225
226
227
228
229
230
231
232
233
234
235
236
237
238
239
240
241
242
243
244
245
246
247
248
249
250
251
252
253
254
255
256
257
258
259
260
261
262
263
264
265
266
267
268
269
Function AddProduct($OpisProd, $KratOpisProd, $NameProd, $ProdCat, $Stock, $BasePrice, $SalePrice, $Note, $Weight, $Length, $Width, $Height, $Art, $Attributes, $TaxAttributes, $thumb_url, $thumb_url_all) {
 
 
//Функция добавления нового товара (продукта) в Wordpress WooCommerce
//Передать параметры:
//$OpisProd - описание товара
//$KratOpisProd - краткое описание
//$NameProd - название товара
//$ProdCat - категория товара
//$Stock - Статус остатка ('instock' - в наличии, 'outofstock' - не в наличии, 'onrequest' - по запросу)
//$BasePrice - базовая цена
//$SalePrice - цена распродажи
//$Note- Примечание к покупке (что бы отправить его клиенту после покупки)
//$Weight - Вес
//$Length - Длина
//$Width - Ширина
//$Height - Высота
//$Art - Артикул
//$Attributes() - доп.атрибуты (массив)
//$thumb_url  - путь к превью, например: http://alexabak-wordpress.tw1.ru/wp-content/themes/boemia-free/images/logo.png
//$thumb_url_all() - массив с URL к доп картинкам
 
 
//--------------------------------------------Добавление товара--------------------------------------------------
http://wp-kama.ru/function/wp_insert_post
$post = array(
    'post_author' => 1,
    'post_content' => $OpisProd, //Описание товара
    'post_excerpt' => $KratOpisProd,
    'post_status' => "publish",
    'post_title' => $NameProd, // Название товара
//   'post_parent' => '123', //ID родительской записи
    'post_type' => "product",
);
 
//Create post
$post_id = wp_insert_post($post);
 
 
// http://wordpress.stackexchange.com/questions/137501/how-to-add-product-in-woocommerce-with-php-code
wp_set_object_terms( $post_id, $ProdCat, 'product_cat' );     //Категория товара
wp_set_object_terms($post_id, 'simple', 'product_type');     //Тип товара (Простой товар)
 
 
update_post_meta( $post_id, '_visibility', 'visible' );           // Видимость: открыто
update_post_meta( $post_id, '_stock_status', $Stock); //Статус Остатка - в наличии
//update_post_meta( $post_id, 'total_sales', '0');   //Создается произвольное поле
update_post_meta( $post_id, '_downloadable', 'no');      //Не скачиваемый
update_post_meta( $post_id, '_virtual', 'no');                  //Не виртуальный
update_post_meta( $post_id, '_regular_price', $BasePrice);   //Базовая цена
update_post_meta( $post_id, '_sale_price', $SalePrice);            //Цена распродажи
update_post_meta( $post_id, '_purchase_note', $Note);  //Примечание к покупке (что бы отправить его клиенту после покупки)
update_post_meta( $post_id, '_featured', "no" );
update_post_meta( $post_id, '_weight', $Weight); // Вес
update_post_meta( $post_id, '_length', $Length); // Длина
update_post_meta( $post_id, '_width', $Width ); // Ширина
update_post_meta( $post_id, '_height', $Height); // Высота
update_post_meta($post_id, '_sku', $Art);                           // Артикул
//update_post_meta( $post_id, 'short_description', 'short_description');
//update_post_meta( $post_id, '_sale_price_dates_from', "99" );
//update_post_meta( $post_id, '_sale_price_dates_to', "999" );
 
//update_post_meta( $post_id, '_sold_individually', "888" );
update_post_meta( $post_id, '_manage_stock', "no" );
//update_post_meta( $post_id, '_backorders', "no" );
//update_post_meta( $post_id, '_stock', "777" );
 
//Устанавливаем мета _price. Работает она странно. _price должна равнятся актуальной цене товара/
//Если _sale_price задан, но не совпадает с _price, для цены товара woocommerce берет _price.
//Поэтому, сначала проверяем.
if  ($SalePrice<=0) {
update_post_meta( $post_id, '_price', $BasePrice );                  //Цена
} else {
update_post_meta( $post_id, '_price', $SalePrice );                  //Цена
};
 
 
 
//Привязываем товары к таксономиям (Назначение атрибутов товаров)
//Необходимо создать вручную таксономии Производитель pa_proizvoditel
//И Страна
 
wp_set_object_terms($post_id, $TaxAttributes['country'], 'pa_strana');
$thedata = Array(
           'name'=>'pa_strana',
           'value'=>$TaxAttributes['country'],
           'is_visible' => '1',
           'is_variation' => '0',
           'is_taxonomy' => '1'
);
$Attributes = array_merge (array( 'pa_strana' => $thedata), $Attributes);
 
wp_set_object_terms($post_id, $TaxAttributes['vendor'], 'pa_proizvoditel');
$thedata = Array(
           'name'=>'pa_proizvoditel',
           'value'=>$TaxAttributes['vendor'],
           'is_visible' => '1',
           'is_variation' => '0',
           'is_taxonomy' => '1'
);
$Attributes = array_merge (array( 'pa_proizvoditel'=> $thedata), $Attributes);
 
 
 
 
//Цвет
$taxColor = false;
if (stripos($NameProd, 'красный')) {$taxColor[] = 'Красный';};
if (stripos($NameProd, 'красная')) {$taxColor[] = 'Красный';};
if (stripos($NameProd, 'бежевый')) {$taxColor[] = 'Бежевый';};
if (stripos($NameProd, 'бежевая')) {$taxColor[] = 'Бежевый';};
if (stripos($NameProd, 'оранжевый')) {$taxColor[] = 'Оранжевый';};
if (stripos($NameProd, 'оранжевая')) {$taxColor[] = 'Оранжевый';};
if (stripos($NameProd, 'желтый')) {$taxColor[] = 'Желтый';};
if (stripos($NameProd, 'желтая')) {$taxColor[] = 'Желтый';};
if (stripos($NameProd, 'зеленый')) {$taxColor[] = 'Зеленый';};
if (stripos($NameProd, 'зеленая')) {$taxColor[] = 'Зеленый';};
if (stripos($NameProd, 'голубой')) {$taxColor[] = 'Голубой';};
if (stripos($NameProd, 'голубая')) {$taxColor[] = 'Голубой';};
if (stripos($NameProd, 'синий')) {$taxColor[] = 'Синий';};
if (stripos($NameProd, 'синяя')) {$taxColor[] = 'Синий';};
if (stripos($NameProd, 'фиолетовый')) {$taxColor[] = 'Фиолетовый';};
if (stripos($NameProd, 'фиолетовая')) {$taxColor[] = 'Фиолетовый';};
if (stripos($NameProd, 'белый')) {$taxColor[] = 'Белый';};
if (stripos($NameProd, 'белая')) {$taxColor[] = 'Белый';};
if (stripos($NameProd, 'серебряный')) {$taxColor[] = 'Серебряный';};
if (stripos($NameProd, 'серебряная')) {$taxColor[] = 'Серебряный';};
if (stripos($NameProd, 'розовый')) {$taxColor[] = 'Розовый';};
if (stripos($NameProd, 'розовая')) {$taxColor[] = 'Розовый';};
if (stripos($NameProd, 'серый')) {$taxColor[] = 'Серый';};
if (stripos($NameProd, 'серая')) {$taxColor[] = 'Серый';};
if (stripos($NameProd, 'цветной')) {$taxColor[] = 'Цветной';};
if (stripos($NameProd, 'цветная')) {$taxColor[] = 'Цветной';};
 
if (count($taxColor) > 0) {
if ((string)$taxColor[0] != '') {
wp_set_object_terms($post_id, (string)$taxColor[0], 'pa_tsvet');
           $thedata = Array(
           'name'=>'pa_tsvet',
           'value'=>(string)$taxColor[0],
           'is_visible' => '1',
           'is_variation' => '0',
           'is_taxonomy' => '1'
);
$Attributes['pa_tsvet' ] =  $thedata;
};
};
 
 
//МАТЕРИАЛЫ
//По ключевикам в названии товара
$taxMat = false;
if (stripos($NameProd, 'дерев')) {$taxMat[] = 'Дерево'; };
if (stripos($NameProd, 'металл')) {$taxMat[] = 'Металл'; };
//По ключевым словам из Описания Товара
 
if (stripos($OpisProd, 'пластик')) {$taxMat[] = 'Пластик';};
if (stripos($OpisProd, 'пластмасс')) {$taxMat[] = 'Пластмасса';};
if (stripos($OpisProd, 'натуральное дерево')) {$taxMat[] = 'Натуральное дерево';};
if (stripos($OpisProd, 'каучуковое дерево')) {$taxMat[] = 'Каучуковое дерево';};
if (stripos($OpisProd, 'фанер')) {$taxMat[] = 'Фанера';};
if (stripos($OpisProd, 'массив')) {$taxMat[] = 'Массив';};
if (stripos($OpisProd, 'МДФ')) {$taxMat[] = 'МДФ';};
if (stripos($OpisProd, 'ДСП')) {$taxMat[] = 'ДСП';};
if (stripos($OpisProd, 'дерево')) {$taxMat[] = 'Дерево';};
if (stripos($OpisProd, 'бук')) {$taxMat[] = 'Бук';};
if (stripos($OpisProd, 'сталь')) {$taxMat[] = 'Сталь';};
if (stripos($OpisProd, 'сосна')) {$taxMat[] = 'Сосна';};
if (stripos($OpisProd, 'текстиль')) {$taxMat[] = 'Текстиль';};
if (stripos($OpisProd, 'синтепон')) {$taxMat[] = 'Синтепон';};
if (stripos($OpisProd, 'хлопок')) {$taxMat[] = 'Хлопок';};
if (stripos($OpisProd, 'ткань')) {$taxMat[] = 'Ткань';};
if (stripos($OpisProd, 'винил')) {$taxMat[] = 'Винил';};
if (stripos($OpisProd, 'флок')) {$taxMat[] = 'Флок';};
if (stripos($OpisProd, 'картон')) {$taxMat[] = 'Картон';};
 
if (count($taxMat) > 0) {
if ((string)$taxMat[0] != ''){
wp_set_object_terms($post_id, (string)$taxMat[0], 'pa_material');
           $thedata = Array(
           'name'=>'pa_material',
           'value'=>(string)$taxMat[0],
           'is_visible' => '1',
           'is_variation' => '0',
           'is_taxonomy' => '1'
);
$Attributes['pa_material' ] = $thedata;
};
};
 
 
update_post_meta( $post_id, '_product_attributes', $Attributes);
 
 
//Добавление меток товаров
$tags = false;
// Установка тегов по цене "До ХХХ  руб" -
if ($BasePrice <= 1000) {$tags[]  = 'До 1000 рублей';}
elseif ($BasePrice > 1000 and $BasePrice < 3000) {$tags[] = 'До 3000 рублей';}
elseif ($BasePrice > 3000 and $BasePrice < 5000) {$tags[] = 'До 5000 рублей';}
elseif ($BasePrice > 5000 and $BasePrice < 7000) {$tags[] = 'До 7000 рублей';}
elseif ($BasePrice > 7000 and $BasePrice < 10000) {$tags[] = 'До 10000 рублей';};
 
//По стране
if ($TaxAttributes['country'] == 'США') {$taxMat[] = 'Сделано в Америке';}
elseif ($TaxAttributes['country'] == 'Германия'){$tags[] = 'Немецкое качество';}
elseif ($TaxAttributes['country'] == 'Россия'){$tags[] = 'Сделано в России';};
 
if ($tags) {
wp_set_object_terms( $post_id, $tags, 'product_tag'); //Устанавливаем созданные метки
};
 
//-----------------------------------------------------Добавление превью------------------------------------------------------------------------
//http://jafty.com/blog/programatically-create-woocommerce-products-with-variations/
//add product image:
//require_once 'inc/add_pic.php';
require_once(ABSPATH . 'wp-admin/includes/file.php');
require_once(ABSPATH . 'wp-admin/includes/media.php');
require_once(ABSPATH . "wp-admin" . '/includes/image.php');
 
// Download file to temp location
$tmp = download_url( $thumb_url );
 
if( !is_wp_error( $tmp ) ) {
 
// Set variables for storage
// fix file name for query strings
preg_match('/[^\?]+\.(jpg|JPG|jpe|JPE|jpeg|JPEG|gif|GIF|png|PNG)/', $thumb_url, $matches);
$file_array['name'] = basename($matches[0]);
$file_array['tmp_name'] = $tmp;
 
//print_r ($file_array);
//use media_handle_sideload to upload img:
$thumbid = media_handle_sideload( $file_array, $post_id, $NameProd); //Описание изображения
set_post_thumbnail($post_id, $thumbid);
 
}
 
//----------------------------------------------------КонецДобавление превью------------------------------------------------------------------------
 
//----------------------------------------------------Добавление доп картинок------------------------------------------------------------------------
 
if (is_array($thumb_url_all)) {
foreach($thumb_url_all as $key => $value)
{  
 
//print_r($tmp2);
$tmp2 = download_url( $value );
                        if ($tmp2) {
                            // fix file name for query strings
                            preg_match('/[^\?]+\.(jpg|JPG|jpe|JPE|jpeg|JPEG|gif|GIF|png|PNG)/', $value, $matches);
                            $file_array2['name'] = basename($matches[0]);
                            $file_array2['tmp_name'] = $tmp2;
                            $imgID[$key] = media_handle_sideload( $file_array2, $post_id, $NameProd);   //Описание изображения
                            //print_r($imgID);
                        };
}
 
update_post_meta( $post_id, '_product_image_gallery', implode(", ", $imgID));
         };
wp_update_post( $post_id);
        shell_exec('rm -rf /tmp/*'); //Очищаем папку tmp что бы небыло переполнения
 
//--------------------------------------КонецДобавление доп картинок------------------------------------------------------------------------
 
echo ' Пост № - '; print_r ($post_id);
//print_r (get_post_meta( '339', '_price'));
}

Удачи с вашим магазином на WooCommerce!

Поделиться "WordPress WooCommerce: добавление категорий и товаров по API в каталог"

  • Facebook
  • Twitter
  • Google+
  • LinkedIn
  • VKontakte
  • E-mail

Интересное по теме:

  • Magento 2.1: Добавление категорий и товаров по APIMagento 2.1: Добавление категорий и товаров по API
  • Изменение user-agent WordPressИзменение user-agent WordPress
  • Bootstrap js форма в modal’льном окнеBootstrap js форма в modal’льном окне
  • Какой язык и фреймворк выбрать для веб-разработки: Django, Symfony, Ruby on Rails, Catalyst?Какой язык и фреймворк выбрать для веб-разработки: Django, Symfony, Ruby on Rails, Catalyst?
Подпишитесь на рассылку
Метки: PHP, woocommerce, wordpress

Ablex

Свежие записи

  • Удобный телеграм бот для поиска скидок и купонов @AllKuponBot
  • 6 главных трендов e-mail маркетинга в 2018 году
  • Magento 2.1: Добавление категорий и товаров по API
  • Анализ трафика CPA партнеров в Google Analytics. Борьба с фродом
  • WordPress WooCommerce: добавление категорий и товаров по API в каталог

Лучшие метки

Google AnalyticsAndroidаналитикаMac OSwordpressIP-телефонияbluetoothVPNSEOSIPRedmineAsteriskсервисIP-АТСUbuntuSamsung Galaxy S3Raspberry PiА/Б тестFreePBXgoogle

Авторы

  • Ablex (RSS) (200)
  • AD (RSS) (4)
  • TXT (RSS) (4)

Рекомендуем

  • Хостинг TimeWeb
  • IP телефония Zadarma
  • CPA сеть Admitad
Карта сайта
© 2010 - 2017 PRO IT. Все права защищены. Копирование материалов возможно только с установкой активной ссылки на ablex.ru
119 запрос 0,715 секунд. Этот блог летает на хостинге TimeWeb.
Top