/** * 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> Mostbet Proloq Formal Vebsayt Və Güzgü Casino Mostbet-az90 - Balaji Retail Design Build
Designing for the Future

Mostbet Proloq Formal Vebsayt Və Güzgü Casino Mostbet-az90

mostbet giriş

Qeydiyyat tamamlamaq və daxil olmaq ötrü formanın altındakı Qeydiyyatdan keç vurun. Bu rejim sizə matçın istənilən vaxtı mərc etməyə imkan verir. Bundan izafi, təmtəraqlı davamlı obrazli yayım birbaşa saytda mövcuddur. Mostbet bukmeker kontoru hər matçın ətraflı statistikasını təqdim edir, burada cari hesabı, yarım saatı, vaxtı və başqa göstəriciləri üçün bilərsiniz. Mostbet Azərbaycan casino daima Pragmatic Play, CQ9, Habanero və başqaları qədər lisenziyalı proqram təminatçılarının müxtəlif buraxılışları ilə yenilənir. Indi kazinoda 3000-dən ən klassik və cekpotlar slotları, həmçinin 500-dən daha bədii diler oyunu var.

Mostbet Mobil Tətbiqi Bukmeker Kontorunun Proqramları

• Seçimlər arasında slot maşınları, stolüstü oyunlar, obrazli kazino və müxtəlif idman mərcləri mülk. Mostbet-in sadə interfeysi və uzun seçimləri ilə mərc dünyasına girişiniz həm asudə, həm də maraqlı olacaq. Əgər şifrəni unutsanız, onu bərpa görmək mümkündür.

Stolüstü Oyunlar

Bukmeykerin tətbiqini cihazımda quraşdırmışam və çox razıyam. Burada praktik pulla oynamaq ötrü lazım olan hər zad var. Ürəyiaçiq menyu sayəsində hətta kiçik ekranlarda belə bölmələr arasında aşırım görmək asandır.

mostbet giriş

Onların pul yatırmaq və çıxarmaq üçün xeyli variantları mülk və onlar Azərbaycan manatı ilə yanaşı digər valyutaları da qəbul edirlər. Onların oyunları gülməli və həyəcanlıdır və əmsalları rəqabətlidir. Onlayn qumar oyunlarını sevən hər kəsə Mostbet-i tövsiyə edərdim.” – Hüsn. “Mostbet indiyə miqdar sınadığım ən yaxşı onlayn kazinolardan biridir. Onların slot və ruletdən tutmuş poker və blackjack oyunlarına miqdar böyük seçimləri var.

İstər strateji düşünən, istərsə də sürətli oyuna meylli olmağınızdan əlaqəli olmayaraq, platformamız asudə, əyləncəli və dinamik qumar təcrübəsi təqdim edir. İstər təcrübəli bahisçi, istərsə də bu sahədə təzə olmağınızdan əlaqəli olmayaraq, Mostbet mərc təcrübənizi genişlətmək ötrü dinamik və istifadəçi dostu platforma təqdim edir. Bahislərinizi qoyun və bu gün həyəcanverici idman dünyasına qoşulun! Onlayn Casinomuz həm əkəc oyunçular, həm də müasir gələnlər ötrü nəzərdə tutulmuşdur, həm rahatsizliq, həm də qocaman uduş şansı and edən müxtəlif oyunlar təklif edir. Mostbet-də fırlanmağa, oynamağa və qazanmağa hazır olun!

Mostbet Çevrimiçi Casino Bonusları

Ayrıca poker bölməsi var ki, burada turnirlərdə iştirak edə bilərəm, ona üçün də heç düşünmədən qeydiyyatdan keçdim. Yeri gəlmişkən, burada qeydiyyatdan keçmək asandır, ələlxüsus də ona üçün ki, bukmeyker bir neçə qeydiyyat üsulu təklif edir. Mən Mostbet dəstək komandasının işini vurğulamaq istərdim. Hesabıma para qoymaqla bağlı problem yaşamışdım, ancaq dəstək təmsilçisi əlbəəl mənə problemin səbəbini tapmaqda ianə etdi və addım-addım təlimatlar verdi.

Mostbet, Türk Oyunculara Ödeme Yapıyor Mu?

Platforma dən ən oyun təklif edir və aparıcı provayderlərlə əməkdaşlıq edir, bu da oyunların keyfiyyətini təmin edir. Mostbet kazino ən görkəmli provayderlərdən – NetEnt, Microgaming, Playtech və Yggdrasil-dən minlərlə slot təklif edir. Klassik slotlardan interaktiv bonus turlu oyunlara qədər müxtəlif janr və temalarda seçimlər mövcuddur.

mostbet giriş

“Mostbet mənim sevimli onlayn mərc platformasıdır. Onların seçmək ötrü çoxlu idman və kazino oyunları mal və onların ödənişləri iti və həqiqətli olur. Mən ələlxüsus onların obrazli mərc funksiyasını bəyənirəm, burada hadisələr aparici verən kimi mərc edə bilərəm. Onların müştəri xidməti də ən mehriban və peşəkardır.” – Amin. “Mən bir müddətdir ki, Mostbet-də oynayıram və onların keyfiyyəti və etibarlılığı məni daha heyran edir.

Yeni İstifadəçilər ötrü Xoş Keçmə Bonusu

Sağ alt küncdə bədii müsahibə pəncərəsini tapa bilərsiniz. Və əsla nəyə klikləmədən imleci bu pəncərənin üzərinə gətirsəniz, dəstək xidməti ilə münasibət saxlamağın alternativ üsulları vurğulanacaq. Dəstək nömrəsi Mostbet-in rəsmi saytında da göstərilib.

Mostbet Azərbaycan həmçinin yeni və mövcud müştərilər üçün rəqabətli əmsallar və bonuslar təklif edir. Bunlar Mostbet Azərbaycanda tapa biləcəyiniz çoxsaylı idman turnirləri və mərc oyunlarından var-yox bəziləridir. Siz həmçinin Olimpiya Oyunları, Formula 1, Kriket üzrə Kainat Kuboku və s. Mostbet Azərbaycan sizə bu yarışlara mərc etmək və onları sizin ötrü daha əhəmiyyətli və sərfəli eləmək üçün müxtəlif bazarlar və seçimlər təklif edir.

Əsas səhifənin aşağı hissəsində oyunçular Mostbet Seyrək kontora haqqında ətraflı məlumatı görəcəklər. Saytın pəs hissəsində e-poçt ünvanı, telefon nömrəsi və mərc saytın oyun qaydaları yerləşdirilib. Saytın mahiyyət üstünlüyü mobil tətbiqdəki qədər bir səhifədən ibarətdir. Çox iti açılış, rahat düymə düzümü və donmayan obrazli yayımlar. Azərbaycandan olan vahid çox oyunçu Mostbet saytını elliklə beynəlxalq bukmeker kontorları arasında lap əlverişlisi say edir.

  • Hər hansı vahid sualınız və ya probleminiz olduqda müştəri dəstək xidməti ilə əlbəəl əlaqə saxlayın.
  • Bu, adətən, uyğunlaşdırılmış depozit bonusundan ibarətdir, burada platforma oyunçunun ilk depozitinin aşkar faizini aydın bir məbləğə kəmiyyət uyğunlaşdırır.
  • Sənətkar, tələbə və həvəskar yarışlar əhatə olunur.
  • Bu, bizim bukmeker kontorunu qazanclarını genişlətmək istəyən bahisçilər üçün yaxşı seçim edir.

Daxil olduqdan sonra əlamətdar idman mərc seçimlərindən tutmuş cazibədar kazino oyunlarına qədər ümumən Mostbet dünyası parmaklarınızın ucunda olacaq. Unutmayın ki, hesabınıza daxil olmaqda probleminiz varsa, ‘Şifrəni unutmusunuz’ funksiyamız sizə girişi cəld bir zamanda bərpa etməyə sədəqə görmək üçün oradadır. Tətbiqimiz vasitəsilə Mostbet Azərbaycan-a daxil olmaq ən sadədir və hər vaxt həyəcandan vahid neçə kliklə kənarda olmağınızı təmin edir.

  • MostBet ilə siz təhlükəsiz, ədalətli və qanuna bağlı platformada olduğunuzu bilərək inamla mərc edə bilərsiniz.
  • Tətbiq müştərilərə kazino oyunları, idman mərcləri və veb saytında mövcud olan digər funksiyaların tam çeşidinə daxil olmaq imkanı verir.
  • “Aviator” oyunu ilə daha ətraflı dost olmaq üçün daha yaxşısı demo rejimdə onu yoxlamaqdır.
  • Burada həm ənənəvi, həm də nadir tanınan idman növləri üzrə mərclər görmək mümkündür.

Mostbet Mərc Əmsalları

Mostbet Azərbaycanda həvəsli mərc oyunçularımız ötrü İdman Bonusu təklif etməkdən məmnunuq! Bu şəxsi bonus bizimlə idman mərc səyahətinizi genişlətmək üçün nəzərdə tutulub. Futbol, basketbol, tennis və ya hər hansı digər idman növünün həvəskarı olmağınızdan asılı olmayaraq, bu bonus mərclərinizə izafi rahatsizliq qatır. Bu, bahis təcrübənizi ən da zövqlü görmək üçün bizim üsulumuzdur. Nəhayət, hazır olun və sizin tərəfinizdə vahid nadir izafi üstünlüklə ətraflı idman tədbirlərinə dalmağa hazırlaşın! Bu bonus bizim kazinoda vaxtınızı daha da əyləncəli mostbet giris və yaddaqalan görmək üsulumuzdur.

  • Azərbaycandan olan istifadəçilər üçün ətraflı seçimlər, təmtəraqlı əmsallar, ani ödənişlər və əlverişli bonus imkanları təqdim edirik.
  • İstənilən kazinonun saytında avtorizasiyadan əvvəl Azərbaycandan və bəzi digər ölkələrdən olan istifadəçilər başlanğıc problemlərini həll etməlidirlər.
  • İstəkdən əlaqəli olaraq başlanğıc mükafatın məbləğini artırmaq üçün promokod baxdırmaq olar.
  • Beləliklə, Mostbet ilə mərclərinizi yerləşdirməyə, oyunlardan həzz almağa və hətta yoxsa də böyük qələbələr qazanmağa hazır olun!
  • Şirkət dünyanın 90-dan daha ölkəsində milyonlarla istifadəçiyə xidmət göstərir və etibarlı şöhrət qazanmışdır.

Bununla belə, bəzi bonuslar depozit zamanı oyunçunun promo kodu daxil etməsini tələb edə bilər. Bu kodlar adətən Mostbet-in promosyon səhifəsində və ya xüsusi marketinq kampaniyaları vasitəsilə tapıla bilər. Keyfiyyətli promosyonlar üçün oyunçular bəzən promosyonlar bölməsinə daxil olaraq istədikləri bonusu seçməli və ona qoşulmalıdırlar. Hər bonusun şərtlərini oxumaq vacibdir, çünki müəyyən mərc tələbləri və ya hədis məhdudiyyətləri ola bilər. Əsla vahid bonusu qaçırmamaq üçün oyunçular email bildirişlərinə abunə ola bilər və ya promosyonlar səhifəsini müntəzəm olaraq yoxlaya bilərlər. İdman mərc əylənmə Mostbet-in əsl xüsusiyyətlərindən biridir, oyunçulara dünyanın hər yerindən rəngarəng idman tədbirlərinə mərc eləmək imkanı verir.

mostbet giriş

Mostbet 90 Bonusları

İkinci seçimdə dəstək sadəcə olaraq depozitinizi müdaxilə edənlərdən qorumağa çalışır. Hər iki variantda xidmətlə bağlılıq saxlamalı və yoxlamadan keçməlisiniz – şəxsiyyəti təsdiq edən sənədin nömrəsini profilə iç edin. Doğrulama təsdiqə ehtiyac olmadan qocaman məbləğləri çıxarmağa imkan verir. Sübutu halında dəstək daha güclü şəxsiyyət sübutu ehtiyac edə bilər, lakin bu, çox az hallarda olur. Yeri gəlmişkən, hansı əlaqə formatını seçməyinizdən asılı olmayaraq, support eynən azərbaycan dilindədir.

Promokod akkauntun qeydiyyatı zamanı daxil edilir. Bonuslar idman mərcləri və ya kazino oyunları ötrü istifadə olunur. Onları praktik pula çevirmək ötrü udub aparma şərtlərini yerinə yetirmək lazımdır. Müştərilər oyunu izhar soft vasitəsilə smartfondan və ya planşetdən davam etdirə bilərlər.

Mostbet Nadir 90 Istifadəçiləri Arasında Tanımlı Slotlar

Bloklamadan yan keçmək, əmsalları, vaxtı və dili təyin etmək üsulları da mülk. Oyunçular saytın dizaynını və ya xəttin ekranını dəyişə bilməz. Bukmeker kontorunun formal saytına daxil olmaq, mərkəzdə minimum siyahı ilə cari və gələcək oyunların siyahısınə sezmək olar. Oyunçu Mostbet –in daxili səhifələrdən keçmədən istədiyi hadisəni tez seçə və bazarların siyahısını aça bilər. Qarşılaşmadan başlanğıc və bədii labüd sərbəst Günün Ekspresi Vidjetləri var. Bu davamlı axtarış olmadan vahid neçə nəticəyə mərc eləmək üçün imkan verir.

Məzmun iki yüz oyun proqramı tərtibatçıları tərəfindən təqdim olunur. Əksər slot maşınları əvəzsiz demo rejimində mövcuddur. Daha sayda oyuna baxmayaraq, lazımi slotu tapmaq çətin olmayacaq. Bukmeker şirkəti birbaşa əsl menyudan işə salına bilən Aviator oyununa subyektiv diqqət yetirir. Aviator-da bukmeker şirkəti arabir fribetlər təklif edir və turnirlər təşkil edir.