WooCommerce - как отобразить категорию товара над товаром?

7 мар. 2013 г., 15:33:55
Просмотры: 94.4K
Голосов: 4

Я новичок в модификации 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'

но я не могу понять, как получить категорию для каждого товара.

Может кто-нибудь помочь? Или подсказать, где я могу найти ответ?

Любая помощь будет очень ценной, спасибо!

1
Комментарии

Почему этот вопрос не по теме, XD.....

Brethlosze Brethlosze
7 июн. 2016 г. 06:47:47
Все ответы на вопрос 2
5
15

Название товара добавляется через хук 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 );
10 мар. 2013 г. 14:56:55
Комментарии

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

user28546 user28546
19 мар. 2013 г. 00:48:45

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

helgatheviking helgatheviking
19 мар. 2013 г. 01:09:38

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

user28546 user28546
26 мар. 2013 г. 21:21:35

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

helgatheviking helgatheviking
27 мар. 2013 г. 10:52:56

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

codajoao codajoao
20 июн. 2015 г. 06:26:11
2

Вам понадобится функция 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>' ); ?>
10 мар. 2013 г. 14:29:41
Комментарии

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

Ewout Ewout
10 мар. 2013 г. 14:43:14

Мне пришлось использовать $_product->get_categories (с подчеркиванием в $_product), и это отлично сработало. Спасибо!

Peanuts Peanuts
9 февр. 2017 г. 15:19:17