Added woocommerce_single_variation hook for variation data and cart button to reduce code in template file and used hooks. @claudiosmweb
Removed woocommerce_before_variations_button @Ninos. Use woocommerce_single_variation
This commit is contained in:
parent
1c8f123f1e
commit
808c01cb90
|
@ -1866,6 +1866,35 @@ if ( ! function_exists( 'woocommerce_output_auth_footer' ) ) {
|
|||
}
|
||||
}
|
||||
|
||||
if ( ! function_exists( 'woocommerce_single_variation' ) ) {
|
||||
|
||||
/**
|
||||
* Output placeholders for the single variation.
|
||||
*/
|
||||
function woocommerce_single_variation() {
|
||||
echo '<div class="single_variation"></div>';
|
||||
}
|
||||
}
|
||||
|
||||
if ( ! function_exists( 'woocommerce_single_variation_add_to_cart_button' ) ) {
|
||||
|
||||
/**
|
||||
* Output the add to cart button for variations.
|
||||
*/
|
||||
function woocommerce_single_variation_add_to_cart_button() {
|
||||
global $product;
|
||||
?>
|
||||
<div class="variations_button">
|
||||
<?php woocommerce_quantity_input( array( 'input_value' => isset( $_POST['quantity'] ) ? wc_stock_amount( $_POST['quantity'] ) : 1 ) ); ?>
|
||||
<button type="submit" class="single_add_to_cart_button button alt"><?php echo esc_html( $product->single_add_to_cart_text() ); ?></button>
|
||||
<input type="hidden" name="add-to-cart" value="<?php echo absint( $product->id ); ?>" />
|
||||
<input type="hidden" name="product_id" value="<?php echo absint( $product->id ); ?>" />
|
||||
<input type="hidden" name="variation_id" class="variation_id" value="" />
|
||||
</div>
|
||||
<?php
|
||||
}
|
||||
}
|
||||
|
||||
if ( ! function_exists( 'wc_dropdown_variation_attribute_options' ) ) {
|
||||
|
||||
/**
|
||||
|
|
|
@ -149,6 +149,8 @@ add_action( 'woocommerce_simple_add_to_cart', 'woocommerce_simple_add_to_cart',
|
|||
add_action( 'woocommerce_grouped_add_to_cart', 'woocommerce_grouped_add_to_cart', 30 );
|
||||
add_action( 'woocommerce_variable_add_to_cart', 'woocommerce_variable_add_to_cart', 30 );
|
||||
add_action( 'woocommerce_external_add_to_cart', 'woocommerce_external_add_to_cart', 30 );
|
||||
add_action( 'woocommerce_single_variation', 'woocommerce_single_variation', 10 );
|
||||
add_action( 'woocommerce_single_variation', 'woocommerce_single_variation_add_to_cart_button', 20 );
|
||||
|
||||
/**
|
||||
* Pagination after shop loops
|
||||
|
|
|
@ -6,19 +6,22 @@
|
|||
* @package WooCommerce/Templates
|
||||
* @version 2.4.0
|
||||
*/
|
||||
|
||||
if ( ! defined( 'ABSPATH' ) ) {
|
||||
exit;
|
||||
}
|
||||
|
||||
global $product, $post;
|
||||
global $product;
|
||||
|
||||
$attribute_keys = array_keys( $attributes );
|
||||
|
||||
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 ) ) ?>">
|
||||
<form class="variations_form cart" method="post" enctype='multipart/form-data' data-product_id="<?php echo absint( $product->id ); ?>" data-product_variations="<?php echo esc_attr( json_encode( $available_variations ) ) ?>">
|
||||
<?php do_action( 'woocommerce_before_variations_form' ); ?>
|
||||
|
||||
<?php if ( ! empty( $available_variations ) || false === $available_variations ) : ?>
|
||||
<?php if ( empty( $available_variations ) && false !== $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 ( $attributes as $attribute_name => $options ) : ?>
|
||||
|
@ -28,42 +31,39 @@ do_action( 'woocommerce_before_add_to_cart_form' ); ?>
|
|||
<?php
|
||||
$selected = isset( $_REQUEST[ 'attribute_' . sanitize_title( $attribute_name ) ] ) ? $_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 ? '<a class="reset_variations" href="#">' . __( 'Clear selection', 'woocommerce' ) . '</a>' : '';
|
||||
?>
|
||||
</td>
|
||||
</tr>
|
||||
<?php endforeach;?>
|
||||
<tr class="woocommerce-reset-row">
|
||||
<th> </th>
|
||||
<td><a class="reset_variations" href="#"><?php _e( 'Clear selection', 'woocommerce' ); ?></a></td>
|
||||
</tr>
|
||||
</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' ); ?>
|
||||
<?php
|
||||
/**
|
||||
* woocommerce_before_single_variation Hook
|
||||
*/
|
||||
do_action( 'woocommerce_before_single_variation' );
|
||||
|
||||
<div class="single_variation"></div>
|
||||
/**
|
||||
* 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' );
|
||||
|
||||
<?php do_action( 'woocommerce_before_variations_button' ); ?>
|
||||
<div class="variations_button">
|
||||
<?php woocommerce_quantity_input( array( 'input_value' => isset( $_POST['quantity'] ) ? wc_stock_amount( $_POST['quantity'] ) : 1 ) ); ?>
|
||||
<button type="submit" class="single_add_to_cart_button button alt"><?php echo esc_html( $product->single_add_to_cart_text() ); ?></button>
|
||||
</div>
|
||||
<?php do_action( 'woocommerce_after_variations_button' ); ?>
|
||||
|
||||
<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" class="variation_id" value="" />
|
||||
|
||||
<?php do_action( 'woocommerce_after_single_variation' ); ?>
|
||||
/**
|
||||
* woocommerce_after_single_variation Hook
|
||||
*/
|
||||
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; ?>
|
||||
|
||||
<?php do_action( 'woocommerce_after_variations_form' ); ?>
|
||||
|
|
Loading…
Reference in New Issue