Add custom woocommerce “add to cart” button with display variation in dropdown & product quantity on single-product.php page template in woocommerce

add_action( 'woocommerce_before_add_to_cart_form', '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_variation_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_variation_attributes() as $attribute_name => $options ) : ?>
                        <tr>
                            <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', '<a class="reset_variations" href="#">' . __( '', 'woocommerce' ) . '</a>' ) : '';
                                ?>
                            </td>
                        </tr>
                    <?php endforeach;?>
                </tbody>
            </table>
            <div class="single_variation_wrap">
                <?php
                    do_action( 'woocommerce_before_single_variation' );
                    do_action( 'woocommerce_single_variation' );
                    do_action( 'woocommerce_after_single_variation' );
                ?>
            </div>
   
        <?php endif; ?>
   
        <?php do_action( 'woocommerce_after_variations_form' ); ?>
    </form>
       
    <?php } else {
       
    echo sprintf( '<a rel="nofollow" href="%s" data-quantity="%s" data-product_id="%s" data-product_sku="%s" class="%s">%s</a>',
            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() )
        );
   
    }
     
} ?>

0 Comments

Leave a Comment

istanbul medyummedyumizmir medyumankara medyumistanbul medyummedyumizmir medyumankara medyum
HacklinkHair Transplant istanbul
hacklink
istanbul evden eve nakliyat
hair transplant
istanbul anl?k haberler
extrabet
cratosroyalbet
casibom
romabet
romabet
romabet
casibom
casibom
marsbahis
holiganbet
casibom
https://deneme-bonuslarim-yeni.com/
deneme bonusu veren siteler
https://deneme-bonuslari-listesi.com/
deneme bonusu veren siteler
deneme bonusu veren siteler
deneme bonusu veren siteler
deneme bonusu veren siteler
Betpas
adana escort
esenyurt masaj salonubeylikdüzü masaj salonumasaj salonuesenyurt masaj salonubeylikdüzü masaj salonuba?ak?ehir masaj salonuavc?lar masaj salonumasaj salonuesenyurt masaj salonubeylikdüzü masaj salonuavc?lar masaj salonubahçe?ehir masaj salonu?irinevler masaj salonuesenyurt masaj salonumasaj salonuesenyurt masaj salonubeylikdüzü masaj salonuesenyurt masaj salonuesenyurt masaj salonuesenyurt escortesenyurt escortesenyurt escortesenyurt masaj salonuavc?lar masaj salonubeylikdüzü masaj salonumaltepe escortescort ?spartaescort fethiyeesenyurt masaj salonubeylikdüzü masaj salonumasaj salonuesenyurt masaj salonubeylikdüzü masaj salonuba?ak?ehir masaj salonuavc?lar masaj salonumasaj salonuesenyurt masaj salonubeylikdüzü masaj salonuavc?lar masaj salonubahçe?ehir masaj salonu?irinevler masaj salonuesenyurt masaj salonumasaj salonuesenyurt masaj salonubeylikdüzü masaj salonuesenyurt masaj salonuesenyurt masaj salonuesenyurt escortesenyurt escortesenyurt escortesenyurt masaj salonuavc?lar masaj salonubeylikdüzü masaj salonumaltepe escortescort ?spartaescort fethiye