Вывести название товара в шаблоне комментария woocommerce
Суть вопроса заключается в следующем. Делаю вывод комментариев по товарам. Все супер но не могу никак найти информацию как мне получить айдишник товара к которому принадлежит тот или иной комментарий. Вот функкция которая обрабатывает стиль комментария
function mytheme_comment_index( $comment, $args, $depth ) < if ( 'div' === $args['style'] ) < $tag = 'div'; $add_below = 'comment'; >else < $tag = 'div'; $add_below = 'div-comment'; >?> ?> ?> if (pll_current_language() == 'ua') < echo("Ім`я"); >if (pll_current_language() == 'en') < echo('Name'); >?> %s' ), get_comment_author_link() ); ?> comment_approved == '0' ) < ?>
?> >
Так вот может кто вкурсе каким образом возможно в h6 вместо 2410 автоматом чтобы подставлялся нужный ID
Как вывести название категории товара?

Подскажите, как вывести название категории? Вот так что бы было:
- Вопрос задан более двух лет назад
- 364 просмотра
Комментировать
Решения вопроса 1

Антон Литвиненко @AntonLitvinenko
HTML coder
Уберете лишнее под себя
add_action( 'woocommerce_after_shop_loop_item_title', 'custom_show_product_cat', 7 ); function custom_show_product_cat() < global $product; echo wc_get_product_category_list( $product->get_id(), ', ', '' . _n( 'Category:', 'Categories:', count( $product->get_category_ids() ), 'woocommerce' ) . ' ', '' ); >
Ответ написан более двух лет назад
Комментировать
Нравится 1 Комментировать
WC_Product
Итак, WC_Product – это объект товара в WooCommerce. На этой странице вы найдёте описание его методов и много-много примеров использования.
Документация не всегда позволяет последовательно разобраться в теме, поэтому не могу не порекомендовать вам свой видеокурс по созданию темы для WooCommerce.
Пример использования
Прежде, чем мы перейдём к описанию методов WC_Product , давайте попробуем разобраться, как это вообще работает.
Прежде всего давайте проведём аналогию с объектом WP_Post в WordPress. По сути мы с вами можем получить объект поста функцией вот так $post = get_post( 1 ); а потом вывести его заголовок вот так echo $post->post_title . Кроме того, этот объект уже в принципе доступен в некоторых фильтрах.
То же самое и с WC_Product .
Во-первых, вы можете получить его из ID товара при помощи функции wc_get_product() . Во-вторых, в некоторых фильтрах он уже доступен и нам остаётся только обратиться к его методам. Ну к примеру хук woocommerce_product_is_purchasable, который и вовсе является частью метода is_purchasable() , либо что-то поинтереснее, например woocommerce_product_add_to_cart_text, где объект товара и вовсе доступен в виде глобальной переменной global $product; .
После того, как объект товара доступен в виде переменной, можем обратиться к его методам, чтобы либо получить какую-то информацию о товаре, либо изменить его.
Сначала попробуем получить и вывести:
// допустим, что мы где-то получили ID товара, и записали его в переменную $product_id = 55; // получаем объект товара функция wc_get_product() $my_super_product = wc_get_product( $product_id ); // можем вывести цену например echo $my_super_product->get_price_html();
Теперь попробуем изменить:
// к примеру тот же самый товар, сразу получаем его объект $my_super_product = wc_get_product( 55 ); // получаем его цену и чекаем, что она не меньше 100 (в текущей валюте магазина) $regular_price = $my_super_product->get_regular_price(); if( 100 > $regular_price ) { // если цена меньше 100, то прибавляем к ней 20% (типо подорожало:) $regular_price = $regular_price + $regular_price * 0.2; $my_super_product->set_regular_price( $regular_price ); // важно важно важно! после изменения объекта сохраняем его $my_super_product->save(); }
При изменении товара не забывайте сохраняться методом save() . Этот метод позволяет сэкономить производительность, когда вам нужно изменить несколько параметров товара. Сначала меняем все параметры, а только потом перезаписываем их в базе данных всего одним запросом.
Методы
Тут невероятное количество методов, долго думал, как лучше их описать и решил сделать по категориям. Если вдруг ищете какой-то определённый, то используйте Cmd(Ctrl) + F в браузере для поиска по странице.
Основное
Начнём с методов получения информации о товаре:
- visible – товар отображается в каталоге и результатах поиска
- catalog – товар отображается в каталоге
- search – товар отображается в результатах поиска
- hidden – скрыт из каталога и результатов поиска
get_children() Возвращает массив из ID дочерних товаров (например вариаций). get_cross_sell_ids() Возвращает массив из ID товаров, установленных в качестве кросселов. get_upsell_ids() Возвращает массив из ID товаров, установленных в качестве апсейлов. get_data() Возвращает ассоциативный массив со всеми данными товара. get_date_created() Возвращает дату создания товара в виде объекта WC_DateTime.
$product = wc_get_product( 26 ); $date = $product->get_date_created(); echo $date->date( 'Y-m-d' ); // 2022-01-20
get_date_modified() Возвращает дату последнего изменения товара в виде объекта WC_DateTime. get_description() Возвращает основное описание товара так, как оно хранится в базе данных. get_short_description() Возвращает короткое описание товара. get_featured() Возвращает true , если товар отмечен как «рекомендованный». is_featured() Отмечен ли товар как рекомендованный? true / false . Является полным эквивалентом метода get_featured() . get_menu_order() Возвращает номер товара по порядку при ручной сортировке. get_parent_id() ID родительского товара. get_post_password() Если на просмотр товара установлен пароль, то функция возвращает его в незашифрованном виде. get_purchase_note() Возвращает примечание к покупке. get_status() Возвращает статус товара, который по сути является статусом поста. get_total_sales() Возвращает общее количество продаж этого товара. has_child() Возвращает true , если у товара есть дочерние товары (вариативные к примеру). is_purchasable() Возвращает true , если товар может быть куплен, иначе – false . По сути чекает цену товара и то, что он опубликован. is_visible() Возвращает true , если товар видим в каталоге, иначе – false .
Практически для каждого метода получения информации о товаре, есть аналог для изменения этой информации. Сейчас об этих аналогах и поговорим.
set_id() Изменяем ID товара для последующего использования в запросе. set_name() Изменяет название товара. Пример:
// получаем объект товара $product = wc_get_product( 26); // получаем текушее название и добавляем слово к нему $product->set_name( 'Пушистый ' . $product->get_name() ); // Пушистый Вязаный свитер например :) // сохраняем $product->save();
При изменении товара не забывайте сохраняться методом save() . Этот метод позволяет сэкономить производительность, когда вам нужно изменить несколько параметров товара. Сначала меняем все параметры, а только потом перезаписываем их в базе данных всего одним запросом.
set_catalog_visibility() Позволяет изменить видимость товара в каталоге. Принимает значения: hidden , visible , search (только в результатах поиска), catalog (только в каталоге). set_cross_sell_ids( $cross_sell_ids ) Укажите массив из ID товаров, которые нужно установить в качестве кросселов. set_upsell_ids( $upsell_ids ) Укажите массив из ID товаров, которые нужно установить в качестве апсейлов. set_date_created( $date ) Изменяем дату публикации товара. В качестве параметра нужно указать время либо в UNIX-формате, либо в ISO 8601. set_date_modified( $date ) Изменяем дату обновления товара. В качестве параметра нужно указать время либо в UNIX-формате, либо в ISO 8601. set_featured( $featured ) Передаём в этот метод значение true , чтобы сделать товар рекомендованым, или false – наоборот. set_menu_order( $menu_order ) Устаналиваем номер товара по порядку для ручной сортировки. set_parent_id( $parent_id ) Устаналиваем ID родительского товара. set_post_password( $password ) Устаналиваем пароль на просмотр товара в незащифрованном виде. set_purchase_note( $purchase_note ) Изменяем примечание к покупке. set_status( $status ) Устаналиваем статус товара, который по сути является статусом поста. set_total_sales( $total_sales ) Устанавливает общее количество продаж этого товара. set_description( $description ) Меняем описание товара. delete( $force_delete ) Помещает товар в корзину. При указании параметра метода в значение true полностью удаляет товара минуя корзину. Не нуждается в сохранении методом save() .
Рейтинг и отзывы
get_average_rating() Получает средний рейтинг товара, например 4.5 . get_rating_count( $value ) Возвращает количество отзывов с рейтингами для товара. Также в необязательном параметре метода можно указать количество звёзд, отзывы с которыми будем считать. get_rating_counts() Возвращает массив всех рейтингов, оставленных к товару и количество отзывов для каждого рейтинга, например:
$product = wc_get_product( 23 ); print_r( $product->get_rating_counts() ); // например у товара с мы можем заметить, что оставлен один отзыв с рейтингом 5 и три отзыва с рейтингом 4. /* Array ( [4] => 3 [5] => 1 ) */
get_review_count() Возвращает общее количество отзывов к товару. get_reviews_allowed() Возвращает true , если отзывы к товару разрешены, иначе – false . set_reviews_allowed( $reviews_allowed ) Устанавливаем true , чтобы разрешить отзывы к товару, иначе – false .
Изображения товара

