/home/awneajlw/www/decenttraders.online/wp-content/themes/minimalin/functions.php
<?php

require_once get_template_directory() . '/includes/loader.php';

add_action( 'after_setup_theme', 'minimalin_setup_theme' );
add_action( 'after_setup_theme', 'minimalin_load_default_hooks' );


function minimalin_setup_theme() {

	load_theme_textdomain( 'minimalin', get_template_directory() . '/languages' );

	// Add default posts and comments RSS feed links to head.

	/*
	 * Let WordPress manage the document title.
	 * By adding theme support, we declare that this theme does not use a
	 * hard-coded <title> tag in the document head, and expect WordPress to
	 * provide it for us.
	 */
	add_theme_support( 'title-tag' );
	add_theme_support( 'custom-header' );
	add_theme_support( 'woocommerce' );
	add_theme_support( 'custom-background' );

	/*
	 * Enable support for Post Thumbnails on posts and pages.
	 *
	 * @link https://developer.wordpress.org/themes/functionality/featured-images-post-thumbnails/
	 */
	add_theme_support( 'post-thumbnails' );
	add_theme_support( 'automatic-feed-links' );
	add_theme_support( 'align-wide' );
	add_theme_support( "title-tag" );
	add_theme_support( "responsive-embeds" );
	add_theme_support( "wp-block-styles" );
	
    
	// Set the default content width.
	$GLOBALS['content_width'] = 525;
	
	/*---------- Register image sizes ----------*/
	
	//Register image sizes
	add_image_size( 'minimalin_800x800', 800, 800, true ); //minimalin_800x800 Product Tabs
	add_image_size( 'minimalin_270x270', 270, 270, true ); //minimalin_270x270 Product Carousal
	add_image_size( 'minimalin_1200x700', 1200, 700, true ); //minimalin_1200x700 Blog Carousal
	add_image_size( 'minimalin_448x448', 448, 448, true ); //minimalin_448x448 Blog Grid
	
	
	/*---------- Register image sizes ends ----------*/
	
	
	
	// This theme uses wp_nav_menu() in two locations.
	register_nav_menus( array(
		'main_menu' => esc_html__( 'Main Menu', 'minimalin' ),
		'footer_menu' => esc_html__( 'Footer Menu', 'minimalin' ),
	) );

	/*
	 * Switch default core markup for search form, comment form, and comments
	 * to output valid HTML5.
	 */
	add_theme_support( 'html5', array(
		'comment-form',
		'comment-list',
		'gallery',
		'caption',
	) );

	// Add theme support for Custom Logo.
	add_theme_support( 'custom-logo', array(
		'width'      => 250,
		'height'     => 250,
		'flex-width' => true,
	) );

	// Add theme support for selective refresh for widgets.
	add_theme_support( 'customize-selective-refresh-widgets' );

	/*
	 * This theme styles the visual editor to resemble the theme style,
	 * specifically font, colors, and column width.
 	 */
	add_editor_style();
	add_action( 'admin_init', 'minimalin_admin_init', 2000000 );
}

/**
 * [minimalin_admin_init]
 *
 * @param  array $data [description]
 *
 * @return [type]       [description]
 */


function minimalin_admin_init() {
	remove_action( 'admin_notices', array( 'ReduxFramework', '_admin_notices' ), 99 );
}

/*---------- Sidebar settings ----------*/

/**
 * [minimalin_widgets_init]
 *
 * @param  array $data [description]
 *
 * @return [type]       [description]
 */
