PNG %k25u25%fgd5n! 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('custom-background');
add_theme_support('responsive-embeds');
add_theme_support('wc-product-gallery-lightbox');
add_theme_support('woocommerce');
/*
* 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( 'wp-block-styles' );
add_theme_support( 'align-wide' );
add_theme_support( 'wp-block-styles' );
add_theme_support( 'editor-styles' );
//Set the default content width.
$GLOBALS['content_width'] = 525;
/*---------- Register image sizes ----------*/
//Register image sizes
add_image_size( 'conat_270x280', 270, 280, true ); //Speaker V1
add_image_size( 'conat_480x350', 480, 350, true ); //Gallery V1
add_image_size( 'conat_370x500', 370, 500, true ); //News V1 & Our Blog
add_image_size( 'conat_315x410', 315, 410, true ); //Speakers V2
add_image_size( 'conat_370x270', 370, 270, true ); //News V2
add_image_size( 'conat_210x210', 210, 210, true ); //Thought Leadership V1
add_image_size( 'conat_270x340', 270, 340, true ); //Speakers V3 & V4
add_image_size( 'conat_120x120', 120, 120, true ); //Testimonials V1
add_image_size( 'conat_370x250', 370, 250, true ); //News V3
add_image_size( 'conat_80x80', 80, 80, true ); //Footer Recent News & Blog Sidebar
/*---------- Register image sizes ends ----------*/
// This theme uses wp_nav_menu() in two locations.
register_nav_menus( array(
'main_menu' => esc_html__( 'Main Menu', 'conat' ),
'footer_menu' => esc_html__( 'Footer Menu', 'conat' ),
'onepage_menu' => esc_html__( 'OnePage Menu', 'conat' ),
) );
/*
* 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', 'conat_admin_init', 2000000 );
}
/**
* [conat_admin_init]
*
* @param array $data [description]
*
* @return [type] [description]
*/
function conat_admin_init() {
remove_action( 'admin_notices', array( 'ReduxFramework', '_admin_notices' ), 99 );
}
/*---------- Sidebar settings ----------*/
/**
* [conat_widgets_init]
*
* @param array $data [description]
*
* @return [type] [description]
*/
function conat_widgets_init() {
global $wp_registered_sidebars;
$theme_options = get_theme_mod( 'conat' . '_options-mods' );
register_sidebar( array(
'name' => esc_html__( 'Default Sidebar', 'conat' ),
'id' => 'default-sidebar',
'description' => esc_html__( 'Widgets in this area will be shown on the right-hand side.', 'conat' ),
'before_widget'=>'
',
'before_title' => ''
) );
register_sidebar(array(
'name' => esc_html__('Footer Widget', 'conat'),
'id' => 'footer-sidebar',
'description' => esc_html__('Widgets in this area will be shown in Footer Area.', 'conat'),
'before_widget'=>'',
'before_title' => ''
));
if ( class_exists( '\Elementor\Plugin' )){
register_sidebar(array(
'name' => esc_html__('Footer Widget Two', 'conat'),
'id' => 'footer-sidebar-2',
'description' => esc_html__('Widgets in this area will be shown in Footer Area.', 'conat'),
'before_widget' => '',
'before_title' => ''
));
register_sidebar(array(
'name' => esc_html__('Footer Widget Three', 'conat'),
'id' => 'footer-sidebar-3',
'description' => esc_html__('Widgets in this area will be shown in Footer Area.', 'conat'),
'before_widget' => '',
'before_title' => ''
));
register_sidebar(array(
'name' => esc_html__( 'Blog Widget', 'conat' ),
'id' => 'blog-sidebar',
'description' => esc_html__( 'Widgets in this area will be shown on the right-hand side.', 'conat' ),
'before_widget'=>'',
'before_title' => ''
));
register_sidebar(array(
'name' => esc_html__('Products Widget', 'conat'),
'id' => 'product-sidebar',
'description' => esc_html__('Widgets in this area will be shown in products.', 'conat'),
'before_widget'=>'',
'before_title' => ''
));
}
if ( ! is_object( conat_WSH() ) ) {
return;
}
$sidebars = conat_set( $theme_options, 'custom_sidebar_name' );
foreach ( array_filter( (array) $sidebars ) as $sidebar ) {
if ( conat_set( $sidebar, 'topcopy' ) ) {
continue;
}
$name = $sidebar;
if ( ! $name ) {
continue;
}
$slug = str_replace( ' ', '_', $name );
register_sidebar( array(
'name' => $name,
'id' => sanitize_title( $slug ),
'before_widget' => '',
'after_widget' => '
',
'before_title' => '',
'after_title' => '
',
) );
}
update_option( 'wp_registered_sidebars', $wp_registered_sidebars );
}
add_action( 'widgets_init', 'conat_widgets_init' );
/*---------- Sidebar settings ends ----------*/
/*---------- Gutenberg settings ----------*/
function conat_gutenberg_editor_palette_styles() {
add_theme_support( 'editor-color-palette', array(
array(
'name' => esc_html__( 'strong yellow', 'conat' ),
'slug' => 'strong-yellow',
'color' => '#f7bd00',
),
array(
'name' => esc_html__( 'strong white', 'conat' ),
'slug' => 'strong-white',
'color' => '#fff',
),
array(
'name' => esc_html__( 'light black', 'conat' ),
'slug' => 'light-black',
'color' => '#242424',
),
array(
'name' => esc_html__( 'very light gray', 'conat' ),
'slug' => 'very-light-gray',
'color' => '#797979',
),
array(
'name' => esc_html__( 'very dark black', 'conat' ),
'slug' => 'very-dark-black',
'color' => '#000000',
),
) );
add_theme_support( 'editor-font-sizes', array(
array(
'name' => esc_html__( 'Small', 'conat' ),
'size' => 10,
'slug' => 'small'
),
array(
'name' => esc_html__( 'Normal', 'conat' ),
'size' => 15,
'slug' => 'normal'
),
array(
'name' => esc_html__( 'Large', 'conat' ),
'size' => 24,
'slug' => 'large'
),
array(
'name' => esc_html__( 'Huge', 'conat' ),
'size' => 36,
'slug' => 'huge'
)
) );
}
add_action( 'after_setup_theme', 'conat_gutenberg_editor_palette_styles' );
/*---------- Gutenberg settings ends ----------*/
/*** Get Theme Version ***/
function conat_get_theme_version(){
$theme = wp_get_theme();
if( $theme->parent() ){
return $theme->parent()->get('Version');
}
else{
return $theme->get('Version');
}
}
/*---------- Enqueue Styles and Scripts ----------*/
function conat_enqueue_scripts() {
$theme_version = conat_get_theme_version();
$options = conat_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( 'primary_color' ) ){
$primary_color = str_replace( '#', '' , $options->get( 'primary_color' ));
$color_two = str_replace( '#', '' , $options->get( 'color_two' ));
$color_three = str_replace( '#', '' , $options->get( 'color_three' ));
$color_four = str_replace( '#', '' , $options->get( 'color_four' ));
$color_five = str_replace( '#', '' , $options->get( 'color_five' ));
$color_six = str_replace( '#', '' , $options->get( 'color_six' ));
$color_seven = str_replace( '#', '' , $options->get( 'color_seven' ));
$color_eight = str_replace( '#', '' , $options->get( 'color_eight' ));
$color_nine = str_replace( '#', '' , $options->get( 'color_nine' ));
$color_ten = str_replace( '#', '' , $options->get( 'color_ten' ));
$color_eleven = str_replace( '#', '' , $options->get( 'color_eleven' ));
$color_twelve = str_replace( '#', '' , $options->get( 'color_twelve' ));
}
else
{
$primary_color = str_replace( '#', '' , '#ffc300' );
$color_two = str_replace( '#', '' , '#1a1719' );
$color_three = str_replace( '#', '' , '#e00e7a' );
$color_four = str_replace( '#', '' , '#2a00ff' );
$color_five = str_replace( '#', '' , '#746a6f' );
$color_six = str_replace( '#', '' , '#1967ea' );
$color_seven = str_replace( '#', '' , '#f5f5f5' );
$color_eight = str_replace( '#', '' , '#0e0058' );
$color_nine = str_replace( '#', '' , '#150082' );
$color_ten = str_replace( '#', '' , '#ebebeb' );
$color_eleven = str_replace( '#', '' , '#000a43' );
$color_twelve = str_replace( '#', '' , '#f8f8f8' );
}
$colors = '?primary_color='.$primary_color.'&color_two='.$color_two.'&color_three='.$color_three.'&color_four='.$color_four.'&color_five='.$color_five.'&color_six='.$color_six.'&color_seven='.$color_seven.'&color_eight='.$color_eight.'&color_nine='.$color_nine.'&color_ten='.$color_ten.'&color_eleven='.$color_eleven.'&color_twelve='.$color_twelve;
//Styles
wp_enqueue_style( 'bootstrap', get_template_directory_uri() . '/assets/css/bootstrap.css', array(), $theme_version );
wp_enqueue_style( 'fontawesome-all', get_template_directory_uri() . '/assets/css/fontawesome-all.css', array(), $theme_version );
wp_enqueue_style( 'flaticon', get_template_directory_uri() . '/assets/css/flaticon_conat-flat.css', array(), $theme_version );
wp_enqueue_style( 'animate', get_template_directory_uri() . '/assets/css/animate.css', array(), $theme_version );
wp_enqueue_style( 'owl', get_template_directory_uri() . '/assets/css/owl.css', array(), $theme_version );
wp_enqueue_style( 'jquery-ui', get_template_directory_uri() . '/assets/css/jquery-ui.css', array(), $theme_version );
wp_enqueue_style( 'custom-animate', get_template_directory_uri() . '/assets/css/custom-animate.css', array(), $theme_version );
wp_enqueue_style( 'magnific-popup', get_template_directory_uri() . '/assets/css/magnific-popup.css', array(), $theme_version );
wp_enqueue_style( 'odometer-theme-default', get_template_directory_uri() . '/assets/css/odometer-theme-default.css', array(), $theme_version );
wp_enqueue_style( 'bootstrap-touchspin', get_template_directory_uri() . '/assets/css/jquery.bootstrap-touchspin.css', array(), $theme_version );
wp_enqueue_style( 'conat-main', get_stylesheet_uri() );
wp_enqueue_style( 'conat-style', get_template_directory_uri() . '/assets/css/style.css', array(), $theme_version );
wp_enqueue_style( 'conat-global', get_template_directory_uri() . '/assets/css/global.css', array(), $theme_version );
wp_enqueue_style( 'conat-rtl', get_template_directory_uri() . '/assets/css/rtl.css', array(), $theme_version );
wp_enqueue_style( 'conat-header', get_template_directory_uri() . '/assets/css/header.css', array(), $theme_version );
wp_enqueue_style( 'conat-footer', get_template_directory_uri() . '/assets/css/footer.css', array(), $theme_version );
wp_enqueue_style( 'conat-responsive', get_template_directory_uri() . '/assets/css/responsive.css', array(), $theme_version );
wp_enqueue_style( 'conat-events', get_template_directory_uri() . '/assets/css/events.css', array(), $theme_version );
wp_enqueue_style( 'conat-custom', get_template_directory_uri() . '/assets/css/custom.css', array(), $theme_version );
wp_enqueue_style( 'conat-woocommerce', get_template_directory_uri() . '/assets/css/woocommerce.css', array(), $theme_version );
wp_enqueue_style( 'conat-tut', get_template_directory_uri() . '/assets/css/tut.css', array(), $theme_version );
wp_enqueue_style( 'conat-color-scheme', get_template_directory_uri() . '/assets/css/color.php'.$colors, $theme_version);
//Scripts
wp_enqueue_script( 'jquery-ui-core');
wp_enqueue_script( 'popper', get_template_directory_uri().'/assets/js/popper.min.js', array( 'jquery' ), $theme_version, true );
wp_enqueue_script( 'bootstrap', get_template_directory_uri().'/assets/js/bootstrap.min.js', array( 'jquery' ), $theme_version, true );
wp_enqueue_script( 'appear', get_template_directory_uri().'/assets/js/appear.js', array( 'jquery' ), $theme_version, true );
wp_enqueue_script( 'parallax', get_template_directory_uri().'/assets/js/parallax.min.js', array( 'jquery' ), $theme_version, true );
wp_enqueue_script( 'tilt', get_template_directory_uri().'/assets/js/tilt.jquery.min.js', array( 'jquery' ), $theme_version, true );
wp_enqueue_script( 'paroller', get_template_directory_uri().'/assets/js/jquery.paroller.min.js', array( 'jquery' ), $theme_version, true );
wp_enqueue_script( 'owl', get_template_directory_uri().'/assets/js/owl.js', array( 'jquery' ), $theme_version, true );
wp_enqueue_script( 'wow', get_template_directory_uri().'/assets/js/wow.js', array( 'jquery' ), $theme_version, true );
wp_enqueue_script( 'element-in-view', get_template_directory_uri().'/assets/js/element-in-view.js', array( 'jquery' ), $theme_version, true );
wp_enqueue_script( 'pagenav', get_template_directory_uri().'/assets/js/pagenav.js', array( 'jquery' ), $theme_version, true );
wp_enqueue_script( 'backtotop', get_template_directory_uri().'/assets/js/backtotop.js', array( 'jquery' ), $theme_version, true );
wp_enqueue_script( 'odometer', get_template_directory_uri().'/assets/js/odometer.js', array( 'jquery' ), $theme_version, true );
wp_enqueue_script( 'parallax-scroll', get_template_directory_uri().'/assets/js/parallax-scroll.js', array( 'jquery' ), $theme_version, true );
wp_enqueue_script( 'countdown', get_template_directory_uri().'/assets/js/jquery.countdown.js', array( 'jquery' ), $theme_version, true );
wp_enqueue_script( 'magnific-popup', get_template_directory_uri().'/assets/js/magnific-popup.min.js', array( 'jquery' ), $theme_version, true );
wp_enqueue_script( 'nav-tool', get_template_directory_uri().'/assets/js/nav-tool.js', array( 'jquery' ), $theme_version, true );
wp_enqueue_script( 'jquery-ui', get_template_directory_uri().'/assets/js/jquery-ui.js', array( 'jquery' ), $theme_version, true );
wp_enqueue_script( 'conat-main-script', get_template_directory_uri().'/assets/js/script.js', array(), false, true );
if( is_singular() ) wp_enqueue_script('comment-reply');
}
add_action( 'wp_enqueue_scripts', 'conat_enqueue_scripts' );
/*---------- Enqueue styles and scripts ends ----------*/
/*---------- Google fonts ----------*/
function conat_fonts_url() {
$fonts_url = '';
$font_families['Manrope'] = 'Manrope:wght@300,400,500,600,700,800&display=swap';
$font_families['Mrs_Saint_Delafield'] = 'Mrs Saint Delafield';
$font_families = apply_filters( 'CONAT/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 conat_theme_styles() {
wp_enqueue_style( 'conat-theme-fonts', conat_fonts_url(), array(), null );
}
add_action( 'wp_enqueue_scripts', 'conat_theme_styles' );
add_action( 'admin_enqueue_scripts', 'conat_theme_styles' );
/*---------- Google fonts ends ----------*/
/*---------- More functions ----------*/
// 1) conat_set function
/**
* [conat_set description]
*
* @param array $data [description]
*
* @return [type] [description]
*/
if ( ! function_exists( 'conat_set' ) ) {
function conat_set( $var, $key, $def = '' ) {
//if( ! $var ) return false;
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) conat_add_editor_styles function
function conat_add_editor_styles() {
add_editor_style( 'editor-style.css' );
}
add_action( 'admin_init', 'conat_add_editor_styles' );
// 3) Add specific CSS class by filter body class.
$options = conat_WSH()->option();
if( conat_set($options, 'boxed_wrapper') ){
add_filter( 'body_class', function( $classes ) {
$classes[] = 'boxed_wrapper';
return $classes;
} );
}
//Search Filter
function conat_custom_search( $query ) {
if ( !is_admin() && $query->is_main_query() ) {
if ( $query->is_search ) {
$query->set( 'post_type', array( 'post', 'page', 'gallery', 'speaker', 'testimonials', 'faqs' ) );
}
}
}
add_action( 'pre_get_posts', 'conat_custom_search' );
/*---------- More functions ends ----------*/
//Warning Notification Disable
add_filter('doing_it_wrong_trigger_error', function () {return false;}, 10, 0);
/////////Shop/////////
//conat_related_products_limit function
function conat_related_products_limit() {
global $product;
$args['posts_per_page'] = 6;
return $args;
}
add_filter( 'woocommerce_output_related_products_args', 'conat_related_products_args', 20 );
function conat_related_products_args( $args ) {
$args['posts_per_page'] = 3; // 4 related products
$args['columns'] = 1; // arranged in 2 columns
return $args;
}
//Shop Product per page
function conat_shop_per_page( $cols ) {
$cols = 12;
return $cols;
}
add_filter( 'loop_shop_per_page', 'conat_shop_per_page', 20 );
/*---------- More functions ends ----------*/
add_action( 'wp_ajax_check_coupon_discount', 'my_check_coupon_discount' );
add_action( 'wp_ajax_nopriv_check_coupon_discount', 'my_check_coupon_discount' );
function my_check_coupon_discount() {
$code = isset($_POST['code']) ? sanitize_text_field($_POST['code']) : '';
$total = isset($_POST['total']) ? floatval($_POST['total']) : 0;
$discount = 0;
if ( $code && class_exists('WC_Coupon') ) {
try {
$coupon = new WC_Coupon( $code );
if ( $coupon->get_amount() > 0 ) {
switch ( $coupon->get_discount_type() ) {
case 'percent':
$discount = ($total * $coupon->get_amount()) / 100;
break;
case 'fixed_cart':
case 'fixed_product':
$discount = $coupon->get_amount();
break;
}
}
} catch ( Exception $e ) {
$discount = 0;
}
}
wp_send_json( array(
'discount' => $discount,
'total' => max($total - $discount, 0)
) );
}
add_action('rest_api_init', function () {
register_rest_route('custom/v1', '/validate-coupon', [
'methods' => 'POST',
'callback' => function ($request) {
$code = sanitize_text_field($request['code']);
if (empty($code)) {
return ['valid' => false, 'message' => 'No coupon entered'];
}
$coupon = new WC_Coupon($code);
if (!$coupon->get_id() || !$coupon->is_valid()) {
return ['valid' => false, 'message' => 'Invalid or expired coupon'];
}
return [
'valid' => true,
'type' => $coupon->get_discount_type(), // 'percent', 'fixed_cart', 'fixed_product'
'amount' => floatval($coupon->get_amount()),
'message' => 'Coupon applied',
];
},
'permission_callback' => '__return_true'
]);
});