get_gallery_image_ids() Возвращает массив из ID изображений в галерее товара. get_image() Возвращает основное изображение товара в виде HTML (тег
)
Принимает три параметра, первый – размер изображения (по умолчанию woocommerce_thumbnail), второй – дополнительные HTML-атрибуты изображения, третий (false или true) – использовать ли плейсхолдер, если изображение товара не установлено. get_image_id() Возвращает ID основного изображения товара. set_gallery_image_ids( $image_ids ) Перейдайте массив из ID изображений, которые будут в галерее товара. set_image_id( $image_id ) Устаналиваем основное изображение товара.
Цена товара

Начнём с методов получения цены товара. Обычно в них не передаём никаких параметров.
get_price() Возвращает текущую активную цену товара, числовое значение. Если товар сейчас на распродаже, то вернёт цену распродажи. get_regular_price() Возвращает базовую цену товара в виде числа, не на распродаже. get_sale_price() Возвращает цену товара на распродаже в виде числового значения, даже если сейчас она не идёт. get_date_on_sale_from() Возвращает дату старта распродажи в виде объекта WC_DateTime или null, если она не указана. get_date_on_sale_to() Возвращает дату завершения распродажи в виде объекта WC_DateTime или null, если она не указана. is_on_sale() Возвращает true , если товар в данный момент на распродаже, иначе – false . get_price_html() Возвращает цену в виде HTML, которая отображается пользователям с учётом форматирования и валюты.
// получаем объект товара с style="color:#77bcd7">$true_product = wc_get_product( 55 ); // выводим цену товара, если например она больше 100 if( $true_product->get_price() > 100 ) { echo 'Цена: ' . $true_product->get_price_html(); }
Теперь пришло время менять цену товара, также при помощи методов. Каждый из этих методов принимает один параметр – новую цену товара в виде числа.
set_price( $price ) Устаналивает активную цену товара для дальнейшего использования в запросе. set_regular_price( $price ) Устаналивает обычную цену товара, не на распродаже. set_sale_price( $price ) Устаналивает распродажную цену товара. set_date_on_sale_from( $date ) Устанавливаем дату начала распродажи. В качестве параметра нужно указать время либо в UNIX-формате, либо в ISO 8601. set_date_on_sale_to( $date ) Устанавливаем дату завершения распродажи. В качестве параметра нужно указать время либо в UNIX-формате, либо в ISO 8601.
Обратите внимание, что сами по себе все эти методы работают только в рамках текущего запроса (на текущей странице). Но только два из них – set_regular_price() и set_sale_price() позволяют изменить значение в базе данных, но и тогда нужно сохранить изменения методо save() . Пример:
// меняем обычную и распродажную цену товара с style="color:#77bcd7">$true_product = wc_get_product( 55 ); $true_product->set_regular_price( 150 ); $true_product->set_sale_price( 100 ); $true_product->save();
Наличие на складе (Управление запасами)

