Эхо-специфические атрибуты продукта и метаданные в корзине WooCommerce

Обновление (связанное с комментариями автора):

Я хотел бы настроить WooCommerce cart.php для отображения некоторых метаданных, которые отлично работают на странице продукта, используя плагин Premium Essential Grid .

Я хотел бы отобразить некоторые поля атрибутов продукта, а также некоторые настраиваемые мета-поля, которые я создал с создателем мета-поля модуля Essential Grid .

Для тестирования я использую атрибут 'Height' (так что 'pa_height' ) и настраиваемое поле 'Age' которое slug 'eg-age-cal' .

В настоящее время я попытался использовать следующее:

 <?php echo get_post_meta($product_id, 'pa_height', true );?> 

А также:

 <?php echo get_post_meta($product_id, 'eg-age-cal', true );?> 

Но они, похоже, не работают.

Мне удалось заставить код работать, используя:

 <?php echo get_post_meta($product_id, '_regular_price', true );?> 

Поэтому я знаю, что код работает.

Мне просто нужна помощь в разработке, как я могу получить значения из этого настраиваемого атрибута и настраиваемого поля.

Благодарю.

Обновление (совместимость с WC 3+)

После ваших объяснений в вашем комментарии ниже я просто обнаружил, что вы используете плагин Premium Essential Grid (коммерческий плагин) для создания некоторых настраиваемых полей и атрибутов, связанных с вашими продуктами wooCommerce.

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

Я думаю, что вы не можете использовать обычные функции WordPress / WooCommerce для получения этих данных, и именно по этой причине вы не получите никаких данных с помощью get_post_meta() как обычно …

Лучший способ получить помощь:
– искать / исследовать вашу базу данных для данных настраиваемых полей.
– для поиска / запроса в Essential Grid разработчики плагинов поддерживают потоки.


Мой оригинальный ответ:

Для атрибутов, определенных в ваших продуктах , используя get_post_meta() с переменной $product_id , вам нужно использовать ее таким образом, чтобы получить нужные вам данные (это массив значений):

 // getting the defined product attributes $product_attr = get_post_meta( $product_id, '_product_attributes' ); // displaying the array of values (just to test and to see output) echo var_dump( $product_attr ); 

Вы также можете использовать функцию get_attributes() (более рекомендуется) , таким образом:

 // Creating an object instance of the product $_product = new WC_Product( $product_id ); // getting the defined product attributes $product_attr = $_product->get_attributes(); // displaying the array of values (just to test and to see output) echo var_dump( $product_attr ); 

Весь код проверен и работает.

ТЕПЕРЬ ДАННЫЕ КОРПУСА УСТАНАВЛИВАЮТСЯ В ПЕЧЕНЬЕ И СЕССИЯХ, и вам нужно будет использовать синтаксис WC()->cart для получения данных и предметов тележки

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

 foreach ( WC()->cart->get_cart() as $cart_item ) { $product = $cart_item['data']; if(!empty($product)){ // getting the defined product attributes $product_attr = $_product->get_attributes(); // displaying the attributes array of values (just to test and to see output) echo var_dump( $product_attr ) . '<br>'; } } 

Это отобразит массив атрибутов значений для каждого продукта в CART.


Решение, основанное на этом потоке , используя wc_get_product_terms() внутри того же фрагмента кода, чтобы получить ваш атрибут:

 foreach ( WC()->cart->get_cart() as $cart_item ) { $product = $cart_item['data']; if(!empty($product)){ // compatibility with WC +3 $product_id = method_exists( $product, 'get_id' ) ? $product->get_id() : $product->id; // Getting "height" product attribute $myAttribute = array_shift( wc_get_product_terms( $product_id, 'pa_height', array( 'fields' => 'names' ) ) ); echo $myAttribute . '<br>'; } } 

Рекомендации:

  • Класс WC_Product – get_attributes ()
  • WooCommerce – получить пользовательский атрибут продукта
  • Получить идентификатор корзины товаров на странице WooCommerce на выводе, отображать изображения продуктов
  • Ссылка на WordPress Code – get_post_meta ()