/** * 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 Azərbaycanda Onlayn Kazino Pin-up: Proloq, Cəld Qeydiyyat, Yüklə - Balaji Retail Design Build
Designing for the Future

Pin Up Casino Azərbaycanda Onlayn Kazino Pin-up: Proloq, Cəld Qeydiyyat, Yüklə

pin up kazino

Bu zaman oyunçu artıq hər depozitə daha azı 9 AZN ilə başlamalıdır. Oyunçu bonusu 120 saat müddətində x50 veyceri ilə mərcə qoymalıdır. Pin Up onlayn kazino ilə depozit və çıxarış tranzaksiyalarını mobil proqramda və vebdə rahatlıqla yerinə yetirəcəksiniz. Təklif edilən ödəniş metodları arasında Piastrix, Binance Bölüm, M10, Visa, MasterCard habelə kriptovalyutalar yer alır.

Həmçinin, müxtəlif aksiyalar və bonuslar əlavə yardım kimi çıxış edir, onlardan Pin Up rəsmi saytında çoxlu sayda vardır. Pin Up Casino izafi daha daha ölkənin sakinlərinin oynaya biləcəyi vahid onlayn platforma genişləndirib. Qeydiyyat prosedurunu tamamlamasanız da, burada oynaya bilərsiniz. Ona başlanğıc görmək üçün mobil telefonunuzda quraşdırılmış brauzeri istifadə edə bilərsiniz. Bu qanuni onlayn casino, qumar fəaliyyəti ilə məşğul olanlar ötrü müvafiq lisenziyaya sahibdir. Rəsmi sayt subyektiv say sahələri və mahiyyət bölmələrin yerləşdirilməsində qiymətli yeniliklər görüb.

Pin Up Azərbaycanlı Istifadəçilər üçün Nə Dərəcədə Təhlükəsizdir?

Cədvəldə Pin-Up platformasının müştərisi olmaqla əldə edəcəyiniz imtiyazların siyahısını görürsünüz. Pin Up 2016-cı ildən Azərbaycanlı oyunçular üçün mərc xidmətləri təqdim edir. Böyük məbləğləri, daha azı 96% RTP əmsalı olan, oyun avtomatları qazanmağa macal verir. Pin Up kazinosunda belə slotlar çoxdur, öz zövqünüzə ötrü seçin. Təzə Pin Up onlayn kazinosu, çoxlu sayda şah ödəniş üsullarından istifadə edərək depozit qoymaq imkanı verir.

Obrazli Dilerlər

Əslində sayt rəhbərliyi onlayn kazino oyunlarını və bukmeker funksiyalarını istifadəçilər üçün mümkün miqdar şəffaf və sadələşdirməyə nail olub. İdmana mərc görmək üçün ya bilavasitə sayta daxil olmalısınız, ya da PC proqramı ilə tayı şeyi etməlisiniz. Var-yox bu halda siz rahat mərc edə və hər şeyin necə işlədiyini başa düşə biləcəksiniz. İstifadəçinin ötən həftə uduzduğu oyunlarda itirdiyi pullar ötrü verilən keşbekdir. 500 AZN keşbek qazanan oyunçunun çıxara biləcəyi maksimal məbləğ 2500 AZN olacaq.

Canlı Kazino Və Tv Oyunlar

Carletta N.V tərəfindən 2016-cı ildə əsası qoyulan mərc platforması azəri oyunçular ötrü tövsiyə edilən lap etibarlı kazinolardan biridir. “TV-oyunlar” bölməsində real müddət rejimində mərc edə biləcəyin hədis şouları təqdim olunub. Fikir edək ki, siz demo versiyasından istifadə edərək əvəzsiz Pin Up slot maşınlarını oynaya bilərsiniz. İstənilən yuvanı asanlıqla sınaqdan keçirə və özünüz üçün lap əla variantı seçə bilərsiniz. Pin Up kazinosunun veb saytı intuitiv və asanlıqla naviqasiya edilə bilən bir interfeysə malikdir.

  • Pin up mobil versiyası slotlar və obrazli oyunlar ötrü optimallaşdırılıb.
  • Daha sonra slotlar və digər oyunlara görüş salmağa başlayaraq mərcə başlaya bilərsiniz.
  • Biz texniki problemlərə və ya suallara gur və qazanclı həllər təklif edirik.
  • Şəksiz ki, Pin Up onlayn kazinosu həm əkəc oyunçular və həm də müasir başlayanlar üçün mükəmməl uyğun varidat.

Pin-up 306 Azərbaycan Kazinosu : Rəsmi Pin Up Saytında Oynayın

Bu, vebsaytda və ya Telegramda onlayn söhbət vasitəsilə edilə bilər. Saytda ödənişlər “Kassir” bölməsi vasitəsilə həyata keçirilir. Azərbaijanlı oyunçular bu 5 punkta bəyan edildiyi qədər nəzarət etməklə asanlıqla hesab açacaqlar. Virtual azartlı hədis müəssisələri ilə çarpışma vasitəsi kimi onların bloklanmasından istifadə olunur. Pin Up kazinosunun qocaman üstünlüyü ondan ibarətdir ki, şöhrətli provayderlər xüsusilə bu virtual müəssisə ötrü brend oyunlar buraxırlar.

Pin Up Casino tətbiqi, 55 fərqli rulet variantını təqdim edir. Aviator, həm təcrübəli, həm də yeni oyunçular üçün məqsəd seçimdir. Pin-Up tətbiqini endirərək Aviator oyununun həyəcanını yaşayın. Aviator, PinUp yukle tətbiqindəki innovativ kazino oyunlarından biridir. Pin-Up APK yükləmə prosesini həyata keçirərkən, tətbiqin var-yox rəsmi mənbələrdən yüklənməsinin əhəmiyyəti böyükdür.

Hədis Seçimi: Azərbaycanda Hər Zövqə əlaqəli Oyuncaq

Ziddinə, bir çox saxta sayt bu yenilikləri inad etdirmir və köhnəlmiş görünüşünü saxlayı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 bir kazinodur. Platformada aparılan elliklə maliyyə əməliyyatları xüsusi səlahiyyətlər tərəfindən baxma olunur və bu, həm şəffaflıq, həm də əmniyyət təmin edir. Pin-Up Oyunusizə filtrsiz və tuş şəkildə balanslaşdırılmış analiz təqdim olunur.

Profilinizdə “Kassa” bölməsi mülk, ora daxil olun və pul ixrac üsulunu seçin. Pin-Up Casino oyunçulara sürətli və təhlükəsiz maliyyə əməliyyatları təklif edir. Saytın adaptiv dizaynı və təntənəli performansı oyunçuların maksimum rahatlığını təmin edir. Pin Up 306 Casino-nun etibarlılıq sistemi aktiv oyunçuları bağışlamaq ötrü şəxsi hazırlanıb. Bu, Pin-Up oyunu daha əhəmiyyətli görmək və artıq imkanlar əldə görmək üçün yaxşı fürsətdir. Belə hallarda güzgü saytlar oyunçular üçün ən əla alternativdir.

Pin Up Casino həm müasir, həm də əkəc oyunçular üçün nəhəng bonus sisteminə malikdir. Parlaq bannerlər, əlçatan yan menyu və sadə struktur — hətta ibtidai dönüm daxil olanlar belə rahatlıqla naviqasiya edə bilir. Oyunları provayderə və ya kateqoriyaya görə filtrdən ötürmək mümkündür — məsələn, yalnız müasir oyunlar və ya Pragmatic Play slotları. İstifadəçi şəxsi kabinetinə daxil olduqdan sonra balansını idarə edə, depozit edə və vəsait çıxara bilir. Tətbiqdə elliklə ödəniş üsulları – bank kartları, elektron cüzdanlar və kriptovalyutalar – bütöv işləkdir.

Pin-Up onlayn kazino saytında strategiya oyunlarını sevənlər rulet və ya kart oyunlarını seçib istədikləri oyunu oynaya bilərlər. Pin Up casino – vahid daha mərc sevənlərin güvənərək və sevərək ziyaret etdikləri lap etimadli onlayn hədis platformudur. Bu uzun müddət ərzində casino müştərinin etibarını qazanmağı https://pin-up-azrb.com və qumar dünyasında liderlərdən biri olmağa nayil oldu.

Bu promosyonlar tez-tez yenilənir, beləliklə oyunçular gündəlik təzə təkliflərdən yararlana bilərlər. Pin Up müxtəlif ölkələrdən oyunçuları qəbul edən təzə və etibarlı onlayn kazinodur. Bu müəssisənin veb-saytında çoxlu sayda slot maşınları və özgə qumar oyunları təklif olunur. Pin Up kazinosunu oyunçular üçün nəyin əhəmiyyətli etdiyini öyrənək. Şəksiz ki, Pin Up onlayn kazinosu həm təcrübəli oyunçular və həm də təzə başlayanlar üçün yetkin əlaqəli gəlir. Pin Up Casino-da qeydiyyatdan keçin, həlim bonuslar əldə edin və möhkəm hədis sessiyasından həzz alın.

Həftənin Slotu

Pin Up Azərbaycan – idman mərcləri, kiberidman və başqa virtual fənlər ötrü yüksək platformadır. Ekspresə izafi hadisələr daxil etdikcə, bukmeker uduşa 10%-dək bonus izafi edir. Vahid çox istifadəçi bu fürsətdən yararlanaraq ekspres mərclərdə uduşlarını artırmağa davam edir. Bu isə onu həm yeni başlayanlar, həm də əkəc oyunçular üçün xüsusilə bax: cəzbedici edir.

  • Formal tətbiqdən artıq, heç vahid yükləmə və quraşdırma tələb etməyən mobil versiya da vardır.
  • Oyunçular nəticələri şəxsi bir cədvəldən izləyə və digər oyunçularla onlayn söhbətə qoşula bilərlər.
  • Ekspresə artıq hadisələr iç etdikcə, bukmeker uduşa 10%-dək bonus artıq edir.
  • Qumar təcrübəsinə start ödəmək ötrü bu bonus fürsəti əvəzolunmazdır.
  • Pin Up 306 Casino-nun ümidlilik sistemi aktiv oyunçuları bağışlamaq üçün subyektiv hazırlanıb.

Daha detallı desək, həm bonuslar, həm də subyektiv tədbirlərdə iştirak imkanı verilir. Demo versiya sizə ödənişsiz şəkildə oyunlara tərəf baxış keçirməyə imkan verir. Daha sonra slotlar və başqa oyunlara baxış salmağa başlayaraq mərcə başlaya bilərsiniz.

pin up kazino

Oyun şirkətlərinin oyunlara yerləşdirdiyi RNG sayəsində Azerbaycan mərc xidmətində qaliblər ədalətlə seçilir. Kazinonun əməkdaşlıq etdiyi şirkətlərin oyunlarında uzaq soxulma, dəcəllik, saxta nəticələr kimi hallar baş vermir. Hədis portalı Azərbaycandan olan oyunçuların diqqətini cəlb edən geniş çeşiddə həvəsləndirmələr təklif edir. Belə bir sənəd oyunun bütöv təhlükəsizliyinə zəmanət verir və aparıcı qemblinq provayderlərinin sertifikatlı hədis avtomatlarının mövcudluğunu təsdiqləyir. Formal Pin Up bukmeker saytı, kazino oyunlarına girişi təklif etmir, çünki bu qanunlarla qadağandır.