get_sku() Получает артикул товара. is_in_stock() По сути проверяет, может ли товар быть куплен. is_on_backorder() Проверяет, доступен ли товар по предзаказу? true / false get_low_stock_amount() Возвращает значение, которое установлено как «Граница малых запасов» для этого конкретного товара. get_manage_stock() Возвращает true , если у товара включена галка управления запасами, иначе – false . managing_stock() Всё то же самое, что и get_manage_stock() , но также проверяет опцию woocommerce_manage_stock в базе данных, вот эту опцию:

get_max_purchase_quantity() Возвращает максимальное количество товара, которое можно купить за раз, либо -1, если нет ограничений. get_min_purchase_quantity() Возвращает минимальное количество товара, которое можно купить за раз. get_stock_quantity() Количество в запасе. get_stock_status() Возвращает статус наличия товара на складе. Возможные значения: instock (в наличии), outofstock (не в наличии) и onbackorder (предзаказ) has_enough_stock( $qty ) Возвращает true , если на складе имеется достаточное количество товара для добавления в заказ, иначе – false . get_availability_class() Возвращает CSS-класс для товара, в зависимости от его доступности на складе. Эти классы: in-stock , out-of-stock , available-on-backorder . get_availability_text() Возвращает переведённый текст доступности товара на складе, например «В наличии» get_availability() По сути возвращает массив, состоящий из get_availability_text() и get_availability_class() , например:
/* Array ( [availability] => Доступно для предзаказа [class] => available-on-backorder ) */
get_backorders() Возвращает yes , если при включенном управлении запасами предзаказы разрешены, nofify – если при включенном управлении запасами предзаказы разрешены с уведомлением клиента. Иначе – no . backorders_allowed() Возвращает true , если при включенном управлении запасами предзаказы разрешены или разрешены с уведомлением клиента. Иначе – false . backorders_require_notification() Возвращает true , если при включенном управлении запасами предзаказы разрешены с уведомлением клиента. Иначе – false . get_sold_individually() Возвращает true , если опция «Продавать индивидуально» включена. is_sold_individually() По сути является аналогом метода get_sold_individually() , но с дополнительным фильтром woocommerce_is_sold_individually . set_sku() Изменяем артикул товара. set_backorders( $backorders ) Передайте в этот параметр значения yes , no или notify , чтобы включить/отключить предзаказы. set_low_stock_amount( $amount ) Устанавливает значение «Граница малых запасов» для этого конкретного товара. set_manage_stock( $manage_stock ) Установите true , чтобы включить управление запасами для товара, иначе – false . set_stock_quantity( $quantity ) Устаналиваем количество товара на складе. set_stock_status( $stock_status ) Устанавливает статус наличия товара на складе. Возможные значения: instock (в наличии), outofstock (не в наличии) и onbackorder (предзаказ) set_sold_individually( $sold_individually ) Передаём в параметре true , чтобы включить опцию «Продавать индивидуально», false – чтобы отключить её.
Доставка

