Как получить описание / название варианта woocommerce в корзине / оформить заказ или в виде позиции thank_you - PullRequest
0 голосов
/ 03 октября 2019

Варианты не отображаются на странице одного продукта, хотя они правильно добавляются на странице магазина, где используется плагин таблицы продуктов с носителя 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;
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...