Варианты не отображаются на странице одного продукта, хотя они правильно добавляются на странице магазина, где используется плагин таблицы продуктов с носителя Barnes.
Как правильно получить иустановить вариант так, чтобы он всегда присутствовал в формате «product_title - product_variation_attribute», или, альтернативно, получить описание варианта продукта на странице thank_you_, где я могу передать его на внешний API для обработки в качестве отдельного элемента line_item или элемента массива?
Чтобы попытаться получить вариант на крюке thank_you, я использовал приведенный ниже PHP.
//PHP
function wc_checkout_send_order_to_api($order_id){
$order = new WC_Order($order_id);
...
$items = $order->get_items();
$item_name = array();
$item_qty = array();
$item_price = array();
$item_sku = array();
$item_meta = array();
....
foreach ($items as $key => $item) {
$item_name[] = $item['name'];
$item_qty[] = $item['qty'];
$item_price[] = $item['line_total'];
$item_id = $item['product_id'];
$product = new WC_Product($item_id);
$item_sku[] = $product->get_sku();
// $variation_id = $item['variation_id'];
// $variation = new WC_Product($variation_id);
// $variation = $variation->get_formatted_name();
$product_var = new WC_Product_Variable( $product_id );
$variations = $product_var->get_available_variations();
$item_variation_sku =[];
foreach ($variations as $variation) {
//Not seeing this this coming through? If I can get this then I don't need to care about the split
if($variation[‘variation_id’] == $variation_id){
$item_variation_sku[] = $variation[‘attributes’];
}
...
Post to API
...
//End PHP
Я также прибег к попытке собрать описание варианта в localStorage с помощью фрагмента JQuery. По какой-то причине я не получаю текущее выбранное значение при открытии страницы (он получает действительную опцию только в том случае, если пользователь изменяет ее из предварительно выбранного варианта).
(function( $ ) {
$(function() {
var $variation_form = $( '.variations_form' );
$variation_form.on( 'found_variation.wc-variation-form', function ( event, variation ) {
// log out so we can see the value
console.log(variation['attributes']['attribute_contract-term']);
if(typeof(variation['attributes']['attribute_contract-term'])!='undefined'){
//The value I am wanting to ultimately append to the product localStorage.setItem('variation',variation['attributes']['attribute_contract-term'])
}
});
});
})( jQuery );
Приведенный выше код корректно выбираетсяописание переменной, однако, только если она не является предварительно выбранной опцией.
edit Также безуспешно пробовал следующее:
$item_variation_sku[] = $item['attributes']['attribute_contract-term'];
, а также
$product_variation_id = $item->get_variation_id();
$variation_product_id = $product_variation_id;
$variation_product = new WC_Product_Variation( $variation_product_id );
$item_variation_sku[] = $variation_product;