WooCommerce - как отобразить категорию товара над товаром?
Я новичок в модификации WooCommerce. Надеюсь, кто-то сможет помочь мне с проблемой, с которой я столкнулся при попытке внести небольшие изменения в плагин по просьбе клиента.
Я пытаюсь изменить WooCommerce, чтобы отображать название категории для каждого товара. Мне нужно, чтобы название категории показывалось над изображением товара на главной странице магазина. (вид, где на экране отображается сразу много товаров)
Я искал решение, но не могу понять, как вызвать product->category, чтобы получить название категории для каждого отображаемого товара.
В файлах WooCommerce я нашел content-product.php
(в templates/content-product.php)
и я хотел бы добавить категорию для каждого товара, модифицируя этот хук:
do_action( 'woocommerce_before_shop_loop_item_title' );
Я понимаю, что могу добавить функцию в functions.php моей темы, чтобы внедрить новый код в 'woocommerce_before_shop_loop_item_title'
но я не могу понять, как получить категорию для каждого товара.
Может кто-нибудь помочь? Или подсказать, где я могу найти ответ?
Любая помощь будет очень ценной, спасибо!

Название товара добавляется через хук woocommerce_single_product_summary
с приоритетом 5, поэтому вам нужно добавить свой код на тот же хук, но с более низким (ранним) приоритетом. Этот код следует добавить в файл functions.php вашей темы. Предполагаю, что под "категорией" вы имеете в виду категорию товара WooCommerce, поэтому этот код вернет первую категорию и выведет ее перед названием товара:
function wpa89819_wc_single_product(){
$product_cats = wp_get_post_terms( get_the_ID(), 'product_cat' );
if ( $product_cats && ! is_wp_error ( $product_cats ) ){
$single_cat = array_shift( $product_cats ); ?>
<h2 itemprop="name" class="product_category_title"><span><?php echo $single_cat->name; ?></span></h2>
<?php }
}
add_action( 'woocommerce_single_product_summary', 'wpa89819_wc_single_product', 2 );

Большое спасибо! Ваше решение отлично сработало, и да, вы правильно угадали, что я имел в виду категорию товаров WooCommerce, а не категорию страниц WordPress.

Отлично! Если это сработало и решило ваш вопрос, не могли бы вы отметить его как ответ?

Привет, helgatheviking, еще раз спасибо за помощь. Извините, я новичок и не понимаю, как отметить это как отвеченное?!?

Рядом со всеми ответами должна быть галочка. При нажатии на нее она станет зеленой, обозначая, что это правильный ответ. Выбор ответов поддерживает ваш процент, поэтому люди с большей вероятностью помогут вам в будущем. Пожалуйста, прочитайте раздел "как задавать вопросы" в FAQ

Вам понадобится функция get_categories, которая принимает следующие аргументы:
get_categories( $separator, $before, $after )
В самом простом виде (предполагая только одну категорию для товара), просто добавьте <?php echo $product->get_categories(); ?>
в ваш файл content-product.php (строка 53).
Если у вас несколько категорий, можно сделать как на странице отдельного товара:
<?php echo $product->get_categories( ', ', '<span class="posted_in">' . _n( 'Категория:', 'Категории:', sizeof( get_the_terms( $post->ID, 'product_cat' ) ), 'woocommerce' ) . ' ', '.</span>' ); ?>

обратите внимание, что если вы хотите отобразить заголовок над миниатюрой, его следует разместить в строке 43, но это усложняет ситуацию, так как любые теги 'распродажа' и т.п. могут остаться на месте (вместо перемещения вместе с миниатюрой).
