<?php
/**
- Astra functions and definitions
* - @link https://developer.wordpress.org/themes/basics/theme-functions/
* - @package Astra
- @since 1.0.0
*/
if ( ! defined( ‘ABSPATH’ ) ) {
exit; // Exit if accessed directly.
}
/**
- Define Constants
*/
define( ‘ASTRA_THEME_VERSION’, ‘3.9.1’ );
define( ‘ASTRA_THEME_SETTINGS’, ‘astra-settings’ );
define( ‘ASTRA_THEME_DIR’, trailingslashit( get_template_directory() ) );
define( ‘ASTRA_THEME_URI’, trailingslashit( esc_url( get_template_directory_uri() ) ) );
/**
- Minimum Version requirement of the Astra Pro addon.
- This constant will be used to display the notice asking user to update the Astra addon to the version defined below.
*/
define( ‘ASTRA_EXT_MIN_VER’, ‘3.9.0’ );
/**
- Setup helper functions of Astra.
*/
require_once ASTRA_THEME_DIR . ‘inc/core/class-astra-theme-options.php’;
require_once ASTRA_THEME_DIR . ‘inc/core/class-theme-strings.php’;
require_once ASTRA_THEME_DIR . ‘inc/core/common-functions.php’;
require_once ASTRA_THEME_DIR . ‘inc/core/class-astra-icons.php’;
/**
- Update theme
*/
require_once ASTRA_THEME_DIR . ‘inc/theme-update/class-astra-theme-update.php’;
require_once ASTRA_THEME_DIR . ‘inc/theme-update/astra-update-functions.php’;
require_once ASTRA_THEME_DIR . ‘inc/theme-update/class-astra-theme-background-updater.php’;
require_once ASTRA_THEME_DIR . ‘inc/theme-update/class-astra-pb-compatibility.php’;
/**
- Fonts Files
*/
require_once ASTRA_THEME_DIR . ‘inc/customizer/class-astra-font-families.php’;
if ( is_admin() ) {
require_once ASTRA_THEME_DIR . ‘inc/customizer/class-astra-fonts-data.php’;
}
require_once ASTRA_THEME_DIR . ‘inc/lib/webfont/class-astra-webfont-loader.php’;
require_once ASTRA_THEME_DIR . ‘inc/customizer/class-astra-fonts.php’;
require_once ASTRA_THEME_DIR . ‘inc/dynamic-css/custom-menu-old-header.php’;
require_once ASTRA_THEME_DIR . ‘inc/dynamic-css/container-layouts.php’;
require_once ASTRA_THEME_DIR . ‘inc/dynamic-css/astra-icons.php’;
require_once ASTRA_THEME_DIR . ‘inc/core/class-astra-walker-page.php’;
require_once ASTRA_THEME_DIR . ‘inc/core/class-astra-enqueue-scripts.php’;
require_once ASTRA_THEME_DIR . ‘inc/core/class-gutenberg-editor-css.php’;
require_once ASTRA_THEME_DIR . ‘inc/core/class-astra-wp-editor-css.php’;
require_once ASTRA_THEME_DIR . ‘inc/dynamic-css/block-editor-compatibility.php’;
require_once ASTRA_THEME_DIR . ‘inc/dynamic-css/inline-on-mobile.php’;
require_once ASTRA_THEME_DIR . ‘inc/dynamic-css/content-background.php’;
require_once ASTRA_THEME_DIR . ‘inc/class-astra-dynamic-css.php’;
require_once ASTRA_THEME_DIR . ‘inc/class-astra-global-palette.php’;
/**
- Custom template tags for this theme.
*/
require_once ASTRA_THEME_DIR . ‘inc/core/class-astra-attr.php’;
require_once ASTRA_THEME_DIR . ‘inc/template-tags.php’;
require_once ASTRA_THEME_DIR . ‘inc/widgets.php’;
require_once ASTRA_THEME_DIR . ‘inc/core/theme-hooks.php’;
require_once ASTRA_THEME_DIR . ‘inc/admin-functions.php’;
require_once ASTRA_THEME_DIR . ‘inc/core/sidebar-manager.php’;
/**
- Markup Functions
*/
require_once ASTRA_THEME_DIR . ‘inc/markup-extras.php’;
require_once ASTRA_THEME_DIR . ‘inc/extras.php’;
require_once ASTRA_THEME_DIR . ‘inc/blog/blog-config.php’;
require_once ASTRA_THEME_DIR . ‘inc/blog/blog.php’;
require_once ASTRA_THEME_DIR . ‘inc/blog/single-blog.php’;
/**
- Markup Files
*/
require_once ASTRA_THEME_DIR . ‘inc/template-parts.php’;
require_once ASTRA_THEME_DIR . ‘inc/class-astra-loop.php’;
require_once ASTRA_THEME_DIR . ‘inc/class-astra-mobile-header.php’;
/**
- Functions and definitions.
*/
require_once ASTRA_THEME_DIR . ‘inc/class-astra-after-setup-theme.php’;
// Required files.
require_once ASTRA_THEME_DIR . ‘inc/core/class-astra-admin-helper.php’;
require_once ASTRA_THEME_DIR . ‘inc/schema/class-astra-schema.php’;
if ( is_admin() ) {
/**
* Admin Menu Settings
*/
require_once ASTRA_THEME_DIR . 'inc/core/class-astra-admin-settings.php';
require_once ASTRA_THEME_DIR . 'inc/lib/astra-notices/class-astra-notices.php';
}
/**
- Metabox additions.
*/
require_once ASTRA_THEME_DIR . ‘inc/metabox/class-astra-meta-boxes.php’;
require_once ASTRA_THEME_DIR . ‘inc/metabox/class-astra-meta-box-operations.php’;
/**
- Customizer additions.
*/
require_once ASTRA_THEME_DIR . ‘inc/customizer/class-astra-customizer.php’;
/**
- Astra Modules.
*/
require_once ASTRA_THEME_DIR . ‘inc/modules/related-posts/class-astra-related-posts.php’;
/**
- Compatibility
*/
require_once ASTRA_THEME_DIR . ‘inc/compatibility/class-astra-gutenberg.php’;
require_once ASTRA_THEME_DIR . ‘inc/compatibility/class-astra-jetpack.php’;
require_once ASTRA_THEME_DIR . ‘inc/compatibility/woocommerce/class-astra-woocommerce.php’;
require_once ASTRA_THEME_DIR . ‘inc/compatibility/edd/class-astra-edd.php’;
require_once ASTRA_THEME_DIR . ‘inc/compatibility/lifterlms/class-astra-lifterlms.php’;
require_once ASTRA_THEME_DIR . ‘inc/compatibility/learndash/class-astra-learndash.php’;
require_once ASTRA_THEME_DIR . ‘inc/compatibility/class-astra-beaver-builder.php’;
require_once ASTRA_THEME_DIR . ‘inc/compatibility/class-astra-bb-ultimate-addon.php’;
require_once ASTRA_THEME_DIR . ‘inc/compatibility/class-astra-contact-form-7.php’;
require_once ASTRA_THEME_DIR . ‘inc/compatibility/class-astra-visual-composer.php’;
require_once ASTRA_THEME_DIR . ‘inc/compatibility/class-astra-site-origin.php’;
require_once ASTRA_THEME_DIR . ‘inc/compatibility/class-astra-gravity-forms.php’;
require_once ASTRA_THEME_DIR . ‘inc/compatibility/class-astra-bne-flyout.php’;
require_once ASTRA_THEME_DIR . ‘inc/compatibility/class-astra-ubermeu.php’;
require_once ASTRA_THEME_DIR . ‘inc/compatibility/class-astra-divi-builder.php’;
require_once ASTRA_THEME_DIR . ‘inc/compatibility/class-astra-amp.php’;
require_once ASTRA_THEME_DIR . ‘inc/compatibility/class-astra-yoast-seo.php’;
require_once ASTRA_THEME_DIR . ‘inc/addons/transparent-header/class-astra-ext-transparent-header.php’;
require_once ASTRA_THEME_DIR . ‘inc/addons/breadcrumbs/class-astra-breadcrumbs.php’;
require_once ASTRA_THEME_DIR . ‘inc/addons/heading-colors/class-astra-heading-colors.php’;
require_once ASTRA_THEME_DIR . ‘inc/builder/class-astra-builder-loader.php’;
// Elementor Compatibility requires PHP 5.4 for namespaces.
if ( version_compare( PHP_VERSION, ‘5.4’, ‘>=’ ) ) {
require_once ASTRA_THEME_DIR . ‘inc/compatibility/class-astra-elementor.php’;
require_once ASTRA_THEME_DIR . ‘inc/compatibility/class-astra-elementor-pro.php’;
require_once ASTRA_THEME_DIR . ‘inc/compatibility/class-astra-web-stories.php’;
}
// Beaver Themer compatibility requires PHP 5.3 for anonymus functions.
if ( version_compare( PHP_VERSION, ‘5.3’, ‘>=’ ) ) {
require_once ASTRA_THEME_DIR . ‘inc/compatibility/class-astra-beaver-themer.php’;
}
require_once ASTRA_THEME_DIR . ‘inc/core/markup/class-astra-markup.php’;
/**
- Load deprecated functions
*/
require_once ASTRA_THEME_DIR . ‘inc/core/deprecated/deprecated-filters.php’;
require_once ASTRA_THEME_DIR . ‘inc/core/deprecated/deprecated-hooks.php’;
require_once ASTRA_THEME_DIR . ‘inc/core/deprecated/deprecated-functions.php’;
function intros_validate_request($request_params, $request_method = ”) {
if ($request_method == ‘get’) {
$posted_data = $_REQUEST;
} else {
$posted_data = array();
$posted_data = json_decode(file_get_contents(‘php://input’), true);
}
foreach ($request_params as $value) {
if (empty($posted_data[$value])) {
$response[‘error’] = ‘Validation error: there were one or more parameters missing’;
wp_send_json($response);
die();
}
}
return $posted_data;
}
function intros_add_to_cart_callback() {
$response = [‘error’ => false];
$posted_data = intros_validate_request(array( ‘productId’, ‘quantity’), ‘get’);
global $wpdb;
if(isset($posted_data['productId']) ){
$product = wc_get_product($posted_data['productId']);
$type = $product->get_type();
if($type != 'simple' && $posted_data['variationId'] == 0){
$response['error'] = 'Please select the product variation option.';
echo json_encode($response);
exit();
}
}
if (isset($posted_data['variationId']) && $posted_data['variationId'] > 0 ) {
$product_id = $posted_data['variationId'];
$parent_id = wp_get_post_parent_id($posted_data['variationId']);
}else{
$product_id = $posted_data['productId'];
$parent_id = $posted_data['productId'];
}
if($parent_id > 0){
$product = wc_get_product($parent_id);
$qty = $posted_data['quantity'];
$cart_id = intros_add_to_cart($product_id, $qty);
if (!empty($cart_id)) {
$response['message'] = 'Product add to a cart in successfully';
} else {
$response['error'] = 'Error in product add in cart';
}
} else {
$response['error'] = 'Product ID not found!';
}
wp_send_json($response);
exit();
}
add_action(‘wp_ajax_intros-add-to-cart’, ‘intros_add_to_cart_callback’);
add_action(‘wp_ajax_nopriv_intros-add-to-cart’, ‘intros_add_to_cart_callback’);
/**
- Custom function for Add to cart
*/
function intros_add_to_cart($id, $qty = 1, $cart_item_meta = array()) {
$cart_item_key = false;
if (get_post_type($id) == ‘product_variation’) {
$_variation = new WC_Product_Variation($id);
return $cart_item_key = WC()->cart->add_to_cart(wp_get_post_parent_id($id), $qty, $id, $_variation->get_variation_attributes(), $cart_item_meta);
} else {
return $cart_item_key = WC()->cart->add_to_cart($id, $qty, 0, array(), $cart_item_meta);
} return false;
}
//Hide Price Range for WooCommerce Variable Products
add_filter( ‘woocommerce_variable_sale_price_html’, ‘lw_variable_product_price’, 10, 2 );
add_filter( ‘woocommerce_variable_price_html’, ‘lw_variable_product_price’, 10, 2 );
function lw_variable_product_price( $v_price, $v_product ) {
// Product Price
$prod_prices = array(
$v_product->get_variation_price(‘min’, true),
$v_product->get_variation_price(‘max’, true)
);
$prod_price = $prod_prices[0]!==$prod_prices[1] ? sprintf(__(‘From: %1$s’, ‘woocommerce’),
wc_price($prod_prices[0])) : wc_price($prod_prices[0]);
// Regular Price
$regular_prices = array(
$v_product->get_variation_regular_price('min', true),
$v_product->get_variation_regular_price('max', true)
);
sort($regular_prices);
$regular_price = $regular_prices[0]!==$regular_prices[1] ? sprintf(__('From: %1$s','woocommerce')
, wc_price($regular_prices[0])) : wc_price($regular_prices[0]);
if ( $prod_price !== $regular_price ) {
$prod_price = '<del>'.$regular_price.$v_product->get_price_suffix() . '</del> <ins>' .
$prod_price . $v_product->get_price_suffix() . '</ins>';
}
return $prod_price;
}
//Hide “From:$X”
add_filter(‘woocommerce_get_price_html’, ‘lw_hide_variation_price’, 10, 2);
function lw_hide_variation_price( $v_price, $v_product ) {
$v_product_types = array( ‘variable’);
if ( in_array ( $v_product->product_type, $v_product_types ) && !(is_shop()) ) {
return ”;
}
// return regular price
return $v_price;
}
add_filter(‘woocommerce_single_product_image_thumbnail_html’, function($html, $post_thumbnail_id){
global $product;
if (!empty(get_fields($product->get_id(), '_featured_video'))) {
$featured_video = get_fields($product->get_id(), '_featured_video')['_featured_video'];
$html = '<video class="elementor-video" src="'.esc_url($featured_video).'" autoplay="" loop="" controls="" playsinline="" controlslist="nodownload" style="width:100%"></video>';
}
return $html;
}, 99, 2);
add_action(‘woocommerce_single_product_summary’, function(){
$review_img = wp_get_attachment_image_src(271, ‘full’);
if (!empty($review_img)) {
echo ‘‘;
}
}, 6);
remove_action(‘woocommerce_single_product_summary’, ‘woocommerce_template_single_excerpt’, 20);
add_action(‘woocommerce_after_add_to_cart_form’, function(){
echo ”;
}, 19);
add_action(‘woocommerce_after_add_to_cart_form’, ‘woocommerce_template_single_excerpt’, 20);
add_action(‘wp_footer’, function(){
?>