Прежде чем я зайду слишком далеко в эту кроличью нору ...
У меня есть продукт в категории, которая по сути является выбором из 4 других продуктов.Это может быть любая комбинация избранных продуктов.Цены основаны на обычной цене на эти продукты.
То, что я до сих пор управлял
Управляется через обычный интерфейс атрибутов WooCommerce.Администратор вставляет атрибут use-for-custom
со значением, являющимся категорией элемента, т.е. cupcakes
Результатом является ассоциация с продуктом, помеченным custom-assortment
в категории cupcakes
.Этот продукт будет доступен для любого / всех 4 вариантов продукта custom-assortment
в категории cupcakes
.
У меня также есть функция в functions.php, которая запрашивает все продукты с этим атрибутом набора и создает аккуратный маленький массив id / title / cost.Мне удалось это через этот пост ранее, плюс
$useable = array();
foreach ($products as $product){
$useable[] = array(
'id' => $product->ID,
'name' => $product->post_title,
'desc' => $product->post_excerpt,
'cost' => floatval(wc_get_product($product->ID)->get_price())/4
//cost is 1/4 as 4 will be selected to create 1 new product
);
}
Примечания
Это не должно фактически связывать выбор обратно с конкретнымтовар.Отображение названий выбранных товаров в окончательном порядке достаточно для администратора.Однако было бы неплохо сохранить эту ссылку, так как это может привести к дополнительным функциям позже.
Не касается запасов на данный момент или каких-либо других атрибутов выбранных продуктов, кроме цены.
Мысли
Я немного пытался получить пользовательские варианты для программного создания с помощью этого поста от LoicTheAztec, но пока у меня нетзаставил их появиться.Я мог бы немного больше ткнуть, потому что его вещи обычно точные.
foreach ($useable as $useit){
$display = $useit['name'] . " (" . $useit['cost'] . ")";
$variation_data = array(
'attributes' => array(
'flavor-one' => $display,
'flavor-two' => $display,
'flavor-three' => $display,
'flavor-four' => $display
),
'sku' => '',
'regular_price' => $useit['cost'],
'sale_price' => ''
);
var_dump($product->get_id());
create_product_variation($product->get_id(), $variation_data);
}
В качестве альтернативы, я мог бы, вероятно, создать выпадающий выбор вручную и запустить фильтр по цене на основе выбора.Это похоже на ручное восстановление функциональности - проверка правильности, цены и т. Д.
Последний вопрос
Есть ли способ использовать один продукт в качестве переменнойатрибут продукта для другого продукта уже?Это не похоже на что-то надуманное, но я не смог ничего гуглить.Мой гугл-фу не был отличным в последнее время.