Add pluggable function wrappers to inc/woocommerce.php
This commit is contained in:
parent
c75682937e
commit
140da01e60
|
@ -4,6 +4,8 @@
|
|||
*
|
||||
* @package understrap
|
||||
*/
|
||||
|
||||
|
||||
add_action( 'after_setup_theme', 'understrap_woocommerce_support' );
|
||||
if ( ! function_exists( 'understrap_woocommerce_support' ) ) {
|
||||
/**
|
||||
|
@ -22,6 +24,7 @@ if ( ! function_exists( 'understrap_woocommerce_support' ) ) {
|
|||
}
|
||||
}
|
||||
|
||||
|
||||
/**
|
||||
* First unhook the WooCommerce wrappers
|
||||
*/
|
||||
|
@ -54,6 +57,7 @@ function understrap_woocommerce_wrapper_end() {
|
|||
}
|
||||
}
|
||||
|
||||
|
||||
/**
|
||||
* Filter hook function monkey patching form classes
|
||||
* Author: Adriano Monecchi http://stackoverflow.com/a/36724593/307826
|
||||
|
@ -64,72 +68,74 @@ function understrap_woocommerce_wrapper_end() {
|
|||
*
|
||||
* @return mixed
|
||||
*/
|
||||
function understrap_wc_form_field_args( $args, $key, $value = null ) {
|
||||
// Start field type switch case.
|
||||
switch ( $args['type'] ) {
|
||||
/* Targets all select input type elements, except the country and state select input types */
|
||||
case 'select' :
|
||||
// Add a class to the field's html element wrapper - woocommerce
|
||||
// input types (fields) are often wrapped within a <p></p> tag.
|
||||
$args['class'][] = 'form-group';
|
||||
// Add a class to the form input itself.
|
||||
$args['input_class'] = array( 'form-control', 'input-lg' );
|
||||
$args['label_class'] = array( 'control-label' );
|
||||
$args['custom_attributes'] = array(
|
||||
'data-plugin' => 'select2',
|
||||
'data-allow-clear' => 'true',
|
||||
'aria-hidden' => 'true',
|
||||
// Add custom data attributes to the form input itself.
|
||||
);
|
||||
break;
|
||||
// By default WooCommerce will populate a select with the country names - $args
|
||||
// defined for this specific input type targets only the country select element.
|
||||
case 'country' :
|
||||
$args['class'][] = 'form-group single-country';
|
||||
$args['label_class'] = array( 'control-label' );
|
||||
break;
|
||||
// By default WooCommerce will populate a select with state names - $args defined
|
||||
// for this specific input type targets only the country select element.
|
||||
case 'state' :
|
||||
// Add class to the field's html element wrapper.
|
||||
$args['class'][] = 'form-group';
|
||||
// add class to the form input itself.
|
||||
$args['input_class'] = array( '', 'input-lg' );
|
||||
$args['label_class'] = array( 'control-label' );
|
||||
$args['custom_attributes'] = array(
|
||||
'data-plugin' => 'select2',
|
||||
'data-allow-clear' => 'true',
|
||||
'aria-hidden' => 'true',
|
||||
);
|
||||
break;
|
||||
case 'password' :
|
||||
case 'text' :
|
||||
case 'email' :
|
||||
case 'tel' :
|
||||
case 'number' :
|
||||
$args['class'][] = 'form-group';
|
||||
$args['input_class'] = array( 'form-control', 'input-lg' );
|
||||
$args['label_class'] = array( 'control-label' );
|
||||
break;
|
||||
case 'textarea' :
|
||||
$args['input_class'] = array( 'form-control', 'input-lg' );
|
||||
$args['label_class'] = array( 'control-label' );
|
||||
break;
|
||||
case 'checkbox' :
|
||||
$args['label_class'] = array( 'custom-control custom-checkbox' );
|
||||
$args['input_class'] = array( 'custom-control-input', 'input-lg' );
|
||||
break;
|
||||
case 'radio' :
|
||||
$args['label_class'] = array( 'custom-control custom-radio' );
|
||||
$args['input_class'] = array( 'custom-control-input', 'input-lg' );
|
||||
break;
|
||||
default :
|
||||
$args['class'][] = 'form-group';
|
||||
$args['input_class'] = array( 'form-control', 'input-lg' );
|
||||
$args['label_class'] = array( 'control-label' );
|
||||
break;
|
||||
} // end switch ($args).
|
||||
return $args;
|
||||
if ( ! function_exists ( 'understrap_wc_form_field_args' ) ) {
|
||||
function understrap_wc_form_field_args( $args, $key, $value = null ) {
|
||||
// Start field type switch case.
|
||||
switch ( $args['type'] ) {
|
||||
/* Targets all select input type elements, except the country and state select input types */
|
||||
case 'select' :
|
||||
// Add a class to the field's html element wrapper - woocommerce
|
||||
// input types (fields) are often wrapped within a <p></p> tag.
|
||||
$args['class'][] = 'form-group';
|
||||
// Add a class to the form input itself.
|
||||
$args['input_class'] = array( 'form-control', 'input-lg' );
|
||||
$args['label_class'] = array( 'control-label' );
|
||||
$args['custom_attributes'] = array(
|
||||
'data-plugin' => 'select2',
|
||||
'data-allow-clear' => 'true',
|
||||
'aria-hidden' => 'true',
|
||||
// Add custom data attributes to the form input itself.
|
||||
);
|
||||
break;
|
||||
// By default WooCommerce will populate a select with the country names - $args
|
||||
// defined for this specific input type targets only the country select element.
|
||||
case 'country' :
|
||||
$args['class'][] = 'form-group single-country';
|
||||
$args['label_class'] = array( 'control-label' );
|
||||
break;
|
||||
// By default WooCommerce will populate a select with state names - $args defined
|
||||
// for this specific input type targets only the country select element.
|
||||
case 'state' :
|
||||
// Add class to the field's html element wrapper.
|
||||
$args['class'][] = 'form-group';
|
||||
// add class to the form input itself.
|
||||
$args['input_class'] = array( '', 'input-lg' );
|
||||
$args['label_class'] = array( 'control-label' );
|
||||
$args['custom_attributes'] = array(
|
||||
'data-plugin' => 'select2',
|
||||
'data-allow-clear' => 'true',
|
||||
'aria-hidden' => 'true',
|
||||
);
|
||||
break;
|
||||
case 'password' :
|
||||
case 'text' :
|
||||
case 'email' :
|
||||
case 'tel' :
|
||||
case 'number' :
|
||||
$args['class'][] = 'form-group';
|
||||
$args['input_class'] = array( 'form-control', 'input-lg' );
|
||||
$args['label_class'] = array( 'control-label' );
|
||||
break;
|
||||
case 'textarea' :
|
||||
$args['input_class'] = array( 'form-control', 'input-lg' );
|
||||
$args['label_class'] = array( 'control-label' );
|
||||
break;
|
||||
case 'checkbox' :
|
||||
$args['label_class'] = array( 'custom-control custom-checkbox' );
|
||||
$args['input_class'] = array( 'custom-control-input', 'input-lg' );
|
||||
break;
|
||||
case 'radio' :
|
||||
$args['label_class'] = array( 'custom-control custom-radio' );
|
||||
$args['input_class'] = array( 'custom-control-input', 'input-lg' );
|
||||
break;
|
||||
default :
|
||||
$args['class'][] = 'form-group';
|
||||
$args['input_class'] = array( 'form-control', 'input-lg' );
|
||||
$args['label_class'] = array( 'control-label' );
|
||||
break;
|
||||
} // end switch ($args).
|
||||
return $args;
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
|
@ -137,7 +143,10 @@ function understrap_wc_form_field_args( $args, $key, $value = null ) {
|
|||
* Change loop add-to-cart button class to Bootstrap
|
||||
*/
|
||||
add_filter( 'woocommerce_loop_add_to_cart_args', 'understrap_woocommerce_add_to_cart_args', 10, 2 );
|
||||
function understrap_woocommerce_add_to_cart_args( $args, $product ) {
|
||||
$args['class'] = str_replace('button','btn btn-outline-primary', 'button');
|
||||
return $args;
|
||||
|
||||
if ( ! function_exists ( 'understrap_woocommerce_add_to_cart_args' ) ) {
|
||||
function understrap_woocommerce_add_to_cart_args( $args, $product ) {
|
||||
$args['class'] = str_replace('button','btn btn-outline-primary', 'button');
|
||||
return $args;
|
||||
}
|
||||
}
|
Reference in New Issue