Программное добавление и изменение, товаров в WooCommerce (в том числе и цен)Пример кода, добавления простого товара в вукомерц: Код: Выделить всё $post = array(
'post_author' => 1,
'post_content' => '', //Описание товара
'post_status' => "publish",
'post_title' => "Мой товар", // Название товара
'post_type' => "product",
);
$post_id = wp_insert_post($post); //Создаем запись
wp_set_object_terms($post_id, 22, 'product_cat'); //Задаем категорию товара
$puthUpload = wp_upload_dir();
$PhotoProd = "mainimg.jpg";
//Картинка
if($PhotoProd){
$PhotoProd = trim($PhotoProd);
$PhotoProd = $puthUpload["baseurl"]."/productimg/images/".$PhotoProd;
$thumbid = media_sideload_image($PhotoProd, $post_id, $desc = null, $return = 'id');
set_post_thumbnail($post_id, $thumbid);
}
$PhotosProd = "img1.jpg,img2.jpg,img3.jpg";
//Доп. картинка
if($PhotosProd){
$arPhotosProd = explode(",",$PhotosProd);
foreach($arPhotosProd as $key=>$Item){
if($Item){
$Item = trim($Item);
$Item = $puthUpload["baseurl"]."/productimg/images/".$Item;
$imgID[$key] = media_sideload_image($Item, $post_id, $desc = null, $return = 'id');
}
}
update_post_meta( $post_id, '_product_image_gallery', implode(", ", $imgID));
}
update_post_meta($post_id, '_sku', 123); //Артикул
update_post_meta( $post_id, '_visibility', 'visible' ); // Видимость: открыто
//update_post_meta( $post_id, 'total_sales', '0'); //Создается произвольное поле
update_post_meta( $post_id, '_downloadable', 'no'); //Не скачиваемый
update_post_meta( $post_id, '_virtual', 'no'); //Не виртуальный
wp_set_object_terms($post_id, "simple", 'product_type'); //Задаем тип товара
update_post_meta( $post_id, '_regular_price', 1000); //Базовая цена
update_post_meta( $post_id, '_sale_price', 500); //Цена распродажи
Я постарался подробно прокомментировать этот код, но навсякий случай сделаю небольшие пояснения. Строчкой wp_set_object_terms($post_id, 22, 'product_cat'); - вы задаете категорию вашего продукта где 22 это id категории. Строчкой update_post_meta($post_id, '_sku', 123); - вы устанавливаете артикул, где 123 и есть ваш артикул.
Также обратите внимание как добавляются картинки товара, в моем примере картинки находятся в папке /productimg/images/
Теперь приведу чуть более сложный пример, добавления вариативного товара. Для этого вам надо вставить код, и убрать в нем все, что идет после строчки update_post_meta( $post_id, '_virtual', 'no');. После этой строчки будет следующий код:
Код: Выделить всё wp_set_object_terms($post_id, "variable", 'product_type');
$VariationAttribute = "Цвет";
$VariationAttributesValue[] = "Красный";
$VariationAttributesValue[] = "Желтый";
$VariationAttributesValue[] = "Зеленый";
$PriceVariation["Красный"] = 100;
$PriceVariation["Желтый"] = 200;
$PriceVariation["Зеленый"] = 350;
add_variation_product($post_id,$VariationAttribute,$VariationAttributesValue,$PriceVariation);
function add_variation_product( $post_id, $select_attributes, $select_attribute_terms, $PriceVariation)
{
/*
$select_attributes - атрибут по которому у нас будет вариация
$select_attribute_terms - значения атрибутов для вариации
*/
$product_attributes = $select_attributes; //Атрибут
$attributes = wc_attribute_taxonomy_name( $product_attributes );
$pa_attr = 'pa_' . $product_attributes;
wp_set_object_terms( $post_id, $select_attribute_terms, $pa_attr );
$thedata = array( $pa_attr => array(
'name' => $pa_attr,
'value' => '',
'postion' => '0',
'is_visible' => '1',
'is_variation' => '1',
'is_taxonomy' => '1'
) );
update_post_meta( $post_id, '_product_attributes', $thedata );
foreach($select_attribute_terms as $key => $attribute_term)
{
$variation = array(
'post_title' => 'Product #' . $post_id . ' Variation',
'post_content' => '',
'post_status' => 'publish',
'post_parent' => $post_id,
'post_type' => 'product_variation'
);
$variation_id = wp_insert_post( $variation );
if(!$variation_id){
echo "Ошибка создания вариации
";
}else{
echo "Вариация создана
";
}
update_post_meta( $variation_id, '_regular_price', $PriceVariation[$attribute_term] );
update_post_meta( $variation_id, '_price', $PriceVariation[$attribute_term] );
update_post_meta( $variation_id, 'attribute_' . $attributes, $attribute_term );
}
WC_Product_Variable::sync( $post_id );
}
По этому коду тоже дам небольшие пояснения. Как вы наверное уже заметили, мы написали свою небольшую функцию для добавления товара и назвали ее add_variation_product. Мы передаем ей следующие парамметры: $post_id - id нашей записи, $VariationAttribute - название атрибута (хар-ки) по которому у нас будет вариация, $VariationAttributesValue - массив значений атрибута (хар-ки), $PriceVariation - массив с ценами для каждого атрибута (характеристики)
И наконец рассмотрим пример добавления сгруппированного товара, как и в прошлом и случае стираем все, что идет после строчки update_post_meta( $post_id, '_virtual', 'no'); и вставляем после нее такой код:
Код: Выделить всё wp_set_object_terms($post_id, "grouped", 'product_type');
update_post_meta( $postId, '_children', array(97,100));
Тут по сути добавляется одна строчка - update_post_meta( $postId, '_children', array(97,100));, где $postId - id записи сгруппированного товара, массив array(97,100) содержит id, которые надо сгруппировать, в данном случае это 97 и 100.
Если вам надо изменить какие-то данные у товара, то используете к примеру update_post_meta(25, '_sku', 5467); Этой строчкой вы измените артикул на 5467 у товара с id 25. В случае, когда вам надо изменить не '_sku', а другой парамметр, который вы не нашли в моем примере, то могу посоветовать посмотреть в базе данных, как он пишется, т.е. к примеру: _sku, _sale_price, _visibility и.т.д.
https://skosta.ru/wordpress/woocommerce/