diff options
| author | Max | 2018-10-15 23:46:42 +0200 |
|---|---|---|
| committer | Max | 2018-10-15 23:46:42 +0200 |
| commit | 00c9709fd9763542e848f6278db8ba26af5c9886 (patch) | |
| tree | 92cb1c1ee4c467118e1e5a4c7e233d3feac6efa8 /inc/woocommerce.php | |
| download | fuselkoenig_de-00c9709fd9763542e848f6278db8ba26af5c9886.tar.gz | |
Initial commit.
Diffstat (limited to 'inc/woocommerce.php')
| -rw-r--r-- | inc/woocommerce.php | 140 |
1 files changed, 140 insertions, 0 deletions
diff --git a/inc/woocommerce.php b/inc/woocommerce.php new file mode 100644 index 0000000..3cd8e9b --- /dev/null +++ b/inc/woocommerce.php @@ -0,0 +1,140 @@ +<?php +/** + * Add WooCommerce support + * + * @package understrap + */ + +if ( ! defined( 'ABSPATH' ) ) { + exit; // Exit if accessed directly. +} + +add_action( 'after_setup_theme', 'understrap_woocommerce_support' ); +if ( ! function_exists( 'understrap_woocommerce_support' ) ) { + /** + * Declares WooCommerce theme support. + */ + function understrap_woocommerce_support() { + add_theme_support( 'woocommerce' ); + + // Add New Woocommerce 3.0.0 Product Gallery support + add_theme_support( 'wc-product-gallery-lightbox' ); + add_theme_support( 'wc-product-gallery-zoom' ); + add_theme_support( 'wc-product-gallery-slider' ); + + // hook in and customizer form fields. + add_filter( 'woocommerce_form_field_args', 'understrap_wc_form_field_args', 10, 3 ); + } +} + +/** +* First unhook the WooCommerce wrappers +*/ +remove_action( 'woocommerce_before_main_content', 'woocommerce_output_content_wrapper', 10); +remove_action( 'woocommerce_after_main_content', 'woocommerce_output_content_wrapper_end', 10); + +/** +* Then hook in your own functions to display the wrappers your theme requires +*/ +add_action('woocommerce_before_main_content', 'understrap_woocommerce_wrapper_start', 10); +add_action('woocommerce_after_main_content', 'understrap_woocommerce_wrapper_end', 10); +if ( ! function_exists( 'understrap_woocommerce_wrapper_start' ) ) { + function understrap_woocommerce_wrapper_start() { + $container = get_theme_mod( 'understrap_container_type' ); + echo '<div class="wrapper" id="woocommerce-wrapper">'; + echo '<div class="' . esc_attr( $container ) . '" id="content" tabindex="-1">'; + echo '<div class="row">'; + get_template_part( 'global-templates/left-sidebar-check' ); + echo '<main class="site-main" id="main">'; + } +} +if ( ! function_exists( 'understrap_woocommerce_wrapper_end' ) ) { +function understrap_woocommerce_wrapper_end() { + echo '</main><!-- #main -->'; + get_template_part( 'global-templates/right-sidebar-check' ); + echo '</div><!-- .row -->'; + echo '</div><!-- Container end -->'; + echo '</div><!-- Wrapper end -->'; + } +} + + +/** + * Filter hook function monkey patching form classes + * Author: Adriano Monecchi http://stackoverflow.com/a/36724593/307826 + * + * @param string $args Form attributes. + * @param string $key Not in use. + * @param null $value Not in use. + * + * @return mixed + */ +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; + } +}
\ No newline at end of file |
