• I’m running the Headway theme with Woocommerce. Now that I’ve updated to the newest version of WordPress, none of my variable products “add to cart” buttons are appearing.

    You can see it here, for example: https://printablewisdomdesign.com/product/goodnight-little-one-3-color-choices/

    I navigated to my public_html/wp-content/plugins/woocommerce/templates/single-product/add-to-cart/variable.php file and this is the code:

    <?php
    /**
     * Variable product add to cart
     *
     * @author 		WooThemes
     * @package 	WooCommerce/Templates
     * @version     2.1.0
     */
    
    if ( ! defined( 'ABSPATH' ) ) exit; // Exit if accessed directly
    
    global $woocommerce, $product, $post;
    ?>
    
    <?php do_action( 'woocommerce_before_add_to_cart_form' ); ?>
    
    <form class="variations_form cart" method="post" enctype='multipart/form-data' data-product_id="<?php echo $post->ID; ?>" data-product_variations="<?php echo esc_attr( json_encode( $available_variations ) ) ?>">
    	<?php if ( ! empty( $available_variations ) ) : ?>
    		<table class="variations" cellspacing="0">
    			<tbody>
    				<?php $loop = 0; foreach ( $attributes as $name => $options ) : $loop++; ?>
    					<tr>
    						<td class="label"><label for="<?php echo sanitize_title($name); ?>"><?php echo wc_attribute_label( $name ); ?></label></td>
    						<td class="value"><select id="<?php echo esc_attr( sanitize_title( $name ) ); ?>" name="attribute_<?php echo sanitize_title( $name ); ?>">
    							<option value=""><?php echo __( 'Choose an option', 'woocommerce' ) ?>&hellip;</option>
    							<?php
    								if ( is_array( $options ) ) {
    
    									if ( isset( $_REQUEST[ 'attribute_' . sanitize_title( $name ) ] ) ) {
    										$selected_value = $_REQUEST[ 'attribute_' . sanitize_title( $name ) ];
    									} elseif ( isset( $selected_attributes[ sanitize_title( $name ) ] ) ) {
    										$selected_value = $selected_attributes[ sanitize_title( $name ) ];
    									} else {
    										$selected_value = '';
    									}
    
    									// Get terms if this is a taxonomy - ordered
    									if ( taxonomy_exists( $name ) ) {
    
    										$orderby = wc_attribute_orderby( $name );
    
    										switch ( $orderby ) {
    											case 'name' :
    												$args = array( 'orderby' => 'name', 'hide_empty' => false, 'menu_order' => false );
    											break;
    											case 'id' :
    												$args = array( 'orderby' => 'id', 'order' => 'ASC', 'menu_order' => false, 'hide_empty' => false );
    											break;
    											case 'menu_order' :
    												$args = array( 'menu_order' => 'ASC', 'hide_empty' => false );
    											break;
    										}
    
    										$terms = get_terms( $name, $args );
    
    										foreach ( $terms as $term ) {
    											if ( ! in_array( $term->slug, $options ) )
    												continue;
    
    											echo '<option value="' . esc_attr( $term->slug ) . '" ' . selected( sanitize_title( $selected_value ), sanitize_title( $term->slug ), false ) . '>' . apply_filters( 'woocommerce_variation_option_name', $term->name ) . '</option>';
    										}
    									} else {
    
    										foreach ( $options as $option ) {
    											echo '<option value="' . esc_attr( sanitize_title( $option ) ) . '" ' . selected( sanitize_title( $selected_value ), sanitize_title( $option ), false ) . '>' . esc_html( apply_filters( 'woocommerce_variation_option_name', $option ) ) . '</option>';
    										}
    
    									}
    								}
    							?>
    						</select> <?php
    							if ( sizeof($attributes) == $loop )
    								echo '<a class="reset_variations" href="#reset">' . __( 'Clear selection', 'woocommerce' ) . '</a>';
    						?></td>
    					</tr>
    		        <?php endforeach;?>
    			</tbody>
    		</table>
    
    		<?php do_action( 'woocommerce_before_add_to_cart_button' ); ?>
    
    		<div class="single_variation_wrap" style="display:none;">
    			<?php do_action( 'woocommerce_before_single_variation' ); ?>
    
    			<div class="single_variation"></div>
    
    			<div class="variations_button">
    				<?php woocommerce_quantity_input(); ?>
    				<button type="submit" class="single_add_to_cart_button button alt"><?php echo $product->single_add_to_cart_text(); ?></button>
    			</div>
    
    			<input type="hidden" name="add-to-cart" value="<?php echo $product->id; ?>" />
    			<input type="hidden" name="product_id" value="<?php echo esc_attr( $post->ID ); ?>" />
    			<input type="hidden" name="variation_id" value="" />
    
    			<?php do_action( 'woocommerce_after_single_variation' ); ?>
    		</div>
    
    		<?php do_action( 'woocommerce_after_add_to_cart_button' ); ?>
    
    	<?php else : ?>
    
    		<p class="stock out-of-stock"><?php _e( 'This product is currently out of stock and unavailable.', 'woocommerce' ); ?></p>
    
    	<?php endif; ?>
    
    </form>
    
    <?php do_action( 'woocommerce_after_add_to_cart_form' ); ?>

    Any help you can offer would be great!

Viewing 3 replies - 1 through 3 (of 3 total)
  • Thread Starter ashley.printablewisdom

    (@ashleyprintablewisdom)

    Any ideas?

    Hi,
    Have you enter the price per product in the admin tab “Variation”?

    I’m having a similar problem. Not sure if it’s the same as you but at random variable products display the “Out of stock” message with no add to cart button as you’ve described.

    The only thing I’ve been able to do that sortof helps is to go to the Woocommerce settings page and then resave the settings. Somehow this fixes things for a little while until they break again ??

    I’m not sure if the issue still occurs in Woocommerce 2.2.7 (I’m currently at 2.1.12 due to needing to migrate templates etc. to ensure compatibility with my website).

    I also have an open stackoverflow question about this.

Viewing 3 replies - 1 through 3 (of 3 total)
  • The topic ‘Woocommerce – Add to cart for variable products not appearing’ is closed to new replies.