/home/blackyak/www/wordpress/wp-content/themes/travivu/functions.php
<?php
/**
	*
	* @author     Gaviasthemes     
	* @copyright  Copyright (C) 2025 Gaviasthemes. All Rights Reserved.
	* @license    GNU/GPL v2 or later http://www.gnu.org/licenses/gpl-2.0.html
	* 
*/
use Directorist\Multi_Directory;

define('TRAVIVU_THEME_DIR', get_template_directory());
define('TRAVIVU_THEME_URL', get_template_directory_uri());

// Include list of files of theme.
require_once(TRAVIVU_THEME_DIR . '/includes/functions.php'); 
require_once(TRAVIVU_THEME_DIR . '/includes/template.php'); 
require_once(TRAVIVU_THEME_DIR . '/includes/hook.php'); 
require_once(TRAVIVU_THEME_DIR . '/includes/comment.php'); 
require_once(TRAVIVU_THEME_DIR . '/includes/metaboxes.php');
require_once(TRAVIVU_THEME_DIR . '/includes/customize.php'); 
require_once(TRAVIVU_THEME_DIR . '/includes/menu.php'); 
require_once(TRAVIVU_THEME_DIR . '/includes/elementor/hooks.php');

//Load Woocommerce plugin
if(class_exists('WooCommerce')){
	add_theme_support('woocommerce');
	require_once(TRAVIVU_THEME_DIR . '/includes/woocommerce/functions.php'); 
	require_once(TRAVIVU_THEME_DIR . '/includes/woocommerce/hooks.php'); 
}

add_action('after_setup_theme', 'travivu_after_setup_theme');
function travivu_after_setup_theme(){
	// Load Redux - Theme options framework
	if(class_exists('Redux')){
		require(TRAVIVU_THEME_DIR . '/includes/options/init.php');
		require_once(TRAVIVU_THEME_DIR . '/includes/options/opts-general.php'); 
		require_once(TRAVIVU_THEME_DIR . '/includes/options/opts-styling.php'); 
		require_once(TRAVIVU_THEME_DIR . '/includes/options/opts-page.php'); 
		require_once(TRAVIVU_THEME_DIR . '/includes/options/opts-portfolio.php'); 

		if( class_exists('WTE') ){
			require_once(TRAVIVU_THEME_DIR . '/includes/options/opts-trip-general.php'); 
		}
		if(class_exists('WooCommerce')){
			require_once(TRAVIVU_THEME_DIR . '/includes/options/opts-woo.php'); 
		}
	}
	//	Registry menu
	register_nav_menus( array(
		'primary'      => esc_html__( 'Main menu', 'travivu' ),
	));
}

// TGM plugin activation
if (is_admin()) {
	require_once(TRAVIVU_THEME_DIR . '/includes/tgmpa/class-tgm-plugin-activation.php');
	require(TRAVIVU_THEME_DIR . '/includes/tgmpa/config.php');
}
load_theme_textdomain('travivu', get_template_directory() . '/languages');

//-------- Register sidebar default in theme -----------
//------------------------------------------------------
function travivu_widgets_init() {
	register_sidebar(array(
		'name' 				=> esc_html__('Default Sidebar', 'travivu'),
		'id' 					=> 'default_sidebar',
		'description' 		=> esc_html__('Appears in the Default Sidebar section of the site.', 'travivu'),
		'before_widget' 	=> '<aside id="%1$s" class="widget clearfix %2$s">',
		'after_widget' 	=> '</aside>',
		'before_title' 	=> '<h3 class="widget-title"><span>',
		'after_title' 		=> '</span></h3>',
	));

	if(class_exists('WooCommerce')){
		register_sidebar( array(
			'name' 				=> esc_html__('WooCommerce Shop Sidebar', 'travivu'),
			'id' 					=> 'woocommerce_sidebar',
			'description' 		=> esc_html__('Appears in the Plugin WooCommerce section of the site.', 'travivu'),
			'before_widget' 	=> '<aside id="%1$s" class="widget clearfix %2$s">',
			'after_widget'	 	=> '</aside>',
			'before_title' 	=> '<h3 class="widget-title"><span>',
			'after_title' 		=> '</span></h3>',
		));
		register_sidebar( array(
			'name' 				=> esc_html__('WooCommerce Product Sidebar', 'travivu'),
			'id' 					=> 'woocommerce_product_sidebar',
			'description' 		=> esc_html__('Appears in the Product Single page of the site.', 'travivu'),
			'before_widget' 	=> '<aside id="%1$s" class="widget clearfix %2$s">',
			'after_widget'	 	=> '</aside>',
			'before_title' 	=> '<h3 class="widget-title"><span>',
			'after_title' 		=> '</span></h3>',
		));
	}
	register_sidebar(array(
		'name' 				=> esc_html__('After Offcanvas Mobile', 'travivu'),
		'id' 					=> 'offcanvas_sidebar_mobile',
		'description' 		=> esc_html__('Appears in the Offcanvas section of the site.', 'travivu'),
		'before_widget' 	=> '<aside id="%1$s" class="widget clearfix %2$s">',
		'after_widget' 	=> '</aside>',
		'before_title' 	=> '<h3 class="widget-title"><span>',
		'after_title' 		=> '</span></h3>',
	));
	
}
add_action('widgets_init', 'travivu_widgets_init');


