对于我的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猫咪ID?
答案 0 :(得分:65)
WC产品可能属于无,一个或多个WC类别。假设您只想获得一个WC类别ID。
global $post;
$terms = get_the_terms( $post->ID, 'product_cat' );
foreach ($terms as $term) {
$product_cat_id = $term->term_id;
break;
}
请查看WooCommerce插件的“templates / single-product /”文件夹中的meta.php文件。
<?php echo $product->get_categories( ', ', '<span class="posted_in">' . _n( 'Category:', 'Categories:', sizeof( get_the_terms( $post->ID, 'product_cat' ) ), 'woocommerce' ) . ' ', '.</span>' ); ?>
答案 1 :(得分:4)
我从我的主题目录中的woocommerce文件夹中的content-single-popup.php中删除了这行代码。
global $product;
echo $product->get_categories( ', ', ' ' . _n( ' ', ' ', $cat_count, 'woocommerce' ) . ' ', ' ' );
由于我正在研究的主题已集成了woocommerce,这是我的解决方案。
答案 2 :(得分:3)
$product->get_categories()
从版本3.0开始被弃用!请改用wc_get_product_category_list
。
https://docs.woocommerce.com/wc-apidocs/function-wc_get_product_category_list.html
答案 3 :(得分:2)
谢谢你。我正在使用MyStile Theme,我需要在搜索结果页面中显示产品类别名称。我将此函数添加到我的子主题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
}
}
?>
答案 4 :(得分:0)
要将自定义类添加到 body 标记,您可以使用 body_class
钩子。
要在产品页面基于特定产品类别添加一个或更多类,您可以使用 Wordpress has_term
功能(检查产品是否属于该特定产品类别)。
为此,我创建了数组 $classes_to_add
,其中:
所以:
// adds a class to the body element based on the product category
add_filter( 'body_class', 'add_body_class_based_on_the_product_category' );
function add_body_class_based_on_the_product_category( $classes ) {
// only on the product page
if ( ! is_product() ) {
return $classes;
}
// create an array with the ids (or slugs) of the product categories and the respective class (or classes) to add
$classes_to_add = array(
30 => 'class-1',
'cat_slug' => 'class-2 class-3',
32 => 'class-4 class-5',
);
// if the product belongs to one of the product categories in the array it adds the respective class (or classes)
foreach ( $classes_to_add as $product_cat => $new_classes ) {
if ( has_term( $product_cat, 'product_cat', get_the_ID() ) ) {
$classes[] = $new_classes;
}
}
return $classes;
}
代码已经过测试并且可以工作。将它添加到您的活动主题的functions.php。
答案 5 :(得分:-1)
Invalidate