• Hi Woo-Guru’s,
    I have my Variables set for my items.
    “Small and Large”
    My shop page has an add to cart button, but products with Variables, it changes to a “Choose an Option” button.
    Clicking on Choose an Option simply takes you to the product page, where you actually choose Small or Large.
    *** WHAT I WANT TO DO…***
    Get the 2 Variables on the Main Shop page under each item, where they can select that variable and still hit add to cart, without having to go into the main product page.
    ————–
    Thanks in advance,
    – Spank

Viewing 1 replies (of 1 total)
  • // Display variations dropdowns on shop page for variable products, Paste this in your fulctions.php file or you can follow this link :https://www.remicorson.com/display-woocommerce-product-variations-dropdown-on-the-shop-page/

    add_filter( ‘woocommerce_loop_add_to_cart_link’, ‘woo_display_variation_dropdown_on_shop_page’ );

    function woo_display_variation_dropdown_on_shop_page() {

    global $product;
    if( $product->is_type( ‘variable’ )) {

    $attribute_keys = array_keys( $product->get_attributes() );
    ?>

    <form class=”variations_form cart” method=”post” enctype=’multipart/form-data’ data-product_id=”<?php echo absint( $product->id ); ?>” data-product_variations=”<?php echo htmlspecialchars( json_encode( $product->get_available_variations() ) ) ?>”>
    <?php do_action( ‘woocommerce_before_variations_form’ ); ?>

    <?php if ( empty( $product->get_available_variations() ) && false !== $product->get_available_variations() ) : ?>
    <p class=”stock out-of-stock”><?php _e( ‘This product is currently out of stock and unavailable.’, ‘woocommerce’ ); ?></p>
    <?php else : ?>
    <table class=”variations” cellspacing=”0″>
    <tbody>
    <?php foreach ( $product->get_attributes() as $attribute_name => $options ) : ?>
    <tr>
    <td class=”label”><label for=”<?php echo sanitize_title( $attribute_name ); ?>”><?php echo wc_attribute_label( $attribute_name ); ?></label></td>
    <td class=”value”>
    <?php
    $selected = isset( $_REQUEST[ ‘attribute_’ . sanitize_title( $attribute_name ) ] ) ? wc_clean( urldecode( $_REQUEST[ ‘attribute_’ . sanitize_title( $attribute_name ) ] ) ) : $product->get_variation_default_attribute( $attribute_name );
    wc_dropdown_variation_attribute_options( array( ‘options’ => $options, ‘attribute’ => $attribute_name, ‘product’ => $product, ‘selected’ => $selected ) );
    echo end( $attribute_keys ) === $attribute_name ? apply_filters( ‘woocommerce_reset_variations_link’, ‘‘ . __( ‘Clear’, ‘woocommerce’ ) . ‘‘ ) : ”;
    ?>
    </td>
    </tr>
    <?php endforeach;?>
    </tbody>
    </table>

    <?php do_action( ‘woocommerce_before_add_to_cart_button’ ); ?>

    <div class=”single_variation_wrap”>
    <?php
    /**
    * woocommerce_before_single_variation Hook.
    */
    do_action( ‘woocommerce_before_single_variation’ );

    /**
    * woocommerce_single_variation hook. Used to output the cart button and placeholder for variation data.
    * @since 2.4.0
    * @hooked woocommerce_single_variation – 10 Empty div for variation data.
    * @hooked woocommerce_single_variation_add_to_cart_button – 20 Qty and cart button.
    */
    do_action( ‘woocommerce_single_variation’ );

    /**
    * woocommerce_after_single_variation Hook.
    */
    do_action( ‘woocommerce_after_single_variation’ );
    ?>
    </div>

    <?php do_action( ‘woocommerce_after_add_to_cart_button’ ); ?>
    <?php endif; ?>

    <?php do_action( ‘woocommerce_after_variations_form’ ); ?>
    </form>

    <?php } else {

    echo sprintf( ‘%s‘,
    esc_url( $product->add_to_cart_url() ),
    esc_attr( isset( $quantity ) ? $quantity : 1 ),
    esc_attr( $product->id ),
    esc_attr( $product->get_sku() ),
    esc_attr( isset( $class ) ? $class : ‘button’ ),
    esc_html( $product->add_to_cart_text() )
    );

    }

    }

Viewing 1 replies (of 1 total)
  • The topic ‘How to choose a Variable from Shop page without going into Product page?’ is closed to new replies.