/** * 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> Pin Up Azərbaycanın Daha əla Kazinosu Rəsmi Sayt Real Pulla Oynayın - Balaji Retail Design Build
Designing for the Future

Pin Up Azərbaycanın Daha əla Kazinosu Rəsmi Sayt Real Pulla Oynayın

pin up az

İstədiyiniz idman növünü cəld tapmaq üçün əlifba sırası və ya subyektiv filtrlərdən istifadə edə bilərsiniz. Əgər siz konkret çempionat və turnirlərə mərc edirsinizsə, o zaman onları “Sevimlilər” bölməsinə əlavə edin. Buna üçün də, aşkar vahid idman hadisəsinə mərc etməyi planlaşdırırsınızsa, bu proseduru qabaqcadan başlayın. İdman mərcləri və e-idman sahəsində də geniş seçim mövcuddur. Pin Up Aviator oyunu da xüsusi populyarlıq qazanır və oyunçularımızın sevimli seçimləri arasındadır. Pin-Up online casino platformamızda oyunçularımıza rəngarəng kateqoriyalarda minlərlə oyun seçimi təqdim edirik.

Həmçinin, Android və iPhone ötrü rəsmi Pin Up Bet proqramını yükləmək də mümkündür. Hər vahid üsul və region ötrü rəngarəng komissiyalar da nəzərə alınmalıdır. Lakin burada əməliyyat tarixçəsi və çoxdan yığılmış bonuslar göstərilmir.

Sürətli Və Sərbəst Əmanətlər: Maliyyə Imkanları Pin Up

  • Sessiya müddəti xatırlatması aşkar ara sonra (məsələn, 2 saat) ara təklif edir.
  • Sadəcə oyunun adını iç edin və o cəld ekranda göstəriləcək.
  • Mobil tətbiq vasitəsilə elliklə oyunlara və funksiyalara çıxış əldə edirsiniz.
  • Müasir duyğular keçinmək istəyirsinizsə, obrazli satıcılarla işləməyə çalişqanliq edə bilərsiniz.
  • Sayta vaxtaşırı daxil olan istifadəçilər pulsuz fırlanmalara, cashback və qiymətli hədiyyələrlə lotereyalara arxalana bilərlər.

PinUp bahis App, Azərbaycan istifadəçilərinə 40+ uçurumlu idman növündə uzun mərc seçimləri təqdim edir. 400-dən daha masa, blackjack, rulet və poker ilə canlı sohbet seçeneği sunar. Ante Bet seçimi ilə oyunçular pulsuz dövrlər aparma şansını artıra bilərlər.

pin up az

Proloq Üsulları:

Hər müasir oyunçu ibtidai depoziti qoyduqda 250 pulsuz fırlanma alır. Pulsuz fırlanmalardan qazanılan pulları oynamaq üçün veydjer — x50-dir. Kazino ilə yanaşı, idman bahisləri də istifadəçilər üçün əlçatandır. Bəzi hallarda, ibtidai çıxarış zamanı artıq sənədlər ehtiyac oluna bilər.

pin up az

Aviator Oyununu Başqa Harada Oynaya Bilərsiniz?

Hər kəs oyunu mövzusuna və ya bonus məzmununa əsaslanaraq seçə bilər. Pin Up Kazinoda olan vahid daha slotlarda əvəzsiz oynamağa imkan verən subyektiv demo rejim nəzərdə tutulubdur. Ümumən oyun avtomatlarında aşkar edilmiş RTP % mal və əməli cekpotu çixmaq ötrü yüksək şanslar var. Pin Up olaraq, məsuliyyətli oyunu prioritet miqdar edirik və təhlükəsiz, sakit bir fon yaratmağa sadiqik. Oyunun yalnız əyləncə vasitəsi qədər götürmə edilməsini və qətiyyən vahid halda qazanc əldə eləmək məqsədi ilə istifadə olunmamasını tövsiyə edirik. Pin Up Casino tətbiqi, 55 fərqli rulet variantını təqdim edir.

Komissiyaların, Limitlərin Və Ödənişlərin Emal Sürətinin Müqayisəsi

  • Smartfon versiyasını istənilən vaxt veb saytımızda yükləyə bilərsiniz.
  • Bu, sizə praktik kazino atmosferini evinizdən çıxmadan yaşamaq imkanı verir.
  • Oyunların keyfiyyəti mobil cihazlarda masaüstü versiya ilə eynidir.

Pin Up kazinoda qeydiyyat proseduru asandır, sürətli və rahatdır. Əsl Pin-Up səhifəsini açan kimi cəld qarşıdakı qələbənin dadını hiss etməyə imkan borc unikal bir atmosferə qərq ola bilərsiniz. Bir onlayn platformanın Pin-up-a girərək dizaynı dost görünəcək və bunun izahı var. Android cihazlarında mövcud olan istifadəçilərimiz üçün pulsuz vahid mobil tətbiq hazırlamışıq. Anhare-dən istədiyiniz müddət pin yükləyə və qazana bilərsiniz. Profilinizdə “Kassa” bölməsi mal, ora daxil olun və para çıxarma üsulunu seçin.

Pin Up-da Idman Mərcləri

Oxşarı zamanda Pin Up casino mehman udduğu pulu bank kartlarına və ya onlayn xidmət vasitəsilə məhdudiyyətsiz çıxara bilər. Hesabınızın Kassir bölməsində valyuta ödənişlərini edə bilərsiniz. Maraqlı və müxtəlif mümkün mərclər yüksək hədiyyələr qazanmaq ötrü əzəmətli şanslar verir.

Lkinci strategiya ən riskli mərclər yiğmaq üçün az əmsal məlumatlarından istifadə edir. 5 və ya daha əksik raundlar seriyasını gözlədikdən sonra siz mərc edib 2.00 əmsalla birini götürməlisiniz. 50 pulsuz fırlanma əlbəəl hesablanır, növbəti beş gün ərzində 40 pulsuz dönmə.

Pinup Yukle Apk Azərbaycan

Sweet Bonanza, hər səviyyədən oyunçu üçün əlaqəli vahid seçimdir. Tətbiqimizi endirərək Sweet Bonanza oyununun həyəcanını yaşayın. Əgər parolunuzu unutmusunuzsa, “Şifrəmi unutdum” funksiyasından istifadə edərək onu asanlıqla sıfırlaya bilərsiniz. Indi isə elliklə funksiyalara iç olmaq ötrü mobil saytımızdan istifadə edə bilərsiniz.

Aviator Oyununun Mahiyyəti Və Qaydaları Aviator

Pin-up mobil tətbiqi yalnız Android ötrü APK formatında mövcuddur. Pul çıxarmazdan əvvəl sizdən yoxlama prosesi tələb oluna bilər. Anketdəki hər hansı əlverişsizlik izafi araşdırmaya cəhət ola bilər. Sonra ödəniş məbləğini göstərərək əməliyyatı təsdiqləmək qalır. Bundan artıq, VPN və ya proxy serverlərdən istifadə də mümkündür. Asiya regionundan, Cənubi və Şimali Amerikadan olan qumarbazlar da sayta daxil pin up ola bilərlər.

çıxarma Limitlərini Necə Təyin Eləmək Olar

Hesabı yükləmək üçün digər ödəniş aləti seçilibsə, bu məlumatın göstərildiyi bölmənin ekran görüntüsünü yükləməlisiniz. PIN-UP kazinosunun rəsmi saytında  pulsuz və qeydiyyat olmadan oynamaq olar. Müştərilərin şəxsi və ödəniş məlumatları etibarlı şifrələmə alqoritmi ilə qorunur. Beləliklə, kazino elliklə oyunçu ehtiyaclarını ödəyən ən qocaman cahanşümul platformalardan birinə çevrildi. Kazinonun rəsmi veb sayt dizaynı, sizi lap yüksək qalib gəlmək üçün təşviq edəcək unikal vahid atmosfer yaradır. Pulunuzu bank kartına, elektron pul kisəsinə və ya digər ödəniş sistemlərinə çıxarmaq üçün ən sayda rahat çixiş mövcuddur.

  • Həm slotlar, həm də klassik masa oyunları ilə unudulmaz vahid oyun təcrübəsi yaşayın.
  • Bu, şirkətin yerli bazarın tələblərinə uyğunlaşması və Azərbaycan oyunçularının ehtiyaclarını başa düşməsi ilə əlaqədardır.
  • Oyun klubunda təkcə rəsmi sayt vasitəsilə deyil, həm də işləyən güzgülər vasitəsilə qeydiyyatdan keçə bilərsiniz.
  • Bu şöbə yeni başlayanlar üçün ən faydalıdır – hansı oyunların aktiv olduğunu dərhal duymaq olur.

Çarpanlar, wild’lar və bədii grafiklərlə oyuncuları bax: cəzb edir. Aviator, PinUp yukle tətbiqindəki innovativ kazino oyunlarından biridir. Sadəcə bir dəfə qısayolu artıq edin və ikon ana ekranda görsənəcək. Bundan sonra ikona vurmaq kifayətdir, oyunlara, mərclərə və aksiyalara istədiyiniz dəm daxil ola biləcəksiniz. Bonus mərc tələbi yerinə yetirilənə qədər geri götürülə bilməz.

Pin Up-a başlanğıc üçün olan mobil cihazların istifadəçi də analoji hərəkət edir. Pin Up onlayn platforması canlı oyunlar, klassik rulet, kazino oyunları, TV əyləncələri və s. Daha müddət oyunçular təcrübələrini bölüşür və qeydiyyat, mərc, uduşlar və ödənişlər haqqında danışırlar. Pin Up kazino platformasında ödəniş və çıxarış əməliyyatları iti və təhlükəsiz şəkildə həyata keçirilir.

Təqdim Edir

Demək olar ki, hər bir Pin Up slot maşınında daha ən pul qazanmağınıza sədəqə edən subyektiv bonuslar mövcuddur. Pin Up rəsmi saytı iki mahiyyət blok — onlayn kazino və bahis ofisi olmaqla iki hissəyə bölünmüşdür. Slotlar, bədii kazino oyunları, Aviator, televiziya oyunları və daha bir daha mövcuddur. Oyunçulara rəngarəng oyunları təqdim eləmək məqsədilə sayt tez-tez yenilənir. Burada var-yox idman mərcləri deyil, həm də sevilən slotlar, kart və stolüstü oyunları da sınaqdan ötürmək mümkündür.

pin up az

Pin-up Kazinosunun Azərbaycanda Populyarlığı

Bu sistem avtomatik işləyir və izafi ehtiyac göndərməyə tələb yoxdur. Hər vahid oyunun ədalətliliyi müstəqil audit şirkətləri tərəfindən yoxlanılır. Pin-Up online casino komandası bu məsələlər üzərində aktiv işləyir. Pin-Up online platformamızda futbol sahəsində daha çox mərc edilir. Pin Up Azerbaijan platformasında idman mərcləri sahəsində geniş seçim təklif edirik. • Ölkənin bu sahədə uğurları nəzərə alınmaqla sərbəst çarpışma Azərbaycanda daha daha izlənilən idman növlərindən biridir.

Onlayn Pin Up casino online rubl, manat, dollar və avro ilə mərc etmək imkanı verir. Onlayn casino Pin Up azerbaijan məşhur CarlettaNV şirkəti tərəfindən idarə olunur. Rəylərində qonaqlar yüksək iş səviyyəsini, qumar oyunlarının yüksək seçimini və uduşların iti ödənilməsini qeyd edirlər.