summaryrefslogtreecommitdiff
path: root/inc/woocommerce.php
diff options
context:
space:
mode:
authorMax2018-10-15 23:46:42 +0200
committerMax2018-10-15 23:46:42 +0200
commit00c9709fd9763542e848f6278db8ba26af5c9886 (patch)
tree92cb1c1ee4c467118e1e5a4c7e233d3feac6efa8 /inc/woocommerce.php
downloadfuselkoenig_de-00c9709fd9763542e848f6278db8ba26af5c9886.tar.gz
Initial commit.
Diffstat (limited to 'inc/woocommerce.php')
-rw-r--r--inc/woocommerce.php140
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