Создать новый вариант продукта и добавить выбранный вариант в корзину. - PullRequest
1 голос
/ 07 января 2020

Создание нового продукта с двумя вариантами и добавление выбранного в корзину.

Желаемый результат: Форма выбирает между вариантами и добавляет соответствующий вариант в корзину.

Текущий результат : Второй вариант добавляется в корзину независимо от того, какой из них выбран

Примечания: Добавление variation_id должно быть довольно простым, но так как идентификатор варианта еще не создан, мне нужен способ связать вариант термины в форме с недавно назначенными variation_id

<form name="new-prod" method="post" action="">
<input type="radio" name="attribute_pa_size" value="11oz" id="pa_size_v_11oz">
<input type="radio" name="attribute_pa_size" value="15oz" checked="checked" id="pa_size">

PHP:

$post_size = $_POST['attribute_pa_size'];

Создано несколько вариантов:

Первый вариант

$parent_id = $product_ID;
$variation = array(
'post_title'   => 'Product #' . $parent_id . ' Variation',
'post_content' => '',
'post_status'  => 'publish',
'post_parent'  => $parent_id,
'post_type'    => 'product_variation'
);
$variation_id = wp_insert_post( $variation );
update_post_meta( $variation_id, '_regular_price', 21.95 );
update_post_meta( $variation_id, '_price', 21.95 );
update_post_meta( $variation_id, 'attribute_' . $mythis->size_tax, '15oz' );
WC_Product_Variable::sync( $parent_id );

Второй вариант

$parent_id = $product_ID;
$variation = array(
'post_title'   => 'Product #' . $parent_id . ' Variation',
'post_content' => '',
'post_status'  => 'publish',
'post_parent'  => $parent_id,
'post_type'    => 'product_variation'
);
$variation_id = wp_insert_post( $variation );
update_post_meta( $variation_id, '_regular_price', 18.95 );
update_post_meta( $variation_id, '_price', 18.95 );
update_post_meta( $variation_id, 'attribute_' . $mythis->size_tax, '11oz' );
WC_Product_Variable::sync( $parent_id );

Добавить вариант в корзину

$quantity     = 1;
$variation    = $post_size;
$woocommerce->cart->add_to_cart( $product_ID, $quantity, $variation_id, $variation  );

1 Ответ

0 голосов
/ 07 января 2020

Заменил все ссылки $variation_id на $elevenvariation_id для первого варианта.

Затем заменил блок «добавить вариант в корзину» следующим, и он смог работать из моего начального тестирования:

  $quantity     = 1;
  $variation    = $post_size;

$answer = $_POST['attribute_pa_size'];  
if ($answer == "15oz") {          
$woocommerce->cart->add_to_cart( $product_ID, $quantity, $variation_id, $variation  );   
}
    else {
        $woocommerce->cart->add_to_cart( $product_ID, $quantity, $elevenvariation_id, $variation  );
        }          
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...