Показать сумму атрибутов товара JS wordpress - PullRequest
0 голосов
/ 27 января 2019

У меня есть окно с набором товаров, в котором посетитель может выбрать три продукта и получить его в комплекте. Оно выглядит следующим образом enter image description here

Я пробовал это, но это не такне показывает атрибуты, он показывает только цену

$dynamicPrice = get_post_meta($product->get_id(), '_per_product_pricing_active', true);
$dynamicFett = get_post_meta(  'attribute_fett' );
$dynamicKolhydrater = get_post_meta(  'attribute_kolhydrater' );
$dynamicProtein = get_post_meta(  'attribute_protein' );
$dynamicKcal = get_post_meta(  'attribute_kcal' );

<div class="cpb-row cpb-clear cpb-quantity-box--assets cpb-align-items-center cpb-justify-content-center">

            <div class='cpb-col-xl-6 cpb-col-lg-6 cpb-col-md-6 cpb-col-sm-6 bundle-product--price-label'><?php echo $giftBoxTotal; ?></div>
            <div class='cpb-col-xl-6 cpb-col-lg-6 cpb-col-md-6 cpb-col-sm-6 bundle-product--price wdm-bundle-total wdm_bundle_price' data-dynamic-price = "<?php echo $dynamicPrice ?>" data-total-bundle-price = "0"><div class='cpb-col-xl-7 cpb-col-lg-7 cpb-col-md-7 cpb-col-sm-7'><?php do_action("wdm_product_price_html"); ?></div></div>
             <div class='cpb-col-xl-6 cpb-col-lg-6 cpb-col-md-6 cpb-col-sm-6 bundle-product--price-label'>Totalt Protein</div>
            <div class='cpb-col-xl-6 cpb-col-lg-6 cpb-col-md-6 cpb-col-sm-6 bundle-product--price wdm-bundle-total wdm_bundle_price' data-dynamic-price = "<?php echo $dynamicProtein; >" data-total-bundle-price = "0"><div class='cpb-col-xl-7 cpb-col-lg-7 cpb-col-md-7 cpb-col-sm-7'><?php echo $dynamicProtein; ?></div></div>
             <div class='cpb-col-xl-6 cpb-col-lg-6 cpb-col-md-6 cpb-col-sm-6 bundle-product--price-label'>Totalt Fett</div>
            <div class='cpb-col-xl-6 cpb-col-lg-6 cpb-col-md-6 cpb-col-sm-6 bundle-product--price wdm-bundle-total wdm_bundle_price' data-dynamic-price = "<?php echo $dynamicFett ?>" data-total-bundle-price = "0"><div class='cpb-col-xl-7 cpb-col-lg-7 cpb-col-md-7 cpb-col-sm-7'><?php echo $dynamicFett; ?></div></div>
             <div class='cpb-col-xl-6 cpb-col-lg-6 cpb-col-md-6 cpb-col-sm-6 bundle-product--price-label'>Totalt Kolhydrater</div>
            <div class='cpb-col-xl-6 cpb-col-lg-6 cpb-col-md-6 cpb-col-sm-6 bundle-product--price wdm-bundle-total wdm_bundle_price' data-dynamic-price = "<?php echo $dynamicKolhydrater ?>" data-total-bundle-price = "0"><div class='cpb-col-xl-7 cpb-col-lg-7 cpb-col-md-7 cpb-col-sm-7'><?php echo $dynamicKolhydrater; ?></div></div>
             <div class='cpb-col-xl-6 cpb-col-lg-6 cpb-col-md-6 cpb-col-sm-6 bundle-product--price-label'>Totalt Kcal</div>
            <div class='cpb-col-xl-6 cpb-col-lg-6 cpb-col-md-6 cpb-col-sm-6 bundle-product--price wdm-bundle-total wdm_bundle_price' data-dynamic-price = "<?php echo $dynamicKcal ?>" data-total-bundle-price = "0"><div class='cpb-col-xl-7 cpb-col-lg-7 cpb-col-md-7 cpb-col-sm-7'><?php echo $dynamicKcal; ?></div></div>
        </div>

, что я пытаюсь сделать, это суммировать атрибуты товара, которые уже показываются для каждого товара с использованием этого кода

   <?php
    }

    $text = str_replace('_', '', $bundled_item_id);
    $full_attributes_right = '';
    if(isset(get_post_meta( $text, 'attribute_kcal' )[0])){
        $full_attributes_right .= 'kcal: ' . get_post_meta( $text, 'attribute_kcal' )[0] . '<br />';
    }


    $full_attributes_left = '';
    if(isset(get_post_meta( $text, 'attribute_protein' )[0])){
        $full_attributes_left .= 'Protein: ' . get_post_meta( $text, 'attribute_protein' )[0] . '<br />';
    }
    if(isset(get_post_meta( $text, 'attribute_kolhydrater' )[0])){
        $full_attributes_left .= 'Kolhydrater: ' . get_post_meta( $text, 'attribute_kolhydrater' )[0] . '<br />';
    }
    if(isset(get_post_meta( $text, 'attribute_fett' )[0])){
        $full_attributes_left .= 'Fett: ' . get_post_meta( $text, 'attribute_fett' )[0] . '<br />';
    }
    ?>

ОБНОВЛЕНИЕ

Пытаясь решить эту проблему, я обнаружил, что эта строка кода JS отображает атрибут под названием продукта ..

    var stock_in_out = $this.find( ".wdm_stock" ).html();
    var counter = 0;
    if ( stock_in_out != "Out of stock" && canProductBeAdded(item_id) && !$this.hasClass('wdm-no-stock')) {
        //If sold individual set flag for first time
        //console.log($this.find( ".variations select option:selected" ).attr('price'));
        var product = {
            product_id: $this.find( ".variations select option:selected" ).attr('product_id'),
            title: $this.find( ".product-title a" ).text().trim(),
            weight: $this.find( ".variations select option:selected" ).text(),
            price: $this.find( ".variations select option:selected" ).attr('price'),
            left_text: $this.find( ".variations select option:selected" ).attr('data_description').split("|")[0],
            right_text: $this.find( ".variations select option:selected" ).attr('data_description').split("|")[1]
        }
        console.log(product);
        addProductInfo(product); 

        if (isi) {
            sld_ind[item_id] = 1;
        }

Какя могу заставить это показать сумму?

Ответы [ 2 ]

0 голосов
/ 29 января 2019

Попробуйте заключить вызов get_post_meta в круглые скобки перед индексацией возвращаемого массива:

(get_post_meta ($ text, attribute_kcal ')) [0]

В противном случае вытащите ваш код и подтвердитечто get_post_meta возвращает значение.Также убедитесь, что $ text на самом деле просто идентификатор записи.

0 голосов
/ 29 января 2019

В вашем коде попробуйте заменить

$dynamicFett = get_post_meta(  'attribute_fett' );
$dynamicKolhydrater = get_post_meta(  'attribute_kolhydrater' );
$dynamicProtein = get_post_meta(  'attribute_protein' );
$dynamicKcal = get_post_meta(  'attribute_kcal' );

на

$dynamicFett = get_post_meta($product->get_id(),'attribute_fett', true );
$dynamicKolhydrater = get_post_meta($product->get_id(),'attribute_kolhydrater', true );
$dynamicProtein = get_post_meta($product->get_id(),'attribute_protein', true );
$dynamicKcal = get_post_meta($product->get_id(),'attribute_kcal', true );
...