WooCommerce – получить категорию для страницы продукта

Для страниц моего WC-продукта мне нужно добавить класс в тег body, чтобы я мог выполнять некоторые пользовательские стили. Вот функция, которую я создаю для этого …

function my_add_woo_cat_class($classes) { $wooCatIdForThisProduct = "?????"; //help! // add 'class-name' to the $classes array $classes[] = 'my-woo-cat-id-' . $wooCatIdForThisProduct; // return the $classes array return $classes; } //If we're showing a WC product page if (is_product()) { // Add specific CSS class by filter add_filter('body_class','my_add_woo_cat_class'); } 

… но как мне получить идентификатор кошки WooCommerce?

Продукт WC может принадлежать ни к одной, ни к одной категории WC. Предположим, вы просто хотите получить один идентификатор категории WC.

 global $post; $terms = get_the_terms( $post->ID, 'product_cat' ); foreach ($terms as $term) { $product_cat_id = $term->term_id; break; } 

Посмотрите файл meta.php в папке «templates / single-product /» плагина WooCommerce.

 <?php echo $product->get_categories( ', ', '<span class="posted_in">' . _n( 'Category:', 'Categories:', sizeof( get_the_terms( $post->ID, 'product_cat' ) ), 'woocommerce' ) . ' ', '.</span>' ); ?> 

Я буквально разделил эту строку кода с content-single-popup.php, расположенной в папке woocommerce в моем каталоге тем.

 global $product; echo $product->get_categories( ', ', ' ' . _n( ' ', ' ', $cat_count, 'woocommerce' ) . ' ', ' ' ); 

Поскольку моя тема, над которой я работаю, интегрировала в нее woocommerce, это было мое решение.

Благодарственная коробка. Я использую тему MyStile, и мне нужно было отобразить название категории продукта на моей странице результатов поиска. Я добавил эту функцию к моей дочерней теме functions.php

Надеюсь, это поможет другим.

 /* Post Meta */ if (!function_exists( 'woo_post_meta')) { function woo_post_meta( ) { global $woo_options; global $post; $terms = get_the_terms( $post->ID, 'product_cat' ); foreach ($terms as $term) { $product_cat = $term->name; break; } ?> <aside class="post-meta"> <ul> <li class="post-category"> <?php the_category( ', ', $post->ID) ?> <?php echo $product_cat; ?> </li> <?php the_tags( '<li class="tags">', ', ', '</li>' ); ?> <?php if ( isset( $woo_options['woo_post_content'] ) && $woo_options['woo_post_content'] == 'excerpt' ) { ?> <li class="comments"><?php comments_popup_link( __( 'Leave a comment', 'woothemes' ), __( '1 Comment', 'woothemes' ), __( '% Comments', 'woothemes' ) ); ?></li> <?php } ?> <?php edit_post_link( __( 'Edit', 'woothemes' ), '<li class="edit">', '</li>' ); ?> </ul> </aside> <?php } } ?> в /* Post Meta */ if (!function_exists( 'woo_post_meta')) { function woo_post_meta( ) { global $woo_options; global $post; $terms = get_the_terms( $post->ID, 'product_cat' ); foreach ($terms as $term) { $product_cat = $term->name; break; } ?> <aside class="post-meta"> <ul> <li class="post-category"> <?php the_category( ', ', $post->ID) ?> <?php echo $product_cat; ?> </li> <?php the_tags( '<li class="tags">', ', ', '</li>' ); ?> <?php if ( isset( $woo_options['woo_post_content'] ) && $woo_options['woo_post_content'] == 'excerpt' ) { ?> <li class="comments"><?php comments_popup_link( __( 'Leave a comment', 'woothemes' ), __( '1 Comment', 'woothemes' ), __( '% Comments', 'woothemes' ) ); ?></li> <?php } ?> <?php edit_post_link( __( 'Edit', 'woothemes' ), '<li class="edit">', '</li>' ); ?> </ul> </aside> <?php } } ?>