Created
March 17, 2017 14:22
-
-
Save moskalukigor/57dc9529d8a3fb9f6d2458de461d100d to your computer and use it in GitHub Desktop.
Custom Variable Subscription (Radio Button)
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
<?php | |
/** | |
* Variable subscription product add to cart | |
* | |
* @author Prospress | |
* @package WooCommerce-Subscriptions/Templates | |
* @version 2.0.9 | |
*/ | |
if ( ! defined( 'ABSPATH' ) ) { | |
exit; | |
} | |
if ( ! function_exists( 'print_attribute_radio' ) ) { | |
function print_attribute_radio( $checked_value, $value, $label, $name ) { | |
// This handles < 2.4.0 bw compatibility where text attributes were not sanitized. | |
$checked = sanitize_title( $checked_value ) === $checked_value ? checked( $checked_value, sanitize_title( $value ), false ) : checked( $checked_value, $value, false ); | |
$input_name = 'attribute_' . esc_attr( $name ) ; | |
$esc_value = esc_attr( $value ); | |
$id = esc_attr( $name . '_v_' . $value ); | |
$filtered_label = apply_filters( 'woocommerce_variation_option_name', $label ); | |
printf( '<div><input type="radio" name="%1$s" value="%2$s" id="%3$s" %4$s><label for="%3$s"> %5$s</label></div>', $input_name, $esc_value, $id, $checked, $filtered_label ); | |
} | |
} | |
global $product; | |
$attribute_keys = array_keys( $attributes ); | |
$user_id = get_current_user_id(); | |
do_action( 'woocommerce_before_add_to_cart_form' ); ?> | |
<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 ) : ?> | |
<p class="stock out-of-stock"><?php esc_html_e( 'This product is currently out of stock and unavailable.', 'woocommerce-subscriptions' ); ?></p> | |
<?php else : ?> | |
<?php if ( ! $product->is_purchasable() && 0 != $user_id && 'no' != wcs_get_product_limitation( $product ) && wcs_is_product_limited_for_user( $product, $user_id ) ) : ?> | |
<?php $resubscribe_link = wcs_get_users_resubscribe_link_for_product( $product->id ); ?> | |
<?php if ( ! empty( $resubscribe_link ) && 'any' == wcs_get_product_limitation( $product ) && wcs_user_has_subscription( $user_id, $product->id, wcs_get_product_limitation( $product ) ) && ! wcs_user_has_subscription( $user_id, $product->id, 'active' ) && ! wcs_user_has_subscription( $user_id, $product->id, 'on-hold' ) ) : // customer has an inactive subscription, maybe offer the renewal button ?> | |
<a href="<?php echo esc_url( $resubscribe_link ); ?>" class="button product-resubscribe-link"><?php esc_html_e( 'Resubscribe', 'woocommerce-subscriptions' ); ?></a> | |
<?php else : ?> | |
<p class="limited-subscription-notice notice"><?php esc_html_e( 'You have an active subscription to this product already.', 'woocommerce-subscriptions' ); ?></p> | |
<?php endif; ?> | |
<?php else : ?> | |
<table class="variations" cellspacing="0″> | |
<tbody> | |
<?php foreach ( $attributes as $name => $options ) : ?> | |
<tr> | |
<td class="label"><label for="<?php echo sanitize_title( $name ); ?>"><?php echo wc_attribute_label( $name ); ?></label></td> | |
<?php | |
$sanitized_name = sanitize_title( $name ); | |
if ( isset( $_REQUEST[ 'attribute_' . $sanitized_name ] ) ) { | |
$checked_value = $_REQUEST[ 'attribute_' . $sanitized_name ]; | |
} elseif ( isset( $selected_attributes[ $sanitized_name ] ) ) { | |
$checked_value = $selected_attributes[ $sanitized_name ]; | |
} else { | |
$checked_value = ''; | |
} | |
?> | |
<td class="value"> | |
<?php | |
if ( ! empty( $options ) ) { | |
if ( taxonomy_exists( $name ) ) { | |
// Get terms if this is a taxonomy – ordered. We need the names too. | |
$terms = wc_get_product_terms( $product->id, $name, array( 'fields' => 'all' ) ); | |
foreach ( $terms as $term ) { | |
if ( ! in_array( $term->slug, $options ) ) { | |
continue; | |
} | |
print_attribute_radio( $checked_value, $term->slug, $term->name, $sanitized_name ); | |
} | |
} else { | |
foreach ( $options as $option ) { | |
print_attribute_radio( $checked_value, $option, $option, $sanitized_name ); | |
} | |
} | |
} | |
echo end( $attribute_keys ) === $name ? apply_filters( 'woocommerce_reset_variations_link', '<a class="reset_variations" href="#">' . __( 'Clear', '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 | |
/** | |
* 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 endif; ?> | |
<?php do_action( 'woocommerce_after_variations_form' ); ?> | |
</form> | |
<?php do_action( 'woocommerce_after_add_to_cart_form' ); ?> |
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment