/** * 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 Casino Azerbaijan Formal Onlayn Kazino - Balaji Retail Design Build
Designing for the Future

Pin-up Casino Azerbaijan Formal Onlayn Kazino

pin-up oyunu

Burada müxtəlif oyun növləri və limitli təkliflər sizi gözləyir. Əgər siz evdən çıxmadan quruda yerləşən qumar müəssisəsinin həqiqiliyinə can atırsınızsa, Pin Up bədii kazino sizin yolunuzdur. Belə hallarda güzgü saytlar oyunçular ötrü lap əla alternativdir. Kataloqda 50-dən daha provayderin oyun avtomatları təqdim olunur və bu siyahı daim genişlənir. Həmçinin kazino 1Moon, Vibra Studio, Betsolutions kimi təzə tərtibatçılarla da əməkdaşlıq edir. Bunlar qabaqda əməli pula dəyişdirilə bilən xüsusi bal sistemidir.

Gəncədən olan oyunçumuz 90 saniyədə qeydiyyatdan keçdi və 50 AZN bonus aldı. Qeydiyyat prosesimiz Azərbaycan oyunçuları üçün sadələşdirilib. Siz artıq Pin-Up oyunu saytında bonuslar almış və mərc etmiş ola bilərsiniz. İlk başladığında, oyun slotlarının sayı bir neçə yüz idi, lakin bu sayədər ara içində artıb və əlan 4000-dən çoxa çatıb. Pin-Up casino vur-tut altı il ərzində əzəmətli bir uğur qazanaraq, 10 milyondan ən istifadəçini qumar sektorunda liderlərdən biri qədər təsdiqləyib. Bu, onun dünyanın müxtəlif ölkələrində lap məşhur kazinolardan biri olmasına səbəb olmuşdur.

Necə Pinup Application Oyunu Daha Asudə Və Iti Edir

Pin up oyunu vahid çox oyunçu üçün həm əyləncə, həm də strategiya tələb edən meydandır. Proqramı yükləməklə siz təzə oyunlar və promosyonlar haqqında bildirişlər ala bilərsiniz. RTP (Return to Player) – oyunçulara qayıdan faiz göstəricisidir.

pin-up oyunu

Azərbaycanlılar üçün Daha Yüksək Pin-up Slot Maşınlarının Siyahısı

Pin-Up Az platformasına üzv olan istifadəçilər, kazinoda qeydiyyatı tamamladıqları andan itibarən bir neçə lazımlı xeyir qazanırlar. Qeydiyyatı olmayan ziyarətçilər isə var-yox seçilmiş oyunlarda demo versiyada oynayabilmektədirlər. Qazanılmış pinkoinlər praktik pula çevrilə bilər, əvəzsiz fırlanmalara dəyişdirilə və ya eksklüziv aksiyalarda istifadə edilə bilər.

Azərbaycanda Pin-up Bonus Proqramı

Pin Up-da seçilən mərc növünə görə əmsallar və marjalar dəyişir. Səciyyəvi əmsallar favorit komandalar üçün x1.3-dən x1.7-yə qədər, daha seyrək tanımlı komandalar ötrü isə x5-ə miqdar dəyişir. Bu, həm saytın qaydası, həm də maliyyə əməliyyatlarının təhlükəsizliyini təmin edən addımdır.

Sədaqətli İstifadəçilərə Subyektiv Təşviqlər

Hər bir fəal istifadəçi pincoin və ya bonus xalları kimi təşviqlərdən yararlana bilər. Bəzi hallarda, ibtidai çıxarış zamanı artıq sənədlər tələb oluna bilər. Faiz dərəcəsi status səviyyənizdən asılı olaraq 10%-ə miqdar ola bilər. Kazino 2016-cı ildə fəaliyyətə başlayıb və təzə gələn bir platformadan sənayedə zəhmli oyunçuya çevrilib. Android cihazları ötrü Pin-Up 141 Casino, şəxsi mobil tətbiq təqdim edir.

Pinup Az Formal Sayt

O, təbiətən formalaşır və oyunçulara müxtəlif mərc strategiyalarını həyata keçirməyə imkan verir. İstədiyiniz idman növünü tez tapmaq ötrü əlifba sırası və ya şəxsi filtrlərdən istifadə edə bilərsiniz. Əgər siz konkret çempionat və turnirlərə mərc edirsinizsə, o vaxt onları “Sevimlilər” bölməsinə artıq 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.

Nəhayət, rəsmi platforma bloklandıqda və ya texniki işdən keçdikdə, onun cüt saytı vasitəsilə sevimli əyləncənizə giriş əldə edə bilərsiniz. Beləliklə, kazino bütün oyunçu ehtiyaclarını ödəyən lap qocaman beynəlxalq platformalardan birinə çevrildi. Pin Up AZ, hədis prosesini daha əlamətdar və sərfəli etmək üçün bir çox bonus və aksiyalar təqdim edir.

  • Təntənəli möhkəm məzmun təqdim etməyə olan qətiyyəti ilə Elçin iGaming sektoru üzrə etimadli bir səda halına gəlmişdir.
  • Bundan artıq, platforma ümumən telefon və planşet ekranları ötrü yaxşı uyğunlaşdırılmışdır ki, bu da oyunları adi brauzerdə işlətməyə imkan verir.
  • Bu xüsusiyyətlər oyunçuların rahat və təhlükəsiz şəkildə oyunlardan həzz almasını təmin edir.
  • Pin-Up Casino təzə və mövcud oyunçuları əhəmiyyətli təşviqlərlə mükafatlandırmaq üçün cəlbedici vahid bonus proqramı təklif edir və kollektiv oyun təcrübəsini zənginləşdirir.

“Professional” QIWI pul kisəsinin qeydiyyatdan keçdiyi mobil nömrədən istifadə etmək var-yox qeydiyyatdan keçərkən vacibdir. Bir https://pinup-azerba-kazino.com tərəfdən, bu, çox rahat yox, çünki gündəlik telefonunuzun yanınızda olması lazımdır. Özgə tərəfdən, bu, oyunçunun şəxsi hesabının yüksək səviyyədə qorunmasını təmin edir.

Pin Up Az-də Geniş Hədis Çeşidi

  • Bununla belə, vahid daha Pin Up kazino onlayn başlıqları təmtəraqlı RTP ilə öyünür və fayda əldə eləmək şansınızı artırır.
  • Pin Way up Casino, O, oyunçularının müxtəlif ehtiyaclarına və üstünlüklərinə bağlı olaraq müxtəlif depozit və pul çıxarma üsullarını təklif edir..
  • Çoxu bu bonuslardan yararlanmaq üçün artıq vəsait ehtiyac etmir.
  • Seçdiyiniz oyunları kupona əlavə etdikdən sonra uduşlarınızı əlbəəl çıxara bilərsiniz.
  • Hüquqi Azərbaycan ofisi beynəlxalq həmkarı ilə qətiyyən vahid şəkildə xarici bağlı deyil.

Qeydiyyat prosedurunu tamamlamasanız da, burada oynaya bilərsiniz. Çoxu bu bonuslardan yararlanmaq üçün əlavə vəsait ehtiyac etmir. Ona proloq eləmək üçün mobil telefonunuzda quraşdırılmış brauzeri istifadə edə bilərsiniz.

Nəzərə alın ki, kazino oyunları təsadüfi dənə generatorları ilə təchiz edilmiş şans oyunlarıdır, ona görə də hər zaman qalib gəlmək mümkün yox. Bununla belə, bir daha Pin Up kazino onlayn başlıqları təmtəraqlı RTP ilə öyünür və xeyir əldə eləmək şansınızı artırır. Pin Up 2016-cı ildə istifadəyə verildiyi gündən qumar bazarında isbatli oyunçu qədər özünü dəlil edir. Platforma təntənəli yükləmə sürəti, sürətli interfeys keçidləri və etibarlı vermə sistemləri ilə seçilir.

  • Məsələn, ibtidai depozit 100% (500 AZN-ə qədər) artırılır və uyğun hədis üçün cashback və pulsuz spinlər verilir.
  • Nəhayət oyunçular Pin Up kazino ilə dost olmaq və oyundan zövq götürmək imkanı əldə edirlər.
  • Pin Up Casino həm təzə, həm də əkəc oyunçular ötrü möhtəşəm bonus sisteminə malikdir.
  • Pin Up kazinoya iç olduğunuz zaman platformun mümkün qədər rahat olduğunu və mütəmadi olaraq yeniləndiyini görmüş olacaqsınız.

Yükləyin Pin Up App Və ümidvar Olun – Bu, Hər Kəs üçün Olmalıdır!

  • Doğrudan işləyən bonuslarPin up var-yox əvəzsiz hədiyyələr vermir – burada əməli faydalar əldə edirsiniz.
  • Bu, kazinonun həqiqətli hədis və şəffaflığın ciddi standartlarına nəzarət etməsini təmin edir.
  • Android üçün şəxsi tətbiq və iOS ötrü mobil versiya, oyun təcrübəsini tamamilə təzə bir səviyyəyə qaldırır.
  • Azerbaycan xidməti tapşırıq verir ki, sizə daha çoxa rahatlıqla hədis oynamanız mümkün olacaq.
  • Pin Up Casino artıq daha ən ölkənin sakinlərinin oynaya biləcəyi bir onlayn platforma genişləndirib.

Pin Up Casino həm yeni, həm də əkəc oyunçular üçün nəhəng bonus sisteminə malikdir. Qocaman oyun kolleksiyası, iti çıxarışlar və çoxlu bonuslarla Pin Up Casino etimadli və əyləncəli onlayn kazino axtaran hər bir oyunçu üçün yetkin seçimdir. Pin-Up Casino AZ tətbiqini cihazınıza yükləyərək mobil telefon vasitəsilə kazino oyunlarından istifadə edə bilərsiniz. Tətbiq həm Android, həm də iOS sistemləri ötrü mövcuddur, lakin yükləmə vur-tut formal sayt üzərindən mümkündür.

Seçdiyiniz oyunları kupona izafi etdikdən sonra uduşlarınızı əlbəəl çıxara bilərsiniz. Pin Up Azerbaijan oyunçuların şəxsi məlumatlarının və ödəniş fəaliyyətlərinin təhlükəsizliyinə bölünməz zaminlik verir. Oynadığınız onlayn kazino oyunları barədə əsla kim elan əldə edə bilməz – bütöv məxfilik qorunur. Doğrudan işləyən bonuslarPin up var-yox əvəzsiz hədiyyələr vermir – burada praktik faydalar əldə edirsiniz. Məsələn, ilk depozit 100% (500 AZN-ə qədər) artırılır və ahəngdar oyun üçün cashback və pulsuz spinlər verilir.

pin-up oyunu

Yüksək möhkəm məzmun təqdim etməyə olan qətiyyəti ilə Elçin iGaming sektoru üzrə etimadli bir səs halına gəlmişdir. Pin-Up Casino istifadəçilərə iti və asudə maliyyə əməliyyatları təqdim edir. Belə hallarda güzgü saytları oyunçular üçün lap yaxşı alternativdir. Oyunun əsas prinsipi mərcin vaxtında geri alınmasına əsaslanır. Hər bir forma və region ötrü rəngarəng komissiyalar da nəzərə alınmalıdır.

  • Həmçinin kazino 1Moon, Vibra Studio, Betsolutions kimi müasir tərtibatçılarla da əməkdaşlıq edir.
  • Proqramı yükləməklə siz müasir oyunlar və promosyonlar haqqında bildirişlər ala bilərsiniz.
  • Bu məqalədə oyunun qaydaları, əsl funksiyaları və xeyirli məsləhətlər barədə danışırıq.
  • Burada siz hesablanmış pinkoinlərin sayını, səhmlər dəstini və cari lotereyaları ötrü bilərsiniz.
  • Böyük hədis kolleksiyası, gur çıxarışlar və çoxlu bonuslarla Pin Up Casino etimadli və gülməli onlayn kazino axtaran hər vahid oyunçu üçün kamil seçimdir.

Promo kod daxil etməklə artıq məbləğ və ya frispin aparmaq mümkündür. Bu, hər bir oyunçunun zövqünə bağlı bir zad tapa biləcəyi, güvənli və həqiqətli vahid oyun platformasıdır. Həmçinin, qocaman cekpotlar aparma imkanı olan proqressiv jackpot avtomatları da mülk ki, bu da oyunçulara həyatlarını dəyişə biləcək məbləğləri qazanmaq şansı verir. Bu, qumar oyunları sahəsində fəaliyyət göstərmək üçün lazımi lisenziyaya əhl qanuni bir onlayn kazinodur. Bundan əlavə, platforma elliklə telefon və planşet ekranları üçün yaxşı uyğunlaşdırılmışdır ki, bu da oyunları təbii brauzerdə işlətməyə imkan verir.

Ehtiyac Olunan Sənədlər

Oyunun qaydası mərc görmək və uçuşu təyyarə düşməzdən başlanğıc dayandırmaqdır. Sıx tənzimləmə standartları ilə idarə olunan Pin Up 306, Curacao tənzimləmə komissiyasının nəzarəti altında lisenziyalı və qanuni vahid kazinodur. Platformada aparılan elliklə maliyyə əməliyyatları xüsusi səlahiyyətlər tərəfindən riayət olunur və bu, həm şəffaflıq, həm də təhlükəsizlik təmin edir. Lakin bəzən bank sistemləri oyunçular kəmiyyət sürətli yoxsa bilər.

Slot oyunlarının müxtəlifliyi Pin Up kazinosunun əsl cəlbediciliklərindən biridir. Burada bədii emosiyalar əldə edərək, pulsuz rejimdə slot maşınlarında əylənmək imkanı əldə edirsiniz. Vur-tut əsl adrenalin coşğunluq etmək ötrü Pin Up klubunun qonaqları deposit qarşılığında praktik rejimdə slot maşınlarında oynaya bilərlər. Pin Up onlayn kazino oyunçularına ən sayda slot oyunları təklif edir. Danışmaq olar ki, hər vahid Pin Up slot maşınında daha çox pul qazanmağınıza sədəqə edən xüsusi bonuslar mövcuddur.

Məsuliyyətli oyun prinsipləri dəstəklənir — ara, limit və balans idarəsi üçün alətlər mövcuddur. Pin up aviator və slot oyunları platformanın mahiyyət bölmələrindəndir. Bankrol menecmentinə diqqət etməklə hədis uzunmüddətli zövq verir.