Установка атрибута как изменения в торговле woo через php

У меня есть внешняя форма, которую я создаю, чтобы пользователи могли публиковать переменный продукт в моем магазине с передней стороны с предопределенными атрибутами и вариантами.

Я нашел этот очень полезный вопрос: здесь, который показывает мне, как установить тип продукта как переменную и назначить мои предопределенные атрибуты в разделе атрибутов данных продукта.

Однако, когда я нахожусь на бэкэнде WordPress / Woocommerce и редактирую продукт, я нажимаю на варианты, и ни один из них не установлен, я просматриваю атрибуты, а мой атрибут «разрешение» задается тремя моими позициями.

Как мне сделать это, где он фактически установит эти атрибуты в вариации моей формы? Нужно ли использовать wp_insert_post? Глядя в phpmyadmin, он просто выглядит как варианты продукта назначаются parent_id (идентификатор продукта), а тип post – product_varition и т. Д.

$new_post = array( 'post_title' => esc_attr(strip_tags($_POST['postTitle'])), 'post_content' => esc_attr(strip_tags($_POST['postContent'])), 'post_status' => 'publish', 'post_type' => 'product', 'tags_input' => array($tags) ); $skuu = rand(); $post_id = wp_insert_post($new_post); update_post_meta($post_id, '_sku', $skuu ); //my array for setting the attributes $avail_attributes = array( 'high-resolution', 'medium-resolution', 'low-resolution' ); //Sets the attributes up to be used as variations but doesnt actually set them up as variations wp_set_object_terms ($post_id, 'variable', 'product_type'); wp_set_object_terms( $post_id, $avail_attributes, 'pa_resolution' ); $thedata = array( 'pa_resolution'=> array( 'name'=>'pa_resolution', 'value'=>'', 'is_visible' => '1', 'is_variation' => '1', 'is_taxonomy' => '1' ) ); update_post_meta( $post_id,'_product_attributes',$thedata); update_post_meta( $post_id, '_visibility', 'search' ); update_post_meta( $post_id, '_stock_status', 'instock'); 

Поэтому, чтобы быть ясным (я, как правило, запутываю), приведенное выше создает мой переменный продукт из передней части, и когда я смотрю на продукт в бэкэнд, это переменный продукт, он имеет набор атрибутов разрешения и имеет мои 3 термины (high-res, medium-res, low-res) в качестве атрибутов. Мне просто нужно сделать этот шаг дальше, где они фактически установлены как вариации, чтобы люди могли разместить заказ.

Добавляет атрибуты к продукту уженужно также добавить варианты

Solutions Collecting From Web of "Установка атрибута как изменения в торговле woo через php"

Я заработал для своей ситуации, используя update_post_meta и wp_insert_post. Поскольку я уже настраивал свои атрибуты и термины, в которых я нуждался, это способ добавить к вышеуказанному коду, чтобы при создании продукта он не только назначил атрибуты для продукта, но и ввел их как изменения в базе данных.

Вот мое решение:

 //insert variations post_type $i=1; while ($i<=3) { $my_post = array( 'post_title' => 'Variation #' . $i . ' of ' . esc_attr(strip_tags($_POST['postTitle'])), 'post_name' => 'product-' . $post_id . '-variation-' . $i, 'post_status' => 'publish', 'post_parent' => $post_id, 'post_type' => 'product_variation', 'guid' => home_url() . '/?product_variation=product-' . $post_id . '-variation-' . $i ); // Insert the post into the database wp_insert_post( $my_post ); $variable_id = $post_id + 1; $variable_two = $variable_id + 1; $variable_three = $variable_two + 1; update_post_meta( $variable_id, 'attribute_pa_resolution', 'high-resolution'); update_post_meta( $variable_id, '_price', 8.50 ); update_post_meta( $variable_id, '_regular_price', '8.50'); update_post_meta( $variable_two, 'attribute_pa_resolution', 'medium-resolution'); update_post_meta( $variable_two, '_price', 5.50 ); update_post_meta( $variable_two, '_regular_price', '5.50'); update_post_meta( $variable_three, 'attribute_pa_resolution', 'low-resolution'); update_post_meta( $variable_three, '_price', 3.50 ); update_post_meta( $variable_three, '_regular_price', '3.50'); $i++; }