Skip to content
Advertisement

Add product category in woocommerce archive/shop page

I’m trying to add the product category inside the product card in the woocommerce archive page. Right now it shows “Thumbnail” “Title” “Price” and “Add to cart button”.

I’m using this function which should work if the variable “product” is set to the current product displayed.

My Question: Is there a way to get the queried Product in this variable?

Any help is appreciated.

<?php 
// Hook after product title on archive page and run function "add_category()"
add_action('woocommerce_shop_loop_item_title','add_category');
    // Define function "add_category()"
    function add_category() {
        // set var "cardcategory"
        $cardcategory = $product->get_categories();
        // create wrapping div
        echo '<div class="category-carousel">';
        // Get  current category and change from plural to singular
        // echo singular inside <p> element
        if (strpos($cardcategory, 'Category_A_plural') !== false) {
            echo '<p class="Category_A_class">Category A singular</p>';
        }
        if (strpos($cardcategory, 'Category_B_plural') !== false) {
                echo '<p class="Category_B_class">Category B singular</p>';
        }
        // close wrapping div
        echo '</div>';
    }

Advertisement

Answer

<?php 
//Hook after product title on archive page
add_action('woocommerce_after_shop_loop_item_title','add_category');

function add_category() {
    global $product; // You need to add this.

    // set var "cardcategory"
    $cardcategory = $product->get_categories();
    // Show category and change from plural to singular
    echo '<div class="category-carousel">';

    if (strpos($cardcategory, 'Category_A_plural') !== false) {
        echo '<p class="Category_A_class">Category A singular</p>';
    }
    if (strpos($cardcategory, 'Category_B_plural') !== false) {
            echo '<p class="Category_B_class">Category A singular</p>';
    }
    echo '</div>';
}

You need to add the line global $product as shown above. $product is an instance of WC_Product, I believe Woocommerce uses WordPress’ the_post() functionality under the hood to set this variable but I’m not 100% sure.

User contributions licensed under: CC BY-SA
3 People found this is helpful
Advertisement