Intereting Posts
Как получить «липкий» пост вне «петли»? Выберите записи, которые соответствуют названиям нескольких категорий, должны соответствовать всем перечисленным категориям Поддержка базы данных MySql для плагина Массовая загрузка изображений и функциональность Rerrange Loop Custom Post Type для одного автора Вызов различных настраиваемых временных меток в таблице оператор запроса, содержащий переменную, не будет выполняться Взаимная аутентификация на HTTPS с помощью API-интерфейса WordPress HTTP? Список категорий и исключить категории детей Как перевести название темы Петля на статической странице Показать 4 хронологических сообщения, начиная со случайного сообщения Пользовательский цикл в дополнение к умолчанию на странице архива Как отображать только выдержку содержимого с пользовательскими типами сообщений? Возьмите переменные, установленные в Functions.php и Echo Them Inside My Custom Post Template

Как назначить определенный атрибут вариации для продукта woocommerce?

Я создаю продукт с вариациями:

// Создает продукт

$post = array( 'post_title' => $title, 'post_content' => $description, 'post_status' => "publish", 'post_excerpt' => $excerpt, 'post_name' => $slug, //name/slug 'post_type' => "product" ); $new_post_id = wp_insert_post( $post); 

// Создает необходимые атрибуты

 $product_attributes = array(); $product_attributes['print_size'] = array( 'name' => 'print_size', 'value' => implode('|', $availableSizes), 'position' => 0, 'is_visible' => 0, 'is_variation' => 1, 'is_taxonomy' => 0 ); $product_attributes['paper_type'] = array( 'name' => 'paper_type', 'value' => implode('|', $availableMaterial), 'position' => 0, 'is_visible' => 0, 'is_variation' => 1, 'is_taxonomy' => 0 ); update_post_meta($new_post_id, '_product_attributes', $product_attributes); 

// Создает вариацию

 $my_post1 = array( 'post_title' => 'SizeType122', 'post_name' => 'post_name222', 'post_status' => 'publish', 'post_parent' => $new_post_id, 'post_type' => 'product_variation', 'guid' => home_url() . '/?product_variation=1' ); $attID1 = wp_insert_post($my_post1); update_post_meta($attID1, '_virtual', 'no'); update_post_meta($attID1, '_downloadable', 'no'); update_post_meta($attID1, '_manage_stock', 'no'); update_post_meta($attID1, '_stock_status', 'instock'); update_post_meta($attID1, '_sku', '300'); update_post_meta($attID1, '_price', '300'); 

Он создает вариацию с атрибутами, как следует, но если я проверю изменение продукта, это приносит мне что-то вроде этого:

 Array ( [0] => Array ( [variation_id] => 1542 [variation_is_visible] => 1 [variation_is_active] => 1 [is_purchasable] => 1 [display_price] => 300 [display_regular_price] => 300 [attributes] => Array ( [attribute_print_size] => [attribute_paper_type] => ) [image_src] => [image_link] => [image_title] => [image_alt] => [image_caption] => [image_srcset] => [image_sizes] => [price_html] => [availability_html] => [sku] => 300 [weight] => kg [dimensions] => [min_qty] => 1 [max_qty] => [backorders_allowed] => [is_in_stock] => 1 [is_downloadable] => [is_virtual] => [is_sold_individually] => no [variation_description] => ) 

)

Таким образом, атрибут пуст, и если я перехожу к административной стороне, я могу видеть «любой размер печати» и «любой тип бумаги» в качестве вариантов. Если я выберу конкретные атрибуты и сохраню в admin, я могу увидеть эти значения в массиве, который я поделил сверху:

  [attributes] => Array ( [attribute_print_size] => 8x10 [attribute_paper_type] => Enhanced Matte Paper ) 

Итак, как я мог сделать это программно?

Solutions Collecting From Web of "Как назначить определенный атрибут вариации для продукта woocommerce?"