woocommerce-product-variation-grid-table
Home / Woo-Commerce / WooCommerce Product Variations Grid or Table form with add to cart button

WooCommerce Product Variations Grid or Table form with add to cart button

WooCommerce Product Variations Grid or Table form with add to cart button.


Copy and Paste the code in your theme function.php

function find_valid_variations() {
    global $product;
 
    $variations = $product->get_available_variations();
    $attributes = $product->get_attributes();
    $new_variants = array();
 
    // Loop through all variations
    foreach( $variations as $variation ) {
 
        // Peruse the attributes.
 
        // 1. If both are explicitly set, this is a valid variation
        // 2. If one is not set, that means any, and we must 'create' the rest.
 
        $valid = true; // so far
        foreach( $attributes as $slug => $args ) {
            if( array_key_exists("attribute_$slug", $variation['attributes']) && !empty($variation['attributes']["attribute_$slug"]) ) {
                // Exists
 
            } else {
                // Not exists, create
                $valid = false; // it contains 'anys'
                // loop through all options for the 'ANY' attribute, and add each
                foreach( explode( '|', $attributes[$slug]['value']) as $attribute ) {
                    $attribute = trim( $attribute );
                    $new_variant = $variation;
                    $new_variant['attributes']["attribute_$slug"] = $attribute;
                    $new_variants[] = $new_variant;
                }
 
            }
        }
 
        // This contains ALL set attributes, and is itself a 'valid' variation.
        if( $valid )
            $new_variants[] = $variation;
 
    }
 
    return $new_variants;
}
?>
 <table class="variations variations-grid" cellspacing="0">
 <tbody>
 <?php
 foreach ($variations as $key => $value) {
 if( !$value['variation_is_visible'] ) continue;
 ?>
 <tr>
 <td>
 <?php foreach($value['attributes'] as $key => $val ) {
 $val = str_replace(array('-','_'), ' ', $val);
 printf( '<span class="attr attr-%s">%s</span>', $key, ucwords($val) );
 } ?>
 </td>
 <td>
 <?php echo $value['price_html'];?>
 </td>
 <td>
 <?php if( $value['is_in_stock'] ) { ?>
 <form class="cart" action="<?php echo esc_url( $product->add_to_cart_url() ); ?>" method="post" enctype='multipart/form-data'>
 <?php woocommerce_quantity_input(); ?>
 <?php
 if(!empty($value['attributes'])){
 foreach ($value['attributes'] as $attr_key => $attr_value) {
 ?>
 <input type="hidden" name="<?php echo $attr_key?>" value="<?php echo $attr_value?>">
 <?php
 }
 }
 ?>
 <button type="submit" class="single_add_to_cart_button btn btn-primary"><span class="glyphicon glyphicon-tag"></span> Add to cart</button>
 <input type="hidden" name="variation_id" value="<?php echo $value['variation_id']?>" />
 <input type="hidden" name="product_id" value="<?php echo esc_attr( $post->ID ); ?>" />
 <input type="hidden" name="add-to-cart" value="<?php echo esc_attr( $post->ID ); ?>" />
 </form>
 <?php } else { ?>
 <p class="stock out-of-stock"><?php _e( 'This product is currently out of stock and unavailable.', 'woocommerce' ); ?></p>
 <?php } ?>
 </td>
 </tr>
 <?php } ?>
 </tbody>
 </table>
 <?php
}
function find_valid_variations() {
    global $product;
 
    $variations = $product->get_available_variations();
    $attributes = $product->get_attributes();
    $new_variants = array();
 
    // Loop through all variations
    foreach( $variations as $variation ) {
 
        // Peruse the attributes.
 
        // 1. If both are explicitly set, this is a valid variation
        // 2. If one is not set, that means any, and we must 'create' the rest.
 
        $valid = true; // so far
        foreach( $attributes as $slug => $args ) {
            if( array_key_exists("attribute_$slug", $variation['attributes']) && !empty($variation['attributes']["attribute_$slug"]) ) {
                // Exists
 
            } else {
                // Not exists, create
                $valid = false; // it contains 'anys'
                // loop through all options for the 'ANY' attribute, and add each
                foreach( explode( '|', $attributes[$slug]['value']) as $attribute ) {
                    $attribute = trim( $attribute );
                    $new_variant = $variation;
                    $new_variant['attributes']["attribute_$slug"] = $attribute;
                    $new_variants[] = $new_variant;
                }
 
            }
        }
 
        // This contains ALL set attributes, and is itself a 'valid' variation.
        if( $valid )
            $new_variants[] = $variation;
 
    }
 
    return $new_variants;
}
[tblock anim=”bounceInUp” tcuscolor=”#00ff09″ title=”Example” tag=”h2″/] woocommerce-product-variation-grid-table

About Sushil_kumar

Check Also

aws

how to setting WordPress on Amazon EC2

Step 1: Create an AWS Account Step 2: Create an Instance To create a new …

Leave a Reply

Your email address will not be published. Required fields are marked *

0

December 10, 2016

Clear all