summaryrefslogtreecommitdiff
path: root/inc/compatibility/woocommerce/woocommerce-common-functions.php
diff options
context:
space:
mode:
Diffstat (limited to 'inc/compatibility/woocommerce/woocommerce-common-functions.php')
-rw-r--r--inc/compatibility/woocommerce/woocommerce-common-functions.php598
1 files changed, 299 insertions, 299 deletions
diff --git a/inc/compatibility/woocommerce/woocommerce-common-functions.php b/inc/compatibility/woocommerce/woocommerce-common-functions.php
index 4921337..1a0995a 100644
--- a/inc/compatibility/woocommerce/woocommerce-common-functions.php
+++ b/inc/compatibility/woocommerce/woocommerce-common-functions.php
@@ -1,299 +1,299 @@
-<?php
-/**
- * Custom functions that used for Woocommerce compatibility.
- *
- * Eventually, some of the functionality here could be replaced by core features.
- *
- * @package Astra
- * @author Astra
- * @copyright Copyright (c) 2020, Astra
- * @link https://wpastra.com/
- * @since Astra 1.1.0
- */
-
-if ( ! defined( 'ABSPATH' ) ) {
- exit; // Exit if accessed directly.
-}
-
-/**
- * Shop page - Products Title markup updated
- */
-if ( ! function_exists( 'astra_woo_shop_products_title' ) ) :
-
- /**
- * Shop Page product titles with anchor
- *
- * @hooked woocommerce_after_shop_loop_item - 10
- *
- * @since 1.1.0
- */
- function astra_woo_shop_products_title() {
- echo '<a href="' . esc_url( get_the_permalink() ) . '" class="woocommerce-LoopProduct-link woocommerce-loop-product__link">';
-
- echo '<h2 class="woocommerce-loop-product__title">' . esc_html( get_the_title() ) . '</h2>';
-
- echo '</a>';
- }
-
-endif;
-
-/**
- * Shop page - Parent Category
- */
-if ( ! function_exists( 'astra_woo_shop_parent_category' ) ) :
- /**
- * Add and/or Remove Categories from shop archive page.
- *
- * @hooked woocommerce_after_shop_loop_item - 9
- *
- * @since 1.1.0
- */
- function astra_woo_shop_parent_category() {
- if ( apply_filters( 'astra_woo_shop_parent_category', true ) ) : ?>
- <span class="ast-woo-product-category">
- <?php
- global $product;
- $product_categories = function_exists( 'wc_get_product_category_list' ) ? wc_get_product_category_list( get_the_ID(), ';', '', '' ) : $product->get_categories( ';', '', '' );
-
- $product_categories = htmlspecialchars_decode( wp_strip_all_tags( $product_categories ) );
- if ( $product_categories ) {
- list( $parent_cat ) = explode( ';', $product_categories );
- echo apply_filters( 'astra_woo_shop_product_categories', esc_html( $parent_cat ), get_the_ID() ); // phpcs:ignore WordPress.Security.EscapeOutput.OutputNotEscaped
- }
-
- ?>
- </span>
- <?php
- endif;
- }
-endif;
-
-/**
- * Shop page - Out of Stock
- */
-if ( ! function_exists( 'astra_woo_shop_out_of_stock' ) ) :
- /**
- * Add Out of Stock to the Shop page
- *
- * @hooked woocommerce_shop_loop_item_title - 8
- *
- * @since 1.1.0
- */
- function astra_woo_shop_out_of_stock() {
- $out_of_stock = get_post_meta( get_the_ID(), '_stock_status', true );
- $out_of_stock_string = apply_filters( 'astra_woo_shop_out_of_stock_string', __( 'Out of stock', 'astra' ) );
- if ( 'outofstock' === $out_of_stock ) {
- ?>
- <span class="ast-shop-product-out-of-stock"><?php echo esc_html( $out_of_stock_string ); ?></span>
- <?php
- }
- }
-
-endif;
-
-/**
- * Shop page - Short Description
- */
-if ( ! function_exists( 'astra_woo_shop_product_short_description' ) ) :
- /**
- * Product short description
- *
- * @hooked woocommerce_after_shop_loop_item
- *
- * @since 1.1.0
- */
- function astra_woo_shop_product_short_description() {
- ?>
- <?php if ( has_excerpt() ) { ?>
- <div class="ast-woo-shop-product-description">
- <?php the_excerpt(); ?>
- </div>
- <?php } ?>
- <?php
- }
-endif;
-/**
- * Product page - Availability: in stock
- */
-if ( ! function_exists( 'astra_woo_product_in_stock' ) ) :
- /**
- * Availability: in stock string updated
- *
- * @param string $markup Markup.
- * @param object $product Object of Product.
- *
- * @since 1.1.0
- */
- function astra_woo_product_in_stock( $markup, $product ) {
-
- if ( is_product() ) {
- $product_avail = $product->get_availability();
- $stock_quantity = $product->get_stock_quantity();
- $availability = $product_avail['availability'];
- $avail_class = $product_avail['class'];
- if ( ! empty( $availability ) && $stock_quantity ) {
- ob_start();
- ?>
- <p class="ast-stock-detail">
- <span class="ast-stock-avail"><?php esc_html_e( 'Availability:', 'astra' ); ?></span>
- <span class="stock <?php echo esc_html( $avail_class ); ?>"><?php echo esc_html( $availability ); ?></span>
- </p>
- <?php
- $markup = ob_get_clean();
- }
- }
-
- return $markup;
- }
-endif;
-
-if ( ! function_exists( 'astra_woo_woocommerce_template_loop_product_title' ) ) {
-
- /**
- * Show the product title in the product loop. By default this is an H2.
- */
- function astra_woo_woocommerce_template_loop_product_title() {
-
- echo '<a href="' . esc_url( get_the_permalink() ) . '" class="ast-loop-product__link">';
- woocommerce_template_loop_product_title();
- echo '</a>';
- }
-}
-
-if ( ! function_exists( 'astra_woo_woocommerce_shop_product_content' ) ) {
-
- /**
- * Show the product title in the product loop. By default this is an H2.
- */
- function astra_woo_woocommerce_shop_product_content() {
-
- $shop_structure = apply_filters( 'astra_woo_shop_product_structure', astra_get_option( 'shop-product-structure' ) );
- if ( is_array( $shop_structure ) && ! empty( $shop_structure ) ) {
-
- do_action( 'astra_woo_shop_before_summary_wrap' );
- echo '<div class="astra-shop-summary-wrap">';
- do_action( 'astra_woo_shop_summary_wrap_top' );
-
- foreach ( $shop_structure as $value ) {
-
- switch ( $value ) {
- case 'title':
- /**
- * Add Product Title on shop page for all products.
- */
- do_action( 'astra_woo_shop_title_before' );
- astra_woo_woocommerce_template_loop_product_title();
- do_action( 'astra_woo_shop_title_after' );
- break;
- case 'price':
- /**
- * Add Product Price on shop page for all products.
- */
- do_action( 'astra_woo_shop_price_before' );
- woocommerce_template_loop_price();
- do_action( 'astra_woo_shop_price_after' );
- break;
- case 'ratings':
- /**
- * Add rating on shop page for all products.
- */
- do_action( 'astra_woo_shop_rating_before' );
- woocommerce_template_loop_rating();
- do_action( 'astra_woo_shop_rating_after' );
- break;
- case 'short_desc':
- do_action( 'astra_woo_shop_short_description_before' );
- astra_woo_shop_product_short_description();
- do_action( 'astra_woo_shop_short_description_after' );
- break;
- case 'add_cart':
- do_action( 'astra_woo_shop_add_to_cart_before' );
- woocommerce_template_loop_add_to_cart();
- do_action( 'astra_woo_shop_add_to_cart_after' );
- break;
- case 'category':
- /**
- * Add and/or Remove Categories from shop archive page.
- */
- do_action( 'astra_woo_shop_category_before' );
- astra_woo_shop_parent_category();
- do_action( 'astra_woo_shop_category_after' );
- break;
- default:
- break;
- }
- }
-
- do_action( 'astra_woo_shop_summary_wrap_bottom' );
- echo '</div>';
- do_action( 'astra_woo_shop_after_summary_wrap' );
- }
- }
-}
-
-if ( ! function_exists( 'astra_woo_shop_thumbnail_wrap_start' ) ) {
-
- /**
- * Thumbnail wrap start.
- */
- function astra_woo_shop_thumbnail_wrap_start() {
-
- echo '<div class="astra-shop-thumbnail-wrap">';
- }
-}
-
-if ( ! function_exists( 'astra_woo_shop_thumbnail_wrap_end' ) ) {
-
- /**
- * Thumbnail wrap end.
- */
- function astra_woo_shop_thumbnail_wrap_end() {
-
- echo '</div>';
- }
-}
-
-
-/**
- * Woocommerce filter - Widget Products Tags
- */
-if ( ! function_exists( 'astra_widget_product_tag_cloud_args' ) ) {
-
- /**
- * Woocommerce filter - Widget Products Tags
- *
- * @param array $args Tag arguments.
- * @return array Modified tag arguments.
- */
- function astra_widget_product_tag_cloud_args( $args = array() ) {
-
- $sidebar_link_font_size = astra_get_option( 'font-size-body' );
- $sidebar_link_font_size['desktop'] = ( '' != $sidebar_link_font_size['desktop'] ) ? $sidebar_link_font_size['desktop'] : 15;
-
- $args['smallest'] = intval( $sidebar_link_font_size['desktop'] ) - 2;
- $args['largest'] = intval( $sidebar_link_font_size['desktop'] ) + 3;
- $args['unit'] = 'px';
-
- return apply_filters( 'astra_widget_product_tag_cloud_args', $args );
- }
- add_filter( 'woocommerce_product_tag_cloud_widget_args', 'astra_widget_product_tag_cloud_args', 90 );
-
-}
-
-/**
- * Woocommerce shop/product div close tag.
- */
-if ( ! function_exists( 'astra_woocommerce_div_wrapper_close' ) ) :
-
- /**
- * Woocommerce shop/product div close tag.
- *
- * @return void
- */
- function astra_woocommerce_div_wrapper_close() {
-
- echo '</div>';
-
- }
-
-endif;
+<?php
+/**
+ * Custom functions that used for Woocommerce compatibility.
+ *
+ * Eventually, some of the functionality here could be replaced by core features.
+ *
+ * @package Astra
+ * @author Astra
+ * @copyright Copyright (c) 2020, Astra
+ * @link https://wpastra.com/
+ * @since Astra 1.1.0
+ */
+
+if ( ! defined( 'ABSPATH' ) ) {
+ exit; // Exit if accessed directly.
+}
+
+/**
+ * Shop page - Products Title markup updated
+ */
+if ( ! function_exists( 'astra_woo_shop_products_title' ) ) :
+
+ /**
+ * Shop Page product titles with anchor
+ *
+ * @hooked woocommerce_after_shop_loop_item - 10
+ *
+ * @since 1.1.0
+ */
+ function astra_woo_shop_products_title() {
+ echo '<a href="' . esc_url( get_the_permalink() ) . '" class="woocommerce-LoopProduct-link woocommerce-loop-product__link">';
+
+ echo '<h2 class="woocommerce-loop-product__title">' . esc_html( get_the_title() ) . '</h2>';
+
+ echo '</a>';
+ }
+
+endif;
+
+/**
+ * Shop page - Parent Category
+ */
+if ( ! function_exists( 'astra_woo_shop_parent_category' ) ) :
+ /**
+ * Add and/or Remove Categories from shop archive page.
+ *
+ * @hooked woocommerce_after_shop_loop_item - 9
+ *
+ * @since 1.1.0
+ */
+ function astra_woo_shop_parent_category() {
+ if ( apply_filters( 'astra_woo_shop_parent_category', true ) ) : ?>
+ <span class="ast-woo-product-category">
+ <?php
+ global $product;
+ $product_categories = function_exists( 'wc_get_product_category_list' ) ? wc_get_product_category_list( get_the_ID(), ';', '', '' ) : $product->get_categories( ';', '', '' );
+
+ $product_categories = htmlspecialchars_decode( wp_strip_all_tags( $product_categories ) );
+ if ( $product_categories ) {
+ list( $parent_cat ) = explode( ';', $product_categories );
+ echo apply_filters( 'astra_woo_shop_product_categories', esc_html( $parent_cat ), get_the_ID() ); // phpcs:ignore WordPress.Security.EscapeOutput.OutputNotEscaped
+ }
+
+ ?>
+ </span>
+ <?php
+ endif;
+ }
+endif;
+
+/**
+ * Shop page - Out of Stock
+ */
+if ( ! function_exists( 'astra_woo_shop_out_of_stock' ) ) :
+ /**
+ * Add Out of Stock to the Shop page
+ *
+ * @hooked woocommerce_shop_loop_item_title - 8
+ *
+ * @since 1.1.0
+ */
+ function astra_woo_shop_out_of_stock() {
+ $out_of_stock = get_post_meta( get_the_ID(), '_stock_status', true );
+ $out_of_stock_string = apply_filters( 'astra_woo_shop_out_of_stock_string', __( 'Out of stock', 'astra' ) );
+ if ( 'outofstock' === $out_of_stock ) {
+ ?>
+ <span class="ast-shop-product-out-of-stock"><?php echo esc_html( $out_of_stock_string ); ?></span>
+ <?php
+ }
+ }
+
+endif;
+
+/**
+ * Shop page - Short Description
+ */
+if ( ! function_exists( 'astra_woo_shop_product_short_description' ) ) :
+ /**
+ * Product short description
+ *
+ * @hooked woocommerce_after_shop_loop_item
+ *
+ * @since 1.1.0
+ */
+ function astra_woo_shop_product_short_description() {
+ ?>
+ <?php if ( has_excerpt() ) { ?>
+ <div class="ast-woo-shop-product-description">
+ <?php the_excerpt(); ?>
+ </div>
+ <?php } ?>
+ <?php
+ }
+endif;
+/**
+ * Product page - Availability: in stock
+ */
+if ( ! function_exists( 'astra_woo_product_in_stock' ) ) :
+ /**
+ * Availability: in stock string updated
+ *
+ * @param string $markup Markup.
+ * @param object $product Object of Product.
+ *
+ * @since 1.1.0
+ */
+ function astra_woo_product_in_stock( $markup, $product ) {
+
+ if ( is_product() ) {
+ $product_avail = $product->get_availability();
+ $stock_quantity = $product->get_stock_quantity();
+ $availability = $product_avail['availability'];
+ $avail_class = $product_avail['class'];
+ if ( ! empty( $availability ) && $stock_quantity ) {
+ ob_start();
+ ?>
+ <p class="ast-stock-detail">
+ <span class="ast-stock-avail"><?php esc_html_e( 'Availability:', 'astra' ); ?></span>
+ <span class="stock <?php echo esc_html( $avail_class ); ?>"><?php echo esc_html( $availability ); ?></span>
+ </p>
+ <?php
+ $markup = ob_get_clean();
+ }
+ }
+
+ return $markup;
+ }
+endif;
+
+if ( ! function_exists( 'astra_woo_woocommerce_template_loop_product_title' ) ) {
+
+ /**
+ * Show the product title in the product loop. By default this is an H2.
+ */
+ function astra_woo_woocommerce_template_loop_product_title() {
+
+ echo '<a href="' . esc_url( get_the_permalink() ) . '" class="ast-loop-product__link">';
+ woocommerce_template_loop_product_title();
+ echo '</a>';
+ }
+}
+
+if ( ! function_exists( 'astra_woo_woocommerce_shop_product_content' ) ) {
+
+ /**
+ * Show the product title in the product loop. By default this is an H2.
+ */
+ function astra_woo_woocommerce_shop_product_content() {
+
+ $shop_structure = apply_filters( 'astra_woo_shop_product_structure', astra_get_option( 'shop-product-structure' ) );
+ if ( is_array( $shop_structure ) && ! empty( $shop_structure ) ) {
+
+ do_action( 'astra_woo_shop_before_summary_wrap' );
+ echo '<div class="astra-shop-summary-wrap">';
+ do_action( 'astra_woo_shop_summary_wrap_top' );
+
+ foreach ( $shop_structure as $value ) {
+
+ switch ( $value ) {
+ case 'title':
+ /**
+ * Add Product Title on shop page for all products.
+ */
+ do_action( 'astra_woo_shop_title_before' );
+ astra_woo_woocommerce_template_loop_product_title();
+ do_action( 'astra_woo_shop_title_after' );
+ break;
+ case 'price':
+ /**
+ * Add Product Price on shop page for all products.
+ */
+ do_action( 'astra_woo_shop_price_before' );
+ woocommerce_template_loop_price();
+ do_action( 'astra_woo_shop_price_after' );
+ break;
+ case 'ratings':
+ /**
+ * Add rating on shop page for all products.
+ */
+ do_action( 'astra_woo_shop_rating_before' );
+ woocommerce_template_loop_rating();
+ do_action( 'astra_woo_shop_rating_after' );
+ break;
+ case 'short_desc':
+ do_action( 'astra_woo_shop_short_description_before' );
+ astra_woo_shop_product_short_description();
+ do_action( 'astra_woo_shop_short_description_after' );
+ break;
+ case 'add_cart':
+ do_action( 'astra_woo_shop_add_to_cart_before' );
+ woocommerce_template_loop_add_to_cart();
+ do_action( 'astra_woo_shop_add_to_cart_after' );
+ break;
+ case 'category':
+ /**
+ * Add and/or Remove Categories from shop archive page.
+ */
+ do_action( 'astra_woo_shop_category_before' );
+ astra_woo_shop_parent_category();
+ do_action( 'astra_woo_shop_category_after' );
+ break;
+ default:
+ break;
+ }
+ }
+
+ do_action( 'astra_woo_shop_summary_wrap_bottom' );
+ echo '</div>';
+ do_action( 'astra_woo_shop_after_summary_wrap' );
+ }
+ }
+}
+
+if ( ! function_exists( 'astra_woo_shop_thumbnail_wrap_start' ) ) {
+
+ /**
+ * Thumbnail wrap start.
+ */
+ function astra_woo_shop_thumbnail_wrap_start() {
+
+ echo '<div class="astra-shop-thumbnail-wrap">';
+ }
+}
+
+if ( ! function_exists( 'astra_woo_shop_thumbnail_wrap_end' ) ) {
+
+ /**
+ * Thumbnail wrap end.
+ */
+ function astra_woo_shop_thumbnail_wrap_end() {
+
+ echo '</div>';
+ }
+}
+
+
+/**
+ * Woocommerce filter - Widget Products Tags
+ */
+if ( ! function_exists( 'astra_widget_product_tag_cloud_args' ) ) {
+
+ /**
+ * Woocommerce filter - Widget Products Tags
+ *
+ * @param array $args Tag arguments.
+ * @return array Modified tag arguments.
+ */
+ function astra_widget_product_tag_cloud_args( $args = array() ) {
+
+ $sidebar_link_font_size = astra_get_option( 'font-size-body' );
+ $sidebar_link_font_size['desktop'] = ( '' != $sidebar_link_font_size['desktop'] ) ? $sidebar_link_font_size['desktop'] : 15;
+
+ $args['smallest'] = intval( $sidebar_link_font_size['desktop'] ) - 2;
+ $args['largest'] = intval( $sidebar_link_font_size['desktop'] ) + 3;
+ $args['unit'] = 'px';
+
+ return apply_filters( 'astra_widget_product_tag_cloud_args', $args );
+ }
+ add_filter( 'woocommerce_product_tag_cloud_widget_args', 'astra_widget_product_tag_cloud_args', 90 );
+
+}
+
+/**
+ * Woocommerce shop/product div close tag.
+ */
+if ( ! function_exists( 'astra_woocommerce_div_wrapper_close' ) ) :
+
+ /**
+ * Woocommerce shop/product div close tag.
+ *
+ * @return void
+ */
+ function astra_woocommerce_div_wrapper_close() {
+
+ echo '</div>';
+
+ }
+
+endif;