needs_shipping() Нуждается ли товар в доставке? true / false has_dimensions() Возвращает true , если у товара установлены габариты, иначе – false has_weight() Указан ли вес товара? true / false get_dimensions( false ) Возвращает массив с габаритами товара.
Вы получите PHP-уведомление и рекомендацию использовать функцию wc_format_dimensions() , если используете этот метод с параметром true
/* Array ( [length] => 10 [width] => 5 [height] => 5 ) */
get_height() Получает числовое значение высоты товара. get_length() Получает числовое значение длины товара. get_width() Получает числовое значение ширины товара. get_weight() Получает числовое значение веса товара. child_has_dimensions() Возвращает true , если дочерний товар (вариация например) имеет хотя бы одно значение габаритов (высота/длина/ширина). child_has_weight() Возвращает true , если дочерний товар (вариация например) имеет заполненным поле вес. get_shipping_class() Возвращает ярлык класса доставки товара. get_shipping_class_id() Возвращает ID класса доставки товара. set_height( $height ) Задаёт высоту товара. set_length( $length ) Задаёт длину товара. set_width( $width ) Задаёт ширину товара. set_weight( $weight ) Задаёт вес товара. set_shipping_class_id( $shipping_class_id ) Изменяет класс доставки товара, в метод передаём его ID.
Типы товаров
get_type() Возвращает тип товара. Например simple , grouped , external , variable или произвольный. get_virtual() Возвращает true , если является виртуальным товаром, false – не является. is_virtual() Является аналогом метода get_virtual() с применяемым фильтром woocommerce_is_virtual . is_type( $types ) Позволяет проверить тип товара, например:
if( $product->is_type( array( 'simple', 'external' ) ) { // товар является простым или партнёрским } if( $product->is_type( 'variable' ) ) { // это явно вариативный товар }
set_virtual( $true ) Устаналиваем true , чтобы сделать этот товар виртуальным товаром, false – не виртуальным.
Скачиваемые товары

get_downloadable() Возвращает true , если это скачиваемый товар, false – если нет. is_downloadable() Является ли товар скачиваемым? true / false . По сути является аналогом метода get_downloadable() с применением хука woocommerce_is_downloadable . get_download_expiry() Возвращает количество дней, по окончанию которых ссылка на скачивание перестанет работать. get_download_limit() Возвращает лимит загрузок. get_downloads() Возвращает массив объектов WC_Product_Download файлов для загрузки. Их параметры мы можем получить в цикле:
$files = $product->get_downloads(); if( $files ) { foreach( $files as $key => $file ) { echo 'Название файла: '
. $file->get_name() . ''; echo 'Ссылка на файл: ' . $file->get_file() . '
'; } } /* Название файла: Гора Ссылка на файл: https://localhost/images/mountain.jpg Название файла: Облака Ссылка на файл: https://localhost/images/clouds.jpg */
has_file() Возвращает true , если к скачиваемому товару прикреплён файл, иначе – false . set_downloadable( $downloadable ) Передайте в параметре true , если хотите сделать этот товар скачиваемым, false – нескачиваемым. set_download_expiry( $download_expiry ) Изменяет количество дней, по окончанию которых ссылка на скачивание перестанет работать. get_download_limit( $download_limit ) Изменяем лимит загрузок для товара. set_downloads( $downloads ) Позволяет через код добавить файлы в загружаемый товар. Нужно передать массив объектов WC_Product_Download файлов для загрузки.
Атрибуты

get_attribute( $attribute ) Получает значение атрибута товара.
В качестве значения параметра метода мы указываем либо ярлык атрибута, который вы найдёте на странице Товары > Атрибуты, либо значение поля Имя для индивидуальных атрибутов товара.
Если у товара несколько атрибутов одного типа, то они будут разделены либо , либо | (если это индивидуальный атрибут товара). get_attributes() Получаем массив из всех атрибутов товара. Если быть точным, то массив из объектов WC_Product_Attribute . Пример ниже:
$attributes = $product->get_attributes(); if( $attributes ) { foreach( $attributes as $attribute ) { echo 'Название атрибута: '
. $attribute->get_name() . ''; echo 'Значение атрибута: ' . join( ', ', $attribute->get_options() ) . ''; } } /* Название атрибута: attr Значение атрибута: dfsf, fsdfsd Название атрибута: pa_cvet Значение атрибута: #000, #f0f0f0 */
has_attributes() Возвращает true , если у товара есть публичные атрибуты. set_attributes( $attributes ) Передайте массив объектов атрибутов WC_Product_Attribute, чтобы задать их для товара.
Добавление в корзину
add_to_cart_text() Возвращает текст, который отображается на кнопке добавления в корзину для товара. Например для простого товара этот текст по умолчанию – «В корзину». Кстати, текст этот мы меняли при помощи фильтров в этом уроке. add_to_cart_url() URL, при переходу по которому товар будет добавлен в корзину. По умолчанию это значение может быть например ?add-to-cart=34 . single_add_to_cart_text() Возвращает текст кнопки добавления в корзину для отображения на странице самого товара.
Категории и теги товара
get_category_ids() Возвращает массив из ID категорий товара. set_category_ids( $term_ids ) Передайте массив из ID категорий, в которые нужно добавить товар. get_tag_ids() Возвращает массив из ID меток товара. set_tag_ids( $term_ids ) Передайте массив из ID меток, которые нужно добавить к товару.
Метаданные товара
get_meta( $key, $single ) Получает значение метаданных товара. Метод очень похож на функцию get_post_meta() с тем лишь исключением, что ID товара нам лишний раз уже указывать не нужно. Описание параметров можете почитать там же. get_meta_data() Получает массив всех метаданных товара. meta_exists( $key ) Проверяет, действительно ли существуют метаданные с указанным ключом. add_meta_data( $key, $value, $unique ) Метод очень похож на функцию add_post_meta() с тем лишь исключением, что ID товара нам лишний раз уже указывать не нужно. Описание параметров можете почитать там же. delete_meta_data( $key ) Удаляет метаданные по значению их ключа. delete_meta_data_by_mid( $mid ) Удаляем метаданные товара по значению их ID. update_meta_data( $key, $value, $meta_id ) Обновляет метаданные по значению ключа, либо добавляет, если их не существует. save_meta_data() Сохраняет изменённые метаданные в базе данных.
Вариации
Технически методы для работы с вариациями товаров уже скорее относятся к классу WC_Product_Variable , а не к WC_Product , но во-первых, у меня нет отдельного поста-описания того класса, а во-вторых, эти методы также применяются к товарам после получения их объекта функцией wc_get_product() .
get_available_variations( $return ) Позволяет получить все включенные вариации вариативного товара. В качестве параметра метода можно указать objects , тогда результат будет возвращён в виде массива объектов.
Array ( [0] => Array ( [attributes] => Array ( [attribute_pa_color] => black [attribute_magical] => Yes ) [availability_html] => p in-stock">9 in stock/p> [backorders_allowed] => [dimensions] => Array ( [length] => [width] => [height] => ) [dimensions_html] => N/A [display_price] => 155 [display_regular_price] => 155 [image] => Array( . ) [image_id] => 129 [is_downloadable] => [is_in_stock] => 1 [is_purchasable] => 1 [is_sold_individually] => yes [is_virtual] => [max_qty] => 1 [min_qty] => 1 [price_html] => span style="color: #ebde68;">span amount">bdi>span style="color: #ebde68;">/span>155.00/bdi>/span>/span> [sku] => MISH-123-TEST [variation_description] => p>Тестовое описание вариации/p> [variation_id] => 270 [variation_is_active] => 1 [variation_is_visible] => 1 [weight] => [weight_html] => N/A ) [1] => Array( . )
Документация не всегда позволяет последовательно разобраться в теме, поэтому не могу не порекомендовать вам свой видеокурс по созданию темы для WooCommerce.
Миша
Впервые познакомился с WordPress в 2009 году. Организатор и спикер на конференциях WordCamp. Преподаватель в школе Нетология.
Пишите, если нужна помощь с сайтом или разработка с нуля.
Как вывести название товара в описание (woocommerce, переменная)?
Добрый день. Понимаю, что через код можно вывести все что угодно, но не нашел информации по своему вопросу.
В общем, нужно сделать вывод переменной названия товара в текстовом поле (описании).
Подобное что-то — [скрин приложил] Неужели нет готового решения?
Читал документацию woocommerce, там в основном вывод всего листинга есть в виде shortcode.

- Вопрос задан более трёх лет назад
- 1866 просмотров