function travivu_fonts_url() { 
	$fonts_url = '';
	$fonts     = array();
	$subsets   = '';
	$protocol = is_ssl() ? 'https' : 'http';
	if('off' !== _x('on', 'Plus Jakarta Sans font: on or off', 'travivu')){
		$fonts[] = 'Plus+Jakarta+Sans:ital,wght@0,200..800;1,200..800';
	}
	if('off' !== _x('on', 'Covered By Your Grace font: on or off', 'travivu')){
		$fonts[] = 'Covered+By+Your+Grace';
	}
	if($fonts){
		$fonts_url = add_query_arg( array(
			'family' => (implode('&family=', $fonts)),
			'display' => 'swap',
		),  $protocol.'://fonts.googleapis.com/css2');
	}
	return $fonts_url;
}

function travivu_custom_styles() {
	$custom_css = get_option('travivu_theme_custom_styles');
	if($custom_css){
		wp_enqueue_style(
			'travivu-custom-style',
			TRAVIVU_THEME_URL . '/assets/css/custom_script.css'
		);
		wp_add_inline_style('travivu-custom-style', $custom_css);
	}
}
add_action('wp_enqueue_scripts', 'travivu_custom_styles', 9999);

function travivu_init_scripts(){
	global $post;
	$protocol = is_ssl() ? 'https' : 'http';
	if ( is_singular() && comments_open() && get_option('thread_comments') ){
		wp_enqueue_script('comment-reply');
	}

	$theme = wp_get_theme('travivu');
	$theme_version = $theme['Version'];

	wp_enqueue_style('travivu-fonts', travivu_fonts_url(), array(), null );
	
	wp_enqueue_script('bootstrap', TRAVIVU_THEME_URL . '/assets/js/bootstrap.min.js', array('jquery') );
  	wp_enqueue_script('scrollbar', TRAVIVU_THEME_URL . '/assets/js/perfect-scrollbar.jquery.min.js');
	wp_enqueue_script('jquery-magnific-popup', TRAVIVU_THEME_URL . '/assets/js/magnific/jquery.magnific-popup.min.js');
	wp_enqueue_script('jquery-cookie', TRAVIVU_THEME_URL . '/assets/js/jquery.cookie.js', array('jquery'));
	wp_enqueue_script('swiper', TRAVIVU_THEME_URL . '/assets/js/swiper/swiper.min.js');
	wp_enqueue_script('jquery-appear', TRAVIVU_THEME_URL . '/assets/js/jquery.appear.js');
	wp_enqueue_script('travivu-main', TRAVIVU_THEME_URL . '/assets/js/main.js', array('imagesloaded', 'jquery-masonry'));
  
	wp_enqueue_style('dashicons');
	wp_enqueue_style('swiper', TRAVIVU_THEME_URL .'/assets/js/swiper/swiper.min.css');
	wp_enqueue_style('magnific', TRAVIVU_THEME_URL .'/assets/js/magnific/magnific-popup.css');
	wp_enqueue_style('fontawesome', TRAVIVU_THEME_URL . '/assets/css/fontawesome/css/all.min.css');
	wp_enqueue_style('travivu-icon', TRAVIVU_THEME_URL . '/assets/css/icons/style.css');

	wp_enqueue_style('travivu-style', TRAVIVU_THEME_URL . '/style.css');
	wp_enqueue_style('bootstrap', TRAVIVU_THEME_URL . '/assets/css/bootstrap.css', array(), $theme_version , 'all'); 
	wp_enqueue_style('travivu-template', TRAVIVU_THEME_URL . '/assets/css/template.css', array(), $theme_version , 'all');
	
	//WP Travel Engine
	if(class_exists('\WPTravelEngine\Plugin')){ 
		wp_enqueue_style('travivu-booking', TRAVIVU_THEME_URL . '/assets/css/booking.css', array(), $theme_version , 'all');
	}

	//Woocommerce
	if(class_exists('WooCommerce')){
		wp_enqueue_style('travivu-woocoomerce', TRAVIVU_THEME_URL . '/assets/css/woocommerce.css', array(), $theme_version , 'all'); 
		wp_dequeue_script('wc-add-to-cart');
		wp_enqueue_script('wc-add-to-cart', TRAVIVU_THEME_URL . '/assets/js/add-to-cart.js' , array('jquery'));
	}
} 
add_action('wp_enqueue_scripts', 'travivu_init_scripts', 999);