2013-03-08 35 views
20

Đối với các trang sản phẩm WC của tôi, tôi cần phải thêm một lớp vào thẻ body để có thể thực hiện một số kiểu dáng tùy chỉnh. Đây là chức năng tôi đang tạo cho việc này ...WooCommerce - lấy danh mục cho trang sản phẩm

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'); 
} 

... nhưng làm cách nào để nhận ID mèo WooCommerce?

Trả lời

52

Sản phẩm WC có thể thuộc về không, một hoặc nhiều loại WC. Giả sử bạn chỉ muốn có một id danh mục WC.

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

Vui lòng xem tập tin meta.php trong thư mục "templates/single-product /" của plugin WooCommerce.

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

Chỉ cần thêm mã này vào "price.php" và khi truy cập vào trang sản phẩm đơn lẻ, tôi nhận được thông báo lỗi này: Cảnh báo: Đối số không hợp lệ được cung cấp cho foreach(). Tôi có làm gì sai hoặc mã này không tương thích với phiên bản WC hiện tại không? – drake035

+0

Có cách nào để loại trừ một số danh mục nhất định không? – JacobTheDev

+0

Điều này đã giúp tôi có được sản phẩm sên và sử dụng nó để chuyển hướng đến danh sách danh mục sau khi lưu một nhận xét mới. Đây là câu hỏi của tôi nếu có bất kỳ sự giúp đỡ nào. http://stackoverflow.com/questions/42014311/wordpress-get-the-category-returns-empty –

0

Hộp cảm ơn. Tôi đang sử dụng MyStile Theme và tôi cần hiển thị tên danh mục sản phẩm trong trang kết quả tìm kiếm của mình. Tôi đã thêm chức năng này vào chủ đề con của tôi functions.php

Hy vọng nó sẽ giúp người khác.

/* 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 
    } 
} 


?> 
2

Tôi theo nghĩa đen vạch ra dòng mã này từ content-single-popup.php nằm trong thư mục woocommerce trong thư mục chủ đề của tôi.

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

Vì chủ đề mà tôi đang làm việc có tích hợp thương mại điện tử trong đó, đây là giải pháp của tôi.

+0

Cảm ơn bạn, nó trả về tên danh mục, làm thế nào để có được id danh mục, thay vì tên của nó? – DigitCart

Các vấn đề liên quan