/** * 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 Azerbaycan Pin-up Az Rəsmi Saytı, Başlanğıc, Bonuslar, Slot Maşınları - Balaji Retail Design Build
Designing for the Future

Pin Up Casino Azerbaycan Pin-up Az Rəsmi Saytı, Başlanğıc, Bonuslar, Slot Maşınları

pinup az

Ümumilikdə, kazino 115 provayderdən slot avtomatları və diler lobbiləri təklif edir. Qeydiyyat prosedurunu tamamlamasanız da, burada oynaya bilərsiniz. İlk başladığında, oyun slotlarının sayı vahid 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-da İdman Və Esports Mərcləri

Pin Up Seyrək versiyası istifadəçilərə müxtəlif əlaqə kanalları təqdim edir və cavablar adətən sürətlidir. Pin-Up Oyunusizə filtrsiz və dürüst şəkildə balanslaşdırılmış analiz təqdim olunur. Kazino 2016-cı ildə fəaliyyətə başlayıb və müasir gələn bir platformadan sənayedə ciddi oyunçuya çevrilib. Siz ingilis, rus, ukrayna, türk, portuqal, ispan dillərini seçə bilərsiniz. Hesabı vurmaq üçün başqa ö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.

Bonus 120%-ə Kəmiyyət

  • Sweet Bonanza, hər səviyyədən oyunçu üçün əlaqəli bir seçimdir.
  • Oyunçular öz rəylərində yazırlar ki, Pin Up kazino saytında əmanətlər olmadan qarşılanma təmin edilmir.
  • Oyunun qaydası mərc eləmək və uçuşu təyyarə düşməzdən ibtidai dayandırmaqdır.
  • Hər bir aktiv istifadəçi pincoin və ya bonus xalları kimi təşviqlərdən yararlana bilər.

Burada oyunçulara ziddiyyətli idman növlərinin ən məşhur qarşılaşmaları təqdim olunur. Hər bir oyunçunun maraqlarına uyğun idman mərclərində iştirak görmək və ekspress mərclər yaratmaq imkanı mal. Həmçinin, pin up bukmeker kontorunun ümumən canlı hadisələr və qarşıdan gələn hadisələr ötrü müəyyən ətraflı xətti mal.

Pinup Tətbiqinin Üstünlükləri

Hesabınızı ₼500-dən ən artırdığınız vaxt siz həmçinin 250 Pin-Up pulsuz fırlanma əldə edirsiniz. Oyunlar kazino üslubunda hazırlanmışdır və iti-iti udmaq üçün bir çox variant təklif edir. İstənilən büdcəyə olma olan ziyarətçilərin oyunlardan həzz alması üçün mərclərin çeşidi mümkün qədər genişdir. Obrazli dilerlərlə oyunlar uduşların izincə sakit şirkət təmin edəcək.

Pin Up Apk Yukle Formal Saytdan Necə Olar

Pinup-ın öz dəstək komandası var, bu kazinoya ümumən iç olan suallara, o cümlədən baccarat, joker və jetx oyunları ilə bağlı cəld cavab verməyə imkan verir. Pin up dəstəyindən necə əlbəəl cavab götürmək olar burada oxuya bilərsiniz. Ödəniş seçimlərinin müxtəlifliyi isə oyunçuların asanlıqla depozit və çıxarış etməsinə şərait yaradır. Qeydiyyatdan olmuş oyunçular sadəcə istifadəçi adlarını və şifrələrini daxil edərək asanlıqla sistemə iç ola bilərlər.

Oyunların Sürətli Yüklənməsi Və Proqramın Düz Işi

İdmana mərc eləmək üçün ya birbaşa sayta daxil olmalısınız, ya da PC proqramı ilə eyni şeyi etməlisiniz. Vur-tut bu halda siz sərbəst mərc edə və hər şeyin necə işlədiyini başa düşə biləcəksiniz. Şəfəqli bannerlər, əlçatan yan menyu və ürəyiaçiq struktur — hətta ibtidai dəfə 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, var-yox yeni oyunlar və ya Pragmatic Play slotları. Təyyarə nə qədər ən uçursa, ödəniş nisbəti də bir o miqdar təntənəli olur.

Kataloqda rəngarəng oyunlar arasında “Exclusive” işarəsini duymaq olar. Hər kəs oyunu mövzusuna və ya bonus məzmununa əsaslanaraq seçə bilər. Bu prosedur 18 yaşdan yuxarı ümumən oyunçular üçün əlçatandır. Slotlar, canlı dilerlər və ya mərclər üçün uyğun, lokalizasiya olunmuş bir platforma istəyirsinizsə, Pin-Up Online Casino sizi qəmli etməyəcək.

Müştərilərin şəxsi və ödəniş məlumatları etibarlı şifrələmə alqoritmi ilə qorunur. Qaliblərin qocaman pul mükafatları aldığı mütəmadi olaraq poker turnirləri keçirilir. O da düzdür ki, hələ bütün provayderlərdə pulsuz rejim yoxdur.

Şirkətin populyarlaşdırılması ötrü futbol üzrə Azərbaycan milli komandasının kapitanı onun rəsmi səfiri seçilib. Pin-Up AZ Bukmeker kontorundan pulun çıxarılmasının vaxtı metoddan asılıdır. Məsələn, bank kartına köçürdükdə, bu müddət formal olaraq 1 gündən 5 günə qədərdir, amma doğrudan pul daha əlbəəl daxil olur karta. İstifadəçilər oyunun rahatlığını, kazinoya müntəzəm giriş imkanı təmtəraqlı qiymətləndirirlər.

pinup az

Pin Up 2016-cı ildə istifadəyə verildiyi gündən qumar bazarında layiqli oyunçu kimi özünü sübut edir. Nəzərə alın ki, ödəniş sistemindəki hesab sizin adınıza qeydiyyatdan keçməlidir. Real pulla oynamağa keçmək üçün qeydiyyatdan keçməli və depozit qoymalısınız.

  • Bu prosedur 18 yaşdan yuxarı elliklə oyunçular ötrü əlçatandır.
  • Bundan sonra ikona toxunmaq kifayətdir, oyunlara, mərclərə və aksiyalara istədiyiniz dəm iç ola biləcəksiniz.
  • PinUp casino saytında cashback ümumən istifadəçilərə təqdim rdilir.
  • Bahis qucaq, çarpan yüksəlirken çəkilin və əzəmətli fayda əldə edin.
  • Yarışa hər kəs qoşula bilər, əgər kvalifikasiya mərcinin şərtlərini yerinə yetirərsə.

Bundan artıq, rəsmi sayt uzun idman mərcləri seçimlərini dəstəklədiyi halda, saxta saytlarda bu seçimlər ya məhdud olur, ya da ümumiyyətlə mövcud deyil. Pin Up casino online həmçinin kazinonun bütöv nüsxəsi mal, onu qəfəs üzərindən kompüterdən vurmaq olar. Oyunçular öz rəylərində yazırlar ki, Pin Up kazino saytında əmanətlər olmadan qarşılanma təmin edilmir. Əhəmiyyətli və müxtəlif mümkün mərclər yaxşı hədiyyələr qazanmaq üçün böyük şanslar verir. Pin Up oyunu gələn qonaqlar idman yarışlarında doğru cavablara görə aldıqları böyük uduşlardan danışırlar. Güzgü yuxarı qaldırın formal saytla tayı dizayn və xidmətlər çeşidinə malikdir, yeganə ziddiyyət əlavə nömrələr və hərflərdən ibarət domen ünvanındadır.

  • Çeşidli olmasına baxmayaraq, TV oyunları məhdud sayda təqdim olunur.
  • Pinup kazinosunda müxtəlif oyunların qaydaları haqqında uzun məlumatı burada tapa bilərsiniz.
  • Bu, oyunçuların öz üstünlüklərinə əlaqəli oyun tapmasına macal verir.
  • Mobil versiyanın funksionallığını kazino-nun rəsmi saytı ilə münasibət etsək, fərqlər minimumdur.
  • Onun altında davamlı illərdir ki, ofşor kazino və bukmeker kontoru iş göstərir.

Nəhayət, pin-up kazinosu rahat əyləncə və oyunçuları bax: cəzb etmək üçün güzgülər təqdim edərək bu problemi həll etdi. Sayta keçin və pinco kazinosunun oyunçular üçün təqdim etdiyi fərqlənən xidmətlərdən yararlanın. Formal sayt bir neçə dil versiyasını və uzun pinup-bonus-az.com valyuta seçimlərini təklif edir, bu da qlobal istifadəçilər üçün təcrübəni yaxşılaşdırır.

  • Onlayn Pinup kazinosu Android və iOS əsasında mobil telefonlardan əylənmək ötrü ayrıca proqramı təqdim edib.
  • Bu hədis standart poker qaydalarına bağlı oynanır, lakin turnir formatında keçirilir.
  • Qeydiyyatı tamamlamaq üçün oxşar qutunu işarələməklə istifadə şərtləri ilə razılaşmaq ehtiyac olunur.
  • Ona başlanğıc görmək üçün mobil telefonunuzda quraşdırılmış brauzeri istifadə edə bilərsiniz.

Yeni gələnlər pullu xoş gəlmisiniz bonusu ilə oynamağa təşviq edilir. Sayta vaxtaşırı daxil olan istifadəçilər pulsuz fırlanmalara, cashback və əhəmiyyətli hədiyyələrlə lotereyalara arxalana bilərlər. Siz izafi Pin-Up oyunu saytında bonuslar almış və mərc etmiş ola bilərsiniz. İ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 müddət onları “Sevimlilər” bölməsinə artıq edin.

Saytımızda qeydiyyatdan keçin və sakit gəldin bonusunuzu əldə edin. Həm slotlar, həm də klassik masa oyunları ilə unudulmaz bir oyun təcrübəsi yaşayın. Həqiqi pul ilə oynamaq üçün oyunçuların hesablarını maliyyələşdirmələri tələb olunur.

Pin-up Ios Tətbiqini Necə Əldə Görmək Olar?

Casino proqramı istifadəçilərə məhdudiyyətsiz imkanlar təqdim edir. Bu da onu oyunçular arasında məşhur edən səbəblərdən biridir. PIN-UP kazino oyunları və idman mərcləri üçün beynəlxalq oyun platformasıdır. Qeydiyyat zamanı casino bonusunu tökmək bukmeyker səhifəsində qazanmaqdan ən əlverişlidir. Pin Up online casino platforması obrazli oyunlar, klassik rulet, kazinolar, əyləncə televiziya şouları və daha çoxunu birləşdirən uzun vahid hədis seçimi təklif edir.