/** * Theme functions and definitions. * * Sets up the theme and provides some helper functions * * When using a child theme (see https://codex.wordpress.org/Theme_Development * and https://codex.wordpress.org/Child_Themes), you can override certain * functions (those wrapped in a function_exists() call) by defining them first * in your child theme's functions.php file. The child theme's functions.php * file is included before the parent theme's file, so the child theme * functions would be used. * * * For more information on hooks, actions, and filters, * see https://codex.wordpress.org/Plugin_API * * @package Modarch WordPress theme */ if ( ! defined( 'ABSPATH' ) ) { exit; // Exit if accessed directly } if(!defined('MODARCH_THEME_VERSION')){ define('MODARCH_THEME_VERSION', '1.0.0'); } if(!class_exists('Modarch_Theme_Class')){ final class Modarch_Theme_Class { /** * @var string $template_dir_path */ public static $template_dir_path = ''; /** * @var string $template_dir_url */ public static $template_dir_url = ''; /** * @var Modarch_Ajax_Manager $ajax_manager; */ public $ajax_manager; /** * @var string $extra_style */ protected $extra_style = ''; /** * A reference to an instance of this class. * * @since 1.0.0 * @access private * @var object */ private static $instance = null; /** * Main Theme Class Constructor * * @since 1.0.0 */ public function __construct() { self::$template_dir_path = get_template_directory(); self::$template_dir_url = get_template_directory_uri(); // Define constants add_action( 'after_setup_theme', array( $this, 'constants' ), 0 ); // Load all core theme function files add_action( 'after_setup_theme', array( $this, 'include_functions' ), 1 ); // Load configuration classes add_action( 'after_setup_theme', array( $this, 'configs' ), 3 ); // Load framework classes add_action( 'after_setup_theme', array( $this, 'classes' ), 4 ); // Setup theme => add_theme_support: register_nav_menus, load_theme_textdomain, etc add_action( 'after_setup_theme', array( $this, 'theme_setup' ) ); add_action( 'after_setup_theme', array( $this, 'theme_setup_default' ) ); // register sidebar widget areas add_action( 'widgets_init', array( $this, 'register_sidebars' ) ); /** Admin only actions **/ if( is_admin() ) { // Load scripts in the WP admin add_action( 'admin_enqueue_scripts', array( $this, 'admin_scripts' ) ); add_action( 'elementor/editor/before_enqueue_scripts', array( $this, 'admin_scripts' ) ); add_action( 'enqueue_block_assets', array( $this, 'admin_scripts' ) ); } /** Non Admin actions **/ else{ // Load theme CSS add_action( 'wp_enqueue_scripts', array( $this, 'theme_css' ) ); // Load theme js add_action( 'wp_enqueue_scripts', array( $this, 'theme_js' ), 99 ); // Add a pingback url auto-discovery header for singularly identifiable articles add_action( 'wp_head', array( $this, 'pingback_header' ), 1 ); // Add meta viewport tag to header add_action( 'wp_head', array( $this, 'meta_viewport' ), 1 ); // Add meta apple web app capable tag to header add_action( 'wp_head', array( $this, 'apple_mobile_web_app_capable_header' ), 1 ); // Add an X-UA-Compatible header add_filter( 'wp_headers', array( $this, 'x_ua_compatible_headers' ) ); // Add support for Elementor Pro locations add_action( 'elementor/theme/register_locations', array( $this, 'register_elementor_locations' ) ); // Load External Resources add_action( 'wp_footer', array( $this, 'load_external_resources' ) ); } add_action( 'elementor/init', array( $this, 'register_breakpoint' ) ); require_once get_theme_file_path('/framework/classes/ajax-manager.php'); $this->ajax_manager = new Modarch_Ajax_Manager(); } public static function get_instance() { // If the single instance hasn't been set, set it now. if ( null == self::$instance ) { self::$instance = new self; } return self::$instance; } /** * Define Constants * * @since 1.0.0 */ public function constants() {} /** * Load all core theme function files * * @since 1.0.0 */ public function include_functions() { require_once get_theme_file_path('/framework/functions/helpers.php'); require_once get_theme_file_path('/framework/functions/theme-hooks.php'); require_once get_theme_file_path('/framework/functions/theme-functions.php'); require_once get_theme_file_path('/framework/third/lastudio-kit.php'); require_once get_theme_file_path('/framework/third/give.php'); } /** * Configs for 3rd party plugins. * * @since 1.0.0 */ public function configs() { // WooCommerce if(function_exists('WC')){ require_once get_theme_file_path('/framework/woocommerce/woocommerce-config.php'); } } /** * Load theme classes * * @since 1.0.0 */ public function classes() { // Admin only classes if ( is_admin() ) { // Recommend plugins require_once get_theme_file_path('/tgm/class-tgm-plugin-activation.php'); require_once get_theme_file_path('/tgm/tgm-plugin-activation.php'); } require_once get_theme_file_path('/framework/classes/admin.php'); // Breadcrumbs class require_once get_theme_file_path('/framework/classes/breadcrumbs.php'); new Modarch_Admin(); } /** * Theme Setup * * @since 1.0.0 */ public function theme_setup() { $ext = apply_filters('modarch/use_minify_css_file', false) || ( defined('WP_DEBUG') && WP_DEBUG ) ? '' : '.min'; // Load text domain load_theme_textdomain( 'modarch', self::$template_dir_path .'/languages' ); // Get globals global $content_width; // Set content width based on theme's default design if ( ! isset( $content_width ) ) { $content_width = 1200; } // Register navigation menus register_nav_menus( array( 'main-nav' => esc_attr_x( 'Main Navigation', 'admin-view', 'modarch' ) ) ); // Enable support for Post Formats add_theme_support( 'post-formats', array( 'video', 'gallery', 'audio', 'quote', 'link' ) ); // Enable support for tag add_theme_support( 'title-tag' ); // Add default posts and comments RSS feed links to head add_theme_support( 'automatic-feed-links' ); // Enable support for Post Thumbnails on posts and pages add_theme_support( 'post-thumbnails' ); /** * Enable support for header image */ add_theme_support( 'custom-header', apply_filters( 'modarch/filter/custom_header_args', array( 'width' => 2000, 'height' => 1200, 'flex-height' => true, 'video' => true, ) ) ); add_theme_support( 'custom-background' ); // Declare WooCommerce support. add_theme_support( 'woocommerce' ); if( modarch_string_to_bool( modarch_get_theme_mod('woocommerce_gallery_zoom') ) ){ add_theme_support( 'wc-product-gallery-zoom'); } if( modarch_string_to_bool( modarch_get_theme_mod('woocommerce_gallery_lightbox') ) ){ add_theme_support( 'wc-product-gallery-lightbox'); } add_theme_support( 'wc-product-gallery-slider'); // Support WP Job Manager add_theme_support( 'job-manager-templates' ); // Add editor style add_editor_style( 'assets/css/editor-style.css' ); // Adding Gutenberg support add_theme_support( 'align-wide' ); add_theme_support( 'wp-block-styles' ); add_theme_support( 'responsive-embeds' ); add_theme_support( 'editor-styles' ); add_editor_style( 'assets/css/gutenberg-editor.css' ); add_theme_support( 'editor-color-palette', array( array( 'name' => esc_attr_x( 'pale pink', 'admin-view', 'modarch' ), 'slug' => 'pale-pink', 'color' => '#f78DA7', ), array( 'name' => esc_attr_x( 'theme primary', 'admin-view', 'modarch' ), 'slug' => 'modarch-theme-primary', 'color' => '#FF7F1D', ), array( 'name' => esc_attr_x( 'theme secondary', 'admin-view', 'modarch' ), 'slug' => 'modarch-theme-secondary', 'color' => '#303030', ), array( 'name' => esc_attr_x( 'strong magenta', 'admin-view', 'modarch' ), 'slug' => 'strong-magenta', 'color' => '#A156B4', ), array( 'name' => esc_attr_x( 'light grayish magenta', 'admin-view', 'modarch' ), 'slug' => 'light-grayish-magenta', 'color' => '#D0A5DB', ), array( 'name' => esc_attr_x( 'very light gray', 'admin-view', 'modarch' ), 'slug' => 'very-light-gray', 'color' => '#EEEEEE', ), array( 'name' => esc_attr_x( 'very dark gray', 'admin-view', 'modarch' ), 'slug' => 'very-dark-gray', 'color' => '#444444', ), ) ); remove_theme_support( 'widgets-block-editor' ); add_theme_support('lastudio', [ 'lakit-swatches' => true, 'revslider' => true, 'header-builder' => [ 'menu' => true, 'header-vertical' => true ], 'lastudio-kit' => true, 'elementor' => [ 'advanced-carousel' => false, 'ajax-templates' => false, 'css-transform' => false, 'floating-effects' => false, 'wrapper-links' => false, 'lastudio-icon' => true, 'custom-fonts' => true, 'mega-menu' => true, 'product-grid-v2' => true, 'slides-v2' => true, 'inline-icon' => true, 'cart-fragments' => true, 'swiper-dotv2' => true, 'optimize-bnlist' => true, 'newsletter-v2' => true, ], 'e_dynamic_tags' => [ 'wishlist' => true, 'compare' => true, 'cart' => true, 'search' => true, 'my-account' => true, ] ]); } /** * Theme Setup Default * * @since 1.0.0 */ public function theme_setup_default(){ $check_theme = get_option('modarch_has_init', false); if(!$check_theme || !get_option('lastudio-kit-settings')){ $cpt_supports = ['page', 'post']; if( post_type_exists('la_portfolio') ){ $cpt_supports[] = ['la_portfolio']; } if( post_type_exists('give_forms') ){ $cpt_supports[] = ['give_forms']; } update_option('modarch_has_init', true); update_option( 'elementor_cpt_support', $cpt_supports ); update_option( 'elementor_enable_inspector', '' ); update_option( 'elementor_experiment-e_optimized_markup', 'active' ); update_option( 'lastudio-kit-settings', [ 'svg-uploads' => 'enabled', 'lastudio_kit_templates' => 'enabled', 'single_post_template' => 'templates/fullwidth.php', 'single_page_template' => 'templates/fullwidth.php', 'avaliable_extensions' => [ 'album_content_type' => 'false', 'event_content_type' => 'false', 'portfolio_content_type' => 'true', 'motion_effects' => 'true', 'custom_css' => 'true', 'floating_effects' => 'false', 'wrapper_link' => 'false', 'css_transform' => 'false', 'element_visibility' => 'true' ] ] ); $customizes = []; if(!empty($customizes)){ foreach ($customizes as $k => $v){ set_theme_mod($k, $v); } } } } /** * Adds the meta tag to the site header * * @since 1.0.0 */ public function pingback_header() { if ( is_singular() && pings_open() ) { printf( '<link rel="pingback" href="%s">' . "\n", esc_url( get_bloginfo( 'pingback_url' ) ) ); } } /** * Adds the meta tag to the site header * * @since 1.0.0 */ public function apple_mobile_web_app_capable_header() { echo sprintf( '<meta name="mobile-web-app-capable" content="yes">' ); $meta_theme_color = sprintf( '<meta name="theme-color" content="%1$s">', get_theme_mod('primary_color', '#fff')); echo apply_filters( 'modarch_meta_theme_color', $meta_theme_color ); } /** * Adds the meta tag to the site header * * @since 1.0.0 */ public function meta_viewport() { // Meta viewport $viewport = '<meta name="viewport" content="width=device-width, initial-scale=1.0, user-scalable=yes">'; // Apply filters for child theme tweaking echo apply_filters( 'modarch_meta_viewport', $viewport ); } /** * Load scripts in the WP admin * * @since 1.0.0 */ public function admin_scripts() { // Load font icon style wp_enqueue_style( 'modarch-font-lastudioicon', get_theme_file_uri( '/assets/css/lastudioicon.min.css' ), false, '1.0.0' ); wp_enqueue_style( 'modarch-typekit-fonts', $this->enqueue_typekit_fonts_url() , array(), null ); wp_enqueue_style( 'modarch-google-fonts', $this->enqueue_google_fonts_url() , array(), null ); } /** * Load front-end scripts * * @since 1.0.0 */ public function theme_css() { $theme_version = defined('WP_DEBUG') && WP_DEBUG ? time() : MODARCH_THEME_VERSION; $ext = apply_filters('modarch/use_minify_css_file', false) || ( defined('WP_DEBUG') && WP_DEBUG ) ? '' : '.min'; wp_enqueue_style( 'modarch-theme', get_parent_theme_file_uri('/style'.$ext.'.css'), false, $theme_version ); $this->render_extra_style(); $additional_inline_stype = modarch_minimizeCSS($this->extra_style); $inline_handler_name = 'modarch-theme'; if(modarch_is_woocommerce()){ wp_enqueue_style( 'modarch-woocommerce', get_theme_file_uri( '/assets/css/woocommerce'.$ext.'.css' ), false, $theme_version ); $inline_handler_name = 'modarch-woocommerce'; } wp_add_inline_style($inline_handler_name, $additional_inline_stype); } /** * Returns all js needed for the front-end * * @since 1.0.0 */ public function theme_js() { $theme_version = defined('WP_DEBUG') && WP_DEBUG ? time() : MODARCH_THEME_VERSION; $ext = !apply_filters('modarch/use_minify_js_file', true) || ( defined('WP_DEBUG') && WP_DEBUG ) ? '' : '.min'; // Get localized array $localize_array = $this->localize_array(); wp_register_script( 'pace', get_theme_file_uri('/assets/js/lib/pace'.$ext.'.js'), null, $theme_version, true); wp_register_script( 'js-cookie', get_theme_file_uri('/assets/js/lib/js.cookie'.$ext.'.js'), array('jquery'), $theme_version, true); wp_register_script( 'jquery-featherlight', get_theme_file_uri('/assets/js/lib/featherlight'.$ext.'.js') , array('jquery'), $theme_version, true); $dependencies = array( 'jquery', 'js-cookie', 'jquery-featherlight'); if( modarch_string_to_bool( modarch_get_theme_mod('page_preloader') ) ){ $dependencies[] = 'pace'; } if(function_exists('WC')){ $dependencies[] = 'modarch-woocommerce'; } $dependencies = apply_filters('modarch/filter/js_dependencies', $dependencies); wp_enqueue_script('modarch-theme', get_theme_file_uri( '/assets/js/app'.$ext.'.js' ), $dependencies, $theme_version, true); if (is_singular() && comments_open() && get_option('thread_comments')) { wp_enqueue_script('comment-reply'); } if(apply_filters('modarch/filter/force_enqueue_js_external', true)){ wp_localize_script('modarch-theme', 'la_theme_config', $localize_array ); } if(function_exists('la_get_polyfill_inline')){ $polyfill_data = apply_filters('modarch/filter/js_polyfill_data', [ 'modarch-polyfill-object-assign' => [ 'condition' => '\'function\'==typeof Object.assign', 'src' => get_theme_file_uri( '/assets/js/lib/polyfill-object-assign'.$ext.'.js' ), 'version' => $theme_version, ], 'modarch-polyfill-css-vars' => [ 'condition' => 'window.CSS && window.CSS.supports && window.CSS.supports(\'(--foo: red)\')', 'src' => get_theme_file_uri( '/assets/js/lib/polyfill-css-vars'.$ext.'.js' ), 'version' => $theme_version, ], 'modarch-polyfill-promise' => [ 'condition' => '\'Promise\' in window', 'src' => get_theme_file_uri( '/assets/js/lib/polyfill-promise'.$ext.'.js' ), 'version' => $theme_version, ], 'modarch-polyfill-fetch' => [ 'condition' => '\'fetch\' in window', 'src' => get_theme_file_uri( '/assets/js/lib/polyfill-fetch'.$ext.'.js' ), 'version' => $theme_version, ], 'modarch-polyfill-object-fit' => [ 'condition' => '\'objectFit\' in document.documentElement.style', 'src' => get_theme_file_uri( '/assets/js/lib/polyfill-object-fit'.$ext.'.js' ), 'version' => $theme_version, ] ]); $polyfill_inline = la_get_polyfill_inline($polyfill_data); if(!empty($polyfill_inline)){ wp_add_inline_script('modarch-theme', $polyfill_inline, 'before'); } } } public function load_external_resources(){ if(!wp_style_is('elementor-frontend')){ wp_enqueue_style( 'modarch-typekit-fonts', $this->enqueue_typekit_fonts_url() , array(), null ); wp_enqueue_style( 'modarch-google-fonts', $this->enqueue_google_fonts_url() , array(), null ); } } /** * Functions.js localize array * * @since 1.0.0 */ public function localize_array() { $template_cache = modarch_string_to_bool(modarch_get_option('template_cache')); $ext = !apply_filters('modarch/use_minify_js_file', true) || ( defined('WP_DEBUG') && WP_DEBUG ) ? '' : '.min'; $cssFiles = [ get_theme_file_uri ('/assets/css/lastudioicon'.$ext.'.css' ) ]; if(function_exists('WC') && !modarch_is_woocommerce() ){ $cssFiles[] = get_theme_file_uri ('/assets/css/woocommerce'.$ext.'.css' ); } $array = array( 'single_ajax_add_cart' => modarch_string_to_bool( modarch_get_theme_mod('single_ajax_add_cart') ), 'i18n' => array( 'backtext' => esc_attr_x('Back', 'front-view', 'modarch'), 'compare' => array( 'view' => esc_attr_x('Compare List', 'front-view', 'modarch'), 'success' => esc_attr_x('has been added to comparison list.', 'front-view', 'modarch'), 'error' => esc_attr_x('An error occurred ,Please try again !', 'front-view', 'modarch') ), 'wishlist' => array( 'view' => esc_attr_x('View Wishlist', 'front-view', 'modarch'), 'success' => esc_attr_x('has been added to your wishlist.', 'front-view', 'modarch'), 'error' => esc_attr_x('An error occurred, Please try again !', 'front-view', 'modarch') ), 'addcart' => array( 'view' => esc_attr_x('View Cart', 'front-view', 'modarch'), 'success' => esc_attr_x('has been added to your cart', 'front-view', 'modarch'), 'error' => esc_attr_x('An error occurred, Please try again !', 'front-view', 'modarch') ), 'global' => array( 'error' => esc_attr_x('An error occurred ,Please try again !', 'front-view', 'modarch'), 'search_not_found' => esc_attr_x('It seems we can’t find what you’re looking for, please try again !', 'front-view', 'modarch'), 'comment_author' => esc_attr_x('Please enter Name !', 'front-view', 'modarch'), 'comment_email' => esc_attr_x('Please enter Email Address !', 'front-view', 'modarch'), 'comment_rating' => esc_attr_x('Please select a rating !', 'front-view', 'modarch'), 'comment_content' => esc_attr_x('Please enter Comment !', 'front-view', 'modarch'), 'continue_shopping' => esc_attr_x('Continue Shopping', 'front-view', 'modarch'), 'cookie_disabled' => esc_attr_x('We are sorry, but this feature is available only if cookies are enabled on your browser', 'front-view', 'modarch'), 'more_menu' => esc_attr_x('Show More +', 'front-view', 'modarch'), 'less_menu' => esc_attr_x('Show Less', 'front-view', 'modarch'), 'search_view_more' => esc_attr_x('View More', 'front-view', 'modarch'), ) ), 'js_path' => esc_attr(apply_filters('modarch/filter/js_path', self::$template_dir_url . '/assets/js/lib/')), 'js_min' => apply_filters('modarch/use_minify_js_file', true), 'theme_path' => esc_attr(apply_filters('modarch/filter/theme_path', self::$template_dir_url . '/')), 'ajax_url' => esc_attr(admin_url('admin-ajax.php')), 'has_wc' => function_exists('WC' ), 'cache_ttl' => apply_filters('modarch/cache_time_to_life', !$template_cache ? 30 : (60 * 5)), 'local_ttl' => apply_filters('modarch/local_cache_time_to_life', !$template_cache ? 30 : (60 * 60 * 24)), 'home_url' => esc_url(home_url('/')), 'shop_url' => function_exists('wc_get_page_id') ? get_permalink( wc_get_page_id( 'shop' ) ) : home_url('/'), 'current_url' => esc_url( add_query_arg(null,null) ), 'disable_cache' => !$template_cache, 'is_dev' => defined('WP_DEBUG') && WP_DEBUG, 'ajaxGlobal' => [ 'nonce' => $this->ajax_manager->create_nonce(), 'wcNonce' => wp_create_nonce('woocommerce-cart'), 'storeApiNonce' => wp_create_nonce('wc_store_api'), 'action' => 'lastudio_theme_ajax', 'useFront' => 'true', ], 'cssFiles' => $cssFiles, 'themeVersion' => defined('WP_DEBUG') && WP_DEBUG ? time() : MODARCH_THEME_VERSION ); if(function_exists('la_get_wc_script_data') && function_exists('WC')){ $variation_data = la_get_wc_script_data('wc-add-to-cart-variation'); if(!empty($variation_data)){ $array['i18n']['variation'] = $variation_data; } $array['wc_variation'] = [ 'base' => esc_url(WC()->plugin_url()) . '/assets/js/frontend/add-to-cart-variation.min.js', 'wp_util' => esc_url(includes_url('js/wp-util.min.js')), 'underscore' => esc_url(includes_url('js/underscore.min.js')) ]; } // Apply filters and return array return apply_filters( 'modarch/filter/localize_array', $array ); } /** * Add headers for IE to override IE's Compatibility View Settings * * @since 1.0.0 */ public function x_ua_compatible_headers( $headers ) { $headers['X-UA-Compatible'] = 'IE=edge'; return $headers; } /** * Add support for Elementor Pro locations * * @since 1.0.0 */ public function register_elementor_locations( $elementor_theme_manager ) { $elementor_theme_manager->register_all_core_location(); } /** * Registers sidebars * * @since 1.0.0 */ public function register_sidebars() { $heading = 'div'; $heading = apply_filters( 'modarch/filter/sidebar_heading', $heading ); // Default Sidebar register_sidebar( array( 'name' => esc_html__( 'Default Sidebar', 'modarch' ), 'id' => 'sidebar', 'description' => esc_html__( 'Widgets in this area will be displayed in the left or right sidebar area if you choose the Left or Right Sidebar layout.', 'modarch' ), 'before_widget' => '<div id="%1$s" class="widget %2$s">', 'after_widget' => '</div>', 'before_title' => '<'. $heading .' class="widget-title"><span>', 'after_title' => '</span></'. $heading .'>', ) ); } public static function enqueue_google_fonts_url(){ $fonts_url = ''; $fonts = array(); if ( 'off' !== _x( 'on', 'Inter: on or off', 'modarch' ) ) { $fonts[] = 'Inter:ital,opsz,wght@0,14..32,100..900;1,14..32,100..900'; } if ( $fonts ) { $fonts_url = add_query_arg( array( 'family' => implode( '&family=', $fonts ), 'display' => 'swap', ), 'https://fonts.googleapis.com/css2' ); } return $fonts_url; } public static function enqueue_typekit_fonts_url(){ $fonts_url = ''; return esc_url_raw( $fonts_url ); } public function render_extra_style(){ $this->extra_style .= $this->css_page_preload(); } public function css_page_preload(){ ob_start(); include get_parent_theme_file_path('/framework/css/page-preload-css.php'); $content = ob_get_clean(); return $content; } public function register_breakpoint(){ if(defined('ELEMENTOR_VERSION') && class_exists('Elementor\Core\Breakpoints\Manager', false)){ $has_register_breakpoint = get_option('modarch_has_register_breakpoint', false); if(empty($has_register_breakpoint)){ update_option('elementor_experiment-additional_custom_breakpoints', 'active'); update_option('elementor_experiment-container', 'active'); $kit_active_id = Elementor\Plugin::$instance->kits_manager->get_active_id(); $raw_kit_settings = get_post_meta( $kit_active_id, '_elementor_page_settings', true ); if(empty($raw_kit_settings)){ $raw_kit_settings = []; } $default_settings = [ 'space_between_widgets' => '0', 'page_title_selector' => 'h1.entry-title', 'stretched_section_container' => '', 'active_breakpoints' => [ 'viewport_mobile', 'viewport_mobile_extra', 'viewport_tablet', ], 'viewport_mobile' => 639, 'viewport_md' => 640, 'viewport_mobile_extra' => 859, 'viewport_tablet' => 1279, 'viewport_lg' => 1280, 'viewport_laptop' => 1730, 'system_colors' => [ [ '_id' => 'primary', 'title' => esc_html__( 'Primary', 'modarch' ), 'color' => '#101010' ], [ '_id' => 'secondary', 'title' => esc_html__( 'Secondary', 'modarch' ), 'color' => '#101010' ], [ '_id' => 'text', 'title' => esc_html__( 'Text', 'modarch' ), 'color' => '#575757' ], [ '_id' => 'accent', 'title' => esc_html__( 'Accent', 'modarch' ), 'color' => '#101010' ] ], 'system_typography' => [ [ '_id' => 'primary', 'title' => esc_html__( 'Primary', 'modarch' ) ], [ '_id' => 'secondary', 'title' => esc_html__( 'Secondary', 'modarch' ) ], [ '_id' => 'text', 'title' => esc_html__( 'Text', 'modarch' ) ], [ '_id' => 'accent', 'title' => esc_html__( 'Accent', 'modarch' ) ] ] ]; $raw_kit_settings = array_merge($raw_kit_settings, $default_settings); update_post_meta( $kit_active_id, '_elementor_page_settings', $raw_kit_settings ); Elementor\Core\Breakpoints\Manager::compile_stylesheet_templates(); update_option('modarch_has_register_breakpoint', true); } } } } Modarch_Theme_Class::get_instance(); }<!DOCTYPE html> <html lang="en-US"> <head> <meta charset="UTF-8"> <meta name="viewport" content="width=device-width, initial-scale=1.0, viewport-fit=cover" /> <title> Bc Və Azərbaycan ötrü Görkəmli 1win Onlayn Kazinonun Müasir Icmalı - Balaji Retail Design Build
Designing for the Future

Bc Və Azərbaycan ötrü Görkəmli 1win Onlayn Kazinonun Müasir Icmalı

1win oyna

Yəni istifadəçi bu bonusun sahibi olmaq üçün hesabına 4 dönüm ardıcıl şəkildə depozit qoymalıdır. Şifrənizi yenidən yaratmaq və hesabınıza iç olmaq üçün təlimatları izləyin. Təsir oyunçunun qoyduğu məbləğin cümlə əmsala vurulması ilə hesablanır. Əmsal nə miqdar təntənəli olsa, istifadəçi to qədər daha qazanır. Oyunun gedişatına və nəticələrə bukmeker tərəfindən soxulma edilmir.

In Azerbaycan – Qumar Və Idman Mərc Oyunları Kainatı

Platformanın qaydalarını və şərtlərini başa düşmək vacibdir. Seçdiyiniz qeydiyyat metodundan əlaqəli olaraq, hesabınızı doğrulamalı ola bilərsiniz. Doğrulamanı başa çatdırmaq üçün verilən təlimatlara əməl edin. Uğurlu qeydiyyatdan və doğrulamadan sonra məlumatlarınızı istifadə edərək yeni 1win online hesabınıza daxil olun. Subyektiv hesabınıza daxil olaraq adınız, doğum tarixiniz kimi məlumatları iç edə bilərsiniz. Depozit bölməsinə keçin, imtiyaz verdiyiniz ödəniş üsulunu seçin və hesabınıza vəsait izafi görmək üçün təlimatlara əməl edin.

Bu bonus 500%-ə qədər artırılaraq ilk dörd depozit üzrə bölüşdürülür. Oyunçular promo kodlardan istifadə edərək artıq bonuslar və pulsuz 1win az mərclər qazana bilərlər. Həmçinin, müəyyən aksiyalar çərçivəsində aktiv istifadəçilərə frispinlər təqdim olunur.

In’e Mobil Erişim: Vahid Uygulama Mal Mı?

Maraqlı bir advertising, sonra proloq və parol istifadə edəcək vahid giriş gəlir. Daha ürəyiaçiq şifrə istədikləri vaxt təcavüzkarlar tərəfindən asanlıqla sındırılır. 1Win oyun platforması, istifadəçilərin sərbəst bir şəkildə hesablarına əmanət qoymağa və fayda vəsaitlərini çıxarmağa macal verir.

In Mobil Tətbiqini Necə Yükləmək Olar?

  • Ruletka Azərbaycan da daxil olmaqla, dünyanın çoxu ölkələrində daha ən oynanılan kart oyunlarındandır.
  • Chrome, Mozilla, Firefox, Opera və başqa internet axtarış mühərriklərini yoxlaya bilərsiniz.
  • Qeydiyyat prosesi veb-saytda və proqramda eyni növ tamamlanır.
  • Hell Hot 100, təmtəraqlı dəyişkənliyi və qocaman ödəniş potensialı ilə oyunçuları arasında məşhurdur.
  • Platforma təhlükəsizlik və şəffaflıq prinsiplərinə əsaslanır.
  • Bundan izafi, 1win proloq təcrübəsi təhlükəsizlik və şəffaflıqla dəstəklənir.

1Win вход və ya 1Win az üçün müxtəlif ödəniş vasitələri ilə münasibət saxlaya bilərsiniz. 1Win azerbaycan müştəriləri üçün şəxsi ödəniş seçimləri təqdim edirik. 1Win giriş etməklə və ya 1Win скачать etməklə, sizə sərbəst və təhlükəsiz ödəniş təcrübəsi təmin edirik. 1Win oyna və ya 1Win aviator oynamaq ötrü ürəyiaçiq və sürətli ödəniş prosesini yaşayın.

1win oyna

In Bet – İdman Və Kibersport Mərcləri

Axir uduşlarınızı 15%-ə miqdar artıra bilən ölməz ekspress bonus da var. Promosyon proqramları həm daha çox fayda əldə eləmək, həm də hədis təcrübəsini artırmaq üçün nəzərdə tutulub. 1win online istifadəçiləri bu kampaniyalarla daha dinamik və əlamətdar oyun mühiti əldə edirlər. Depozit əməliyyatı tamamlandıqdan sonra balansınız əlbəəl yenilənir və oyunlara başlamaq mümkündür. 1 win, oyunçuların qazanclarını rahatlıqla çıxarması üçün müxtəlif seçimlər təqdim edir. 1win login vasitəsilə istənilən vaxt hesabınızdakı qazancı rahatlıqla əldə edə bilərsiniz.

Şah 1Win Aviator oyununun yaradıcısı – Spribe şirkətinin oyunları var-yox bu oyunla məhdudlaşmır. Düzdür, hədis provayderinin ən uğurlu və populyar oyunu Aviator-dur. Bununla belə, Spribe fəaliyyət göstərdiyi illər ərzində casino sənayesini yaxından müşahidə edərək tələbatlı oyunlar hazırlamağı bacarıb.

  • Voleybol həvəskarları həm” “yerli, həm də beynəlxalq matçlara mərc edə bilərlər.
  • 1win yukle prosesi üçün formal saytdan 1win indir seçimini edin və faylı cihazınıza yükləyin.
  • Bank kartı məlumatları və ya elektron pul kisəsi məlumatı kimi seçdiyiniz para çıxarma üsulu üçün tələb olunan məlumatları daxil edin.
  • 1win azerbaycan istifadəçiləri üçün şəxsi bonuslar və kampaniyalar təqdim olunur.
  • Ümumən bu səmimi addımlarla, 1Win Azerbaycan ilə sürətli qeydiyyat və əyləncəyə başlamaq artıq ən asan!

In Bukmekerində İlk Mərcinizi Necə Yerləşdirə Bilərsiniz

Mobil tətbiq xüsusilə 1win aviator kimi tanımlı oyunlar üçün məqsəd seçimdir. Tətbiq vasitəsilə 1win azerbaycan istifadəçiləri öz hesablarına asanlıqla daxil ola və əyləncəli oyunlarla ara keçirə bilərlər. Mobil tətbiq, istifadəçilərə hər vaxt və hər yerdə 1Win platformasına çıxış imkanı verir. Bu, xüsusilə səyahət zamanı və ya müddət çatışmazlığı olan hallarda qocaman üstünlükdür. 1Win Azərbaycan platformasında qeydiyyatdan keçmək üçün bir neçə ürəyiaçiq addımı yerinə yetirmək lazımdır. İlk olaraq, « 1Win başlanğıc » düyməsini sıxaraq qeydiyyat səhifəsinə aşırım edin.

1Win tətbiqi ilə 1win oyna və 1win aviator kimi oyunlardan duyma alın. Tətbiq 1win azerbaycan istifadəçiləri üçün şəxsi imkanlar təqdim edir. 1win Azərbaycan platformasından istifadə etmək üçün ilk qədəm olaraq, 1win yüklə seçimini seçin. Android istifadəçiləri üçün 1win apk faylını endirərək uydurma prosesini asanlıqla tamamlaya bilərsiniz.

Qeydiyyat Prosesinin əsas Mərhələləri

9770 AZN-dən başlayan mərclər üçün maksimum 100 AZN keşbek. 15630 AZN-dən başlayan mərclər üçün maksimum 160 AZN keşbek. 19530 AZN-dən başlayan mərclər üçün maksimum 290 AZN keşbek. AZN-dən başlayan mərclər üçün maksimum keşbek 980 AZN keşbek. Əgər platformada yenisinizsə və ilk mərcinizi soxmaq istəyirsinizsə, aşağıdakı addımları izləməyiniz lazımdır. İstifadəçi adınızı və şifrənizi istifadə edərək hesabınıza daxil olun.

In Onlayn Kazino: Özbək Qumarbazları üçün Lap əla Oyunlar Və Bonuslar

  • Üstəlik sükunət baxımından da əksəriyyət istifadəçilərin seçimi saytdan yana olur.
  • Bununla yanaşı, slot turnirləri və sezon aksiyaları qədər promosiyalar da iştirakçılara izafi xeyir şansı təqdim edir.
  • €1000 + one hundred and fifty FS bonus qazanın və oyun təcrübənizi daha maraqlı edin!
  • Oyunçular oyuna başlarkən iti və yüngül bir şəkildə qazanc əldə edə bilərlər.
  • Doğru strategiya seçimi, məsələn, kiçik riskli və ya ikiqat mərc yanaşmaları ilə qazancınızı artırmaq mümkündür.

1Win Azərbaycan platformasında mübarək mərc eləmək üçün obyektiv strategiyalar yığmaq vacibdir. « 1win başlanğıc » edərək hesabınıza daxil olduqdan sonra, « 1win aviator » qədər oyunlarda balansınızı genişlətmək üçün ürəyiaçiq qaydalara ümid edin. Məsələn, xirda məbləğlərlə başlayın və yoxlama qazandıqca mərclərinizi artırın. Hər mərc qərarını diqqətlə düşünün və statistik məlumatlardan istifadə edin. « 1win nadir » platformasında mövcud olan analitik alətlər sizə ən dəqiq proqnozlar verməyə ianə edə bilər. « 1win indir » seçimi ilə mobil tətbiqdən istifadə edərək, mərclərinizi rahatlıqla idarə edə bilərsiniz.

1win oyna

Android Və Ios Cihazları üçün Tətbiqi Necə Yükləmək Olar?

Ruletka sözünün hərfi mənası fransız dilində “kiçik çarx” deməkdir. Krupiyer çarxı fırladıqdan sonra topun düşdüyü xana oyunçunun taleyini həll edir. Qayğı görmək vacibdir ki, minimal depozit məbləği hesabın valyutasından asılıdır.

Casino Oyunları Bonusları

Əgər loqin və ya parolunuzu itirsəniz, narahat olmağa tələb yoxdur – 1Win dəstək xidməti sizə girişi bərpa etməyə ianə edəcək. €1000 + one hundred vəd fifty FS bonus qazanın və oyun təcrübənizi daha əhəmiyyətli edin! 1Win platformasında şəxsi hesab istifadəçilər üçün maksimum rahatlıqla tərtib edilib. 1win скачать seçimini edərək, asudə və sərbəst oyun təcrübəsi qazanın.

Təyyarə uçub getməzdən öncə pulu nağdlaşdırmaq lazımdır ki, pulunuzu itirməyəsiniz. Aviator 1Win oyununda nağdlaşdırma funksiyasının əhəmiyyətini vahid daha qayğı etmək istəyirik. Hədis başlayanda təyyarə asta-asta rəftar etməyə başlayır. Təyyarə uçub getməmiş istifadəçi Aviator-da mərcə qoyduğu pulu nağdlaşdırmalıdır. Bu zamanlamanın doğru ayarlanması oyunun lap kritik mərhələsidir.