diff options
Diffstat (limited to 'inc/compatibility/woocommerce/woocommerce-common-functions.php')
-rw-r--r-- | inc/compatibility/woocommerce/woocommerce-common-functions.php | 598 |
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; |