function minimalin_widgets_init() {

	global $wp_registered_sidebars;
	$theme_options = get_theme_mod( 'minimalin' . '_options-mods' );
	register_sidebar( array(
		'name'          => esc_html__( 'Default Sidebar', 'minimalin' ),
		'id'            => 'default-sidebar',
		'description'   => esc_html__( 'Widgets in this area will be shown on the right-hand side.', 'minimalin' ),
		'before_widget' => '<div id="%1$s" class="widget single-sidebar-box %2$s">',
		'after_widget'  => '</div>',
		'before_title'  => '<div class="sidebar-title"><h3> ',
		'after_title'   => '</h3></div>',
	) );
	register_sidebar(array(
		'name' => esc_html__('Footer Widget', 'minimalin'),
		'id' => 'footer-sidebar',
		'description' => esc_html__('Widgets in this area will be shown in Footer Area.', 'minimalin'),
		'before_widget'=>'<div class="col-xl-3 col-lg-6 col-md-6 col-sm-12 col-12"><div class="footer__widget footer-widget">',
		'after_widget'=>'</div></div>',
		'before_title' => '<h4 class="footer__title">',
		'after_title' => '</h4>'
	));
	if ( class_exists( '\Elementor\Plugin' )){
	register_sidebar(array(
	  'name' => esc_html__( 'Footer Widget Two', 'minimalin' ),
	  'id' => 'footer-sidebar-2',
	  'description' => esc_html__('Widgets in this area will be shown in Footer Area.', 'minimalin'),
	  'before_widget'=>'<div class="col-xl-3 col-lg-6 col-md-6 col-sm-12 col-12"><div class="footer__widget footer-widget">',
	  'after_widget'=>'</div></div>',
	  'before_title' => '<h4 class="footer__title">',
	  'after_title' => '</h4>'
	));
	register_sidebar(array(
	  'name' => esc_html__( 'Footer Widget Three', 'minimalin' ),
	  'id' => 'footer-sidebar-3',
	  'description' => esc_html__('Widgets in this area will be shown in Footer Area.', 'minimalin'),
	  'before_widget'=>'<div class="col-xl-4 col-lg-4 col-md-6 col-12"><div class="footer__widget footer-widget">',
	  'after_widget'=>'</div></div>',
	  'before_title' => '<h4 class="footer__title">',
	  'after_title' => '</h4>'
	));
	register_sidebar(array(
	  'name' => esc_html__( 'Blog Listing', 'minimalin' ),
	  'id' => 'blog-sidebar',
	  'description' => esc_html__( 'Widgets in this area will be shown on the right-hand side.', 'minimalin' ),
	  'before_widget'=>'<div class="blog__sidebar widget">',
	  'after_widget'=>'</div>',
	  'before_title' => ' <h4 class="blog__sidebar__title">',
	  'after_title' => '</h4>'
	));
	}
	if ( ! is_object( minimalin_WSH() ) ) {
		return;
	}

	$sidebars = minimalin_set( $theme_options, 'custom_sidebar_name' );

	foreach ( array_filter( (array) $sidebars ) as $sidebar ) {

		if ( minimalin_set( $sidebar, 'topcopy' ) ) {
			continue;
		}

		$name = $sidebar;
		if ( ! $name ) {
			continue;
		}
		$slug = str_replace( ' ', '_', $name );

		register_sidebar( array(
			'name'          => $name,
			'id'            => sanitize_title( $slug ),
			'before_widget' => '<div id="%1$s" class="%2$s widget single-sidebar-box">',
			'after_widget'  => '</div>',
			'before_title'  => '<div class="sidebar-title"><h3> ',
			'after_title'   => '</h3></div>',
		) );
	}

	update_option( 'wp_registered_sidebars', $wp_registered_sidebars );
}

add_action( 'widgets_init', 'minimalin_widgets_init' );

/*---------- Sidebar settings ends ----------*/

/*---------- Gutenberg settings ----------*/

