Обновление (связанное с комментариями автора):
Я хотел бы настроить 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>'; } }
Рекомендации: