• Друзья, очень нужна помощь:

    Есть 3 переменных:
    a — атрибут товара кол-во
    b — мета поле товара
    с — мета поле товара в котором необходимо эти значения вывести вместе так:

    а:b;

    Как это реализовать через functions.php

Просмотр 5 ответов — с 1 по 5 (всего 5)
  • Так скомбинируйте а и б и все

    $c = $a . ':' . $b;
    update_post_meta( $product_id, 'c', $c );

    В фанкшн например на woocommerce_process_product_meta() — срабатывает при сохранении поста продукта:

    add_action( 'woocommerce_update_product', 'update_custom_meta_field' );
    
    function update_custom_meta_field( $product_id ) {
    
        $a = get_post_meta( $product_id, 'a', true );
        $b = get_post_meta( $product_id, 'b', true );
    
    
        $c = $a . $b;
    
    
        update_post_meta( $product_id, 'c', $c );
    }

    Сейчас мой код выглядит так, подставляется только значение $allPrices[$priceType] , а значение атрибута нет

    add_action('itglx_wc1c_after_set_product_price', function (int $productOrVariationID) {
        // получим данные по ценам в товаре/вариации записанные из выгрузки
        // данные представлены массивом, где ключ это GUID типа цен, а значение это значение цены
        
        $allPrices = get_post_meta($productOrVariationID, '_all_prices', true);
        $priceType = '3135e328-512c-11ee-b780-047c167e051d';
    	$montshematopas = $product->get_attribute( 'optovoe-kolichestvo-ot' );
    	
       	update_post_meta(
            $productOrVariationID,
            'b2bking_product_pricetiers_group_21594', $montshematopas . $allPrices[$priceType] ?? '');
     	
    		
    });

    });

    add_action( 'woocommerce_update_product', 'update_custom_meta_field' );
    
    function update_custom_meta_field( $product_id ) {
     global $product;
        $a = get_post_meta( $product_id, 'pa_optovoe-kolichestvo-ot' );
        $b = get_post_meta( $product_id, 'b2bking_product_pricetiers_group_21594', true );
    
    
        $c = $a .':'. $b .';';
    
    
        update_post_meta( $product_id, 'b2bking_product_pricetiers_group_b2c', $c );
    }

    $a — не подставляется значение атрибута ‘pa_optovoe-kolichestvo-ot’

    Сорян там же у вас атрибут, невнимательно посмотрел изначально… вот так будет работать

    add_action( 'woocommerce_update_product', 'update_custom_meta_field' );
    
    function update_custom_meta_field( $product_id ) {
        global $product;
    
        $product = wc_get_product( $product_id );
        
        $a_raw = $product->get_attribute( 'УКАЖИТЕ_АТРИБУТ' );
    
        $a = ! empty( $a_raw ) ? $a_raw : '';
    
        $b = get_post_meta( $product_id, 'ВВЕДИТЕ_КЛЮЧ_ПОЛЯ', true );
    
        $c = $a . $b;
    
        update_post_meta( $product_id, 'КЛЮЧЬ_С', $c );
    }

    При сохранении это должно работать

    А ваш код правильный почти, скорее всего потому что вы получаете объект продукта, поэтому функция $product->get_attribute(‘optovoe-kolichestvo-ot’) не может вернуть значение атрибута

    вот так примерно должно быть

    add_action('itglx_wc1c_after_set_product_price', function (int $productOrVariationID) {
    
        $allPrices = get_post_meta($productOrVariationID, '_all_prices', true);
        $priceType = '3135e328-512c-11ee-b780-047c167e051d';
      
        $product = wc_get_product($productOrVariationID);
      
        // Получить значение атрибута
        $montshematopas = $product->get_attribute('optovoe-kolichestvo-ot');
    
        update_post_meta($productOrVariationID, 'b2bking_product_pricetiers_group_21594', $montshematopas . $allPrices[$priceType] ?? '');
    });

    Спасибо, помогло

Просмотр 5 ответов — с 1 по 5 (всего 5)
  • Тема «Слияние полей товара WooCommerce» закрыта для новых ответов.