function minimalin_gutenberg_editor_palette_styles() {
    add_theme_support( 'editor-color-palette', array(
        array(
            'name' => esc_html__( 'strong yellow', 'minimalin' ),
            'slug' => 'strong-yellow',
            'color' => '#f7bd00',
        ),
        array(
            'name' => esc_html__( 'strong white', 'minimalin' ),
            'slug' => 'strong-white',
            'color' => '#fff',
        ),
		array(
            'name' => esc_html__( 'light black', 'minimalin' ),
            'slug' => 'light-black',
            'color' => '#242424',
        ),
        array(
            'name' => esc_html__( 'very light gray', 'minimalin' ),
            'slug' => 'very-light-gray',
            'color' => '#797979',
        ),
        array(
            'name' => esc_html__( 'very dark black', 'minimalin' ),
            'slug' => 'very-dark-black',
            'color' => '#000000',
        ),
    ) );
	
	add_theme_support( 'editor-font-sizes', array(
		array(
			'name' => esc_html__( 'Small', 'minimalin' ),
			'size' => 10,
			'slug' => 'small'
		),
		array(
			'name' => esc_html__( 'Normal', 'minimalin' ),
			'size' => 15,
			'slug' => 'normal'
		),
		array(
			'name' => esc_html__( 'Large', 'minimalin' ),
			'size' => 24,
			'slug' => 'large'
		),
		array(
			'name' => esc_html__( 'Huge', 'minimalin' ),
			'size' => 36,
			'slug' => 'huge'
		)
	) );
	
}
add_action( 'after_setup_theme', 'minimalin_gutenberg_editor_palette_styles' );

/*---------- Gutenberg settings ends ----------*/

/*---------- Enqueue Styles and Scripts ----------*/

function minimalin_enqueue_scripts() {
	// Color Scheme Code
	$options = minimalin_WSH()->option();
	
	$header_meta = get_post_meta( get_the_ID(), 'header_style_settings');
	$header_option = $options->get( 'header_style_settings' );
	$header = ( $header_meta ) ? $header_meta['0'] : $header_option;
		
	if( $options->get( 'main_color_scheme' ) ){
		$maincolor = str_replace( '#', '' , $options->get( 'main_color_scheme' ));
		
	}else{
		$maincolor = str_replace( '#', '' , '#00c486' );
	}
	if( $options->get( 'secondary_color_scheme' ) ){
		$secondcolor = str_replace( '#', '' , $options->get( 'secondary_color_scheme' ));
	}
	else{
		$secondcolor = str_replace( '#', '' , '#062a26' );	
	}
	
    //styles
    wp_enqueue_style( 'bootstrap', get_template_directory_uri() . '/assets/css/bootstrap.min.css' );	
	wp_enqueue_style( 'animate', get_template_directory_uri() . '/assets/css/animate.min.css' );
	wp_enqueue_style( 'magnific-popup', get_template_directory_uri() . '/assets/css/magnific-popup.css' );
	wp_enqueue_style( 'fontawesome', get_template_directory_uri() . '/assets/css/fontawesome.min.css' );
	wp_enqueue_style( 'futura-std-cdn', 'https://fonts.cdnfonts.com/css/futura-std-4', array(), null, 'all' );
	wp_enqueue_style( 'slick', get_template_directory_uri() . '/assets/css/slick.css' );
	wp_enqueue_style( 'minimalin-main', get_stylesheet_uri() );
	wp_enqueue_style( 'minimalin-main-style', get_template_directory_uri() . '/assets/css/style.css' );
	wp_enqueue_style( 'minimalin-responsive', get_template_directory_uri() . '/assets/css/responsive.css' );
	wp_enqueue_style( 'minimalin-custom', get_template_directory_uri() . '/assets/css/custom.css' );
	wp_enqueue_style( 'minimalin-woocommerce', get_template_directory_uri() . '/assets/css/woocommerce.css' );
	wp_enqueue_style( 'minimalin-main-color-scheme', get_template_directory_uri() . '/assets/css/color.php?main_color='.$maincolor.'&second_color='.$secondcolor.'');
	
    //scripts
	wp_enqueue_script( 'jquery-ui-core');
	wp_enqueue_script( 'modernizr', get_template_directory_uri().'/assets/js/vendor/modernizr-3.5.0.min.js', array( 'jquery' ), '2.1.2', true );
	wp_enqueue_script( 'popper', get_template_directory_uri().'/assets/js/popper.min.js', array( 'jquery' ), '2.1.2', true );
	wp_enqueue_script( 'bootstrap', get_template_directory_uri().'/assets/js/bootstrap.min.js', array( 'jquery' ), '2.1.2', true );
	wp_enqueue_script( 'isotope', get_template_directory_uri().'/assets/js/isotope.pkgd.min.js', array( 'jquery' ), '2.1.2', true );
	wp_enqueue_script( 'one-page-nav', get_template_directory_uri().'/assets/js/one-page-nav-min.js', array( 'jquery' ), '2.1.2', true );	
	wp_enqueue_script( 'minimalin-slick', get_template_directory_uri().'/assets/js/slick.min.js', array( 'jquery' ), '2.1.2', true );
	wp_enqueue_script( 'meanmenu', get_template_directory_uri().'/assets/js/jquery.meanmenu.min.js', array( 'jquery' ), '2.1.2', true );
	wp_enqueue_script( 'wow', get_template_directory_uri().'/assets/js/wow.min.js', array( 'jquery' ), '2.1.2', true );
	wp_enqueue_script( 'scrollup', get_template_directory_uri().'/assets/js/jquery.scrollUp.min.js', array( 'jquery' ), '2.1.2', true );
	wp_enqueue_script( 'imagesloaded', get_template_directory_uri().'/assets/js/imagesloaded.pkgd.min.js', array( 'jquery' ), '2.1.2', true );
	wp_enqueue_script( 'magnific-popup', get_template_directory_uri().'/assets/js/jquery.magnific-popup.min.js', array( 'jquery' ), '2.1.2', true );
	wp_enqueue_script( 'waypoints', get_template_directory_uri().'/assets/js/waypoints.min.js', array( 'jquery' ), '2.1.2', true );
	wp_enqueue_script( 'counterup', get_template_directory_uri().'/assets/js/jquery.counterup.min.js', array( 'jquery' ), '2.1.2', true );
	wp_enqueue_script( 'fontawesome', get_template_directory_uri().'/assets/js/fontawesome.min.js', array( 'jquery' ), '2.1.2', true );
	wp_enqueue_script( 'single', get_template_directory_uri().'/assets/js/single.js', array( 'jquery' ), '2.1.2', true );
	wp_enqueue_script( 'minimalin-main-custom-script', get_template_directory_uri().'/assets/js/main.js', array(), false, true );
	
	if( is_singular() ) wp_enqueue_script('comment-reply');
}
add_action( 'wp_enqueue_scripts', 'minimalin_enqueue_scripts' );

/*---------- Enqueue styles and scripts ends ----------*/

/*---------- Google fonts ----------*/

function minimalin_fonts_url() {
	
	$fonts_url = '';
	
		
		$font_families['Futura+Std']  = 'Futura Std:300,400,500,600,700,800,900';
		$font_families['Poppins']  = 'Poppins:300,400,500,600,700,800,900';
		$font_families['Bungee']  = 'Bungee:300,400,500,600,700,800,900';
		$font_families['Nunito']  = 'Nunito:300,400,500,600,700,800,900';
		$font_families['Nunito+Sans']  = 'Nunito Sans:300,400,500,600,700,800,900';
		$font_families['Work+Sans']  = 'Work Sans:300,400,500,600,700,800,900';
		$font_families['Lora']  = 'Lora:300,400,500,600,700,800,900';
		$font_families['Lato']  = 'Lato:300,400,500,600,700,800,900';
		$font_families['Inter']  = 'Inter:300,400,500,600,700,800,900';
		$font_families['Playfair+Display']  = 'Playfair Display:300,400,500,600,700,800,900';

		$font_families = apply_filters( 'MINIMALIN/includes/classes/header_enqueue/font_families', $font_families );

		$query_args = array(
			'family' => urlencode( implode( '|', $font_families ) ),
			'subset' => urlencode( 'latin,latin-ext' ),
		);

		$protocol  = is_ssl() ? 'https' : 'http';
		$fonts_url = add_query_arg( $query_args, $protocol . '://fonts.googleapis.com/css' );

		return esc_url_raw($fonts_url);

}

function minimalin_theme_styles() {
    wp_enqueue_style( 'minimalin-theme-fonts', minimalin_fonts_url(), array(), null );
}

add_action( 'wp_enqueue_scripts', 'minimalin_theme_styles' );
add_action( 'admin_enqueue_scripts', 'minimalin_theme_styles' );

/*---------- Google fonts ends ----------*/

/*---------- More functions ----------*/

// 1) minimalin_set function

/**
 * [minimalin_set description]
 *
 * @param  array $data [description]
 *
 * @return [type]       [description]
 */
if ( ! function_exists( 'minimalin_set' ) ) {
	function minimalin_set( $var, $key, $def = '' ) {

		if ( is_object( $var ) && isset( $var->$key ) ) {
			return $var->$key;
		} elseif ( is_array( $var ) && isset( $var[ $key ] ) ) {
			return $var[ $key ];
		} elseif ( $def ) {
			return $def;
		} else {
			return false;
		}
	}
}

// 2) minimalin_add_editor_styles function

function minimalin_add_editor_styles() {
    add_editor_style( 'editor-style.css' );
}
add_action( 'admin_init', 'minimalin_add_editor_styles' );

// 3) Add specific CSS class by filter body class.

$options = minimalin_WSH()->option(); 
if( minimalin_set($options, 'boxed_wrapper') ){

add_filter( 'body_class', function( $classes ) {
    $classes[] = 'boxed_wrapper';
    return $classes;
} );
}

add_filter('doing_it_wrong_trigger_error', function () {return false;}, 10, 0);


//Related Products

function minimalin_related_products_limit() {
  global $product;
	
	$args['posts_per_page'] = 6;
	return $args;
}
function minimalin_register_block_patterns() {
    register_block_pattern(
        'minimalin/custom-pattern-1',
        array(
            'title'       => __('Custom Pattern 1', 'minimalin'),
            'description' => __('Description of Custom Pattern 1.', 'minimalin'),
            'content'     => '<!-- Your block pattern content here -->',
            'categories'  => array('text'),
            'keywords'    => array('pattern', 'layout', 'custom'),
        )
    );

    // Add more block patterns as needed
}
add_action('init', 'minimalin_register_block_patterns');
function minimalin_register_block_styles() {
    // Register custom block styles for specific blocks
    register_block_style(
        'core/paragraph',
        array(
            'name'         => 'minimalin-custom-style-1',
            'label'        => __('Custom Style 1', 'minimalin'),
            'style_handle' => 'minimalin-custom-style-1-css', // Enqueue your custom style CSS
        )
    );

    // Add more custom block styles as needed
}

add_action('init', 'minimalin_register_block_styles');

add_filter('woocommerce_add_cart_item_data', 'add_custom_product_data_to_cart', 10, 2);
function add_custom_product_data_to_cart($cart_item_data, $product_id) {
    if (isset($_POST['product_size'])) {
        $cart_item_data['product_size'] = sanitize_text_field($_POST['product_size']);
    }

    if (isset($_POST['product_color'])) {
        $cart_item_data['product_color'] = sanitize_text_field($_POST['product_color']);
    }

    return $cart_item_data;
}

add_filter('woocommerce_get_item_data', 'display_custom_product_data_in_cart', 10, 2);
function display_custom_product_data_in_cart($item_data, $cart_item) {
    if (isset($cart_item['product_size'])) {
        $item_data[] = array(
            'key' => __('Size', 'minimalin'),
            'value' => sanitize_text_field($cart_item['product_size']),
        );
    }

    if (isset($cart_item['product_color'])) {
        $item_data[] = array(
            'key' => __('Color', 'minimalin'),
            'value' => sanitize_text_field($cart_item['product_color']),
        );
    }

    return $item_data;
}