2013-03-08 17 views
20

W przypadku stron produktu toaletowego muszę dodać klasę do znacznika body, aby umożliwić wykonanie niestandardowej stylizacji. Oto funkcja, którą tworzę dla tego ...WooCommerce - pobierz kategorię strony produktu

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

... ale jak mogę uzyskać identyfikator kota WooCommerce?

Odpowiedz

52

Produkt WC może należeć do żadnej, jednej lub więcej kategorii WC. Przypuśćmy, że chcesz uzyskać tylko jeden identyfikator kategorii WC.

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

Proszę zajrzeć do pliku meta.php w „templates/pojedynczego produktu /” folderu wtyczki woocommerce.

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

Po prostu dodałem ten kod do "price.php" i podczas odwiedzania strony pojedynczego produktu wyświetlany jest następujący komunikat o błędzie: Ostrzeżenie: podano niepoprawny argument dla foreach(). Czy robię coś nie tak, czy ten kod jest niekompatybilny z aktualną wersją WC? – drake035

+0

Czy istnieje sposób, aby wykluczyć niektóre kategorie z tym? – JacobTheDev

+0

Pomogło mi to uzyskać wycinek produktu i użyć go do przekierowania do listy kategorii po zapisaniu nowego komentarza. To było moje pytanie, czy jest jakiejkolwiek pomocy. http://stackoverflow.com/questions/42014311/wordpress-get-the-category-returns-empty –

0

Dzięki Box. Używam motywu MyStile i muszę wyświetlić nazwę kategorii produktów na stronie wyników wyszukiwania. Dodałem tę funkcję do mojego motywu dziecięcego funkcje.php

Mam nadzieję, że pomaga innym.

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

Dosłownie wyblakły tej linii kodu z content-single-popup.php znajduje się w folderze woocommerce w moim katalogu motywu.

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

Ponieważ mój temat, nad którym pracuję, ma wbudowany woocommerce, to było moje rozwiązanie.

+0

Dziękuję, zwraca nazwę kategorii, jak uzyskać identyfikator kategorii, zamiast jej nazwy? – DigitCart

Powiązane problemy