Taj Khan
Taj Khan

Reputation: 589

How to show some few attributes on woocommerce category page?

I want to show two of many attributes of my products on category pages namely heating capacity and cooling capacity as i am making an online store in woocommerce and i am working with my custom theme. it is not a variation or something it's just a normal attribute with text which i would like to show something like this as you can see the heating and cooling system listed on the category page itself i tried the code

if (!function_exists('shop_attributes_in_loop')) {
function shop_attributes_in_loop(){
    global $product;
        $attributes = $product->get_attributes();
        if(!empty($attributes)){
            $attribute_single = array_keys($attributes);
            $myArray = array();
        echo '<div class="product_attributes">';
            foreach ($attribute_single as $attribute => $value) {
                $myArray[] = ucfirst($value);
            }
        echo implode(', ', $myArray).'</div>';
        }
    }
}
add_action('woocommerce_after_shop_loop_item', 'shop_attributes_in_loop');

but it shows something wierd like Placement-of-outdoor-unit, Installation, Pa_model-no-indoor, Pa_model-no-outdoor etc.. can anyone help me.. enter image description here

Upvotes: 0

Views: 3986

Answers (2)

Taj Khan
Taj Khan

Reputation: 589

I actually found out how its to be done :)

add_action( 'woocommerce_after_shop_loop_item', 'custom_display_post_meta', 9 );

function custom_display_post_meta() {
   global $product;
   $attr = array('pa_cooling-capacity-watts', 'pa_heating-capacity-watts');
   foreach ( $attr as $attribute ) {
   $values = wc_get_product_terms( $product->id, $attribute, array( 'fields' => 'names' ) );
    echo apply_filters( 'woocommerce_attribute', wpautop( wptexturize( implode( ', ', $values ) ) ), $attribute, $values );
}
}

Upvotes: 0

You can use this snippet for getting custom field value at archive / category page:

add_action( 'woocommerce_after_shop_loop_item', 'custom_display_post_meta', 9 );

function custom_display_post_meta() {
   global $product;

   $heating_capacity = get_post_meta( $product->id, 'heating_capacity', true );
   $cooling_capacity = get_post_meta( $product->id, 'cooling_capacity', true );

   echo $heating_capacity;
   echo $cooling_capacity;
}

you can read this article as reference: https://www.skyverge.com/blog/add-information-to-woocommerce-shop-page/

Upvotes: 1

Related Questions