/** * 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ərbaycan Formal Sayt, Bonuslar Və Proloq - Balaji Retail Design Build
Designing for the Future

Pin Up Casino Azərbaycan Formal Sayt, Bonuslar Və Proloq

pinup az

Hər bir aktiv istifadəçi pincoin və ya bonus xalları kimi təşviqlərdən yararlana bilər. Onlardan vacib turnirlər və aksiyalar haqqında daha pin up daha bildiriş əldə etmək olar. Pin-Up brendi rəsmi saytının lakonik dizaynı ilə diqqət çəkir. Mən usta idmançı kimi uzun illər meydanda taktika, sürət və reaksiya üzərində işləyirəm. Bəzi hallarda, ilk çıxarış zamanı izafi sənədlər tələb oluna bilər. Faiz dərəcəsi status səviyyənizdən əlaqəli olaraq 10%-ə miqdar ola bilər.

Ünvanlara Proloq

Kazino ilə yanaşı, idman bahisləri də istifadəçilər ötrü əlçatandır. Bölmədə həmçinin “TV-oyunlar” səhifəsindən lobbinin bir hissəsini təqdim edilib. Əsas ölçü olaraq, təntənəli RTP (İstifadəçiyə qaytarılan pul faizi) dərəcəsi olan vahid slot maşını seçmək lap vacibdir. Pin Up-daki bonus təklifi qumar sənayesində lap maraqlı təkliflərdən biri miqdar edilir. Həmçinin, Android və iPhone üçün rəsmi Pin Up Bet proqramını yükləmək də mümkündür. Lakin burada əməliyyat tarixçəsi və çoxdan yığılmış bonuslar göstərilmir.

əski Hesabıma Başlanğıc Edə Bilmirəm Nə Edim?

  • Azərbaycan istifadəçiləri üçün depozit və para ixrac üsulları dedikcə rahatdır.
  • Bölmədə həmçinin “TV-oyunlar” səhifəsindən lobbinin vahid hissəsini təqdim edilib.
  • Pin Up-daki bonus təklifi qumar sənayesində lap əlamətdar təkliflərdən biri miqdar edilir.
  • АViator, pin up kazino platformasında lap populyar oyunlardan biridir.
  • Pin-Up casino yalnız altı il ərzində böyük vahid uğur qazanaraq, 10 milyondan çox istifadəçini qumar sektorunda liderlərdən biri qədər təsdiqləyib.
  • Pin Up casino online tərəfindən təklif olunan ümumən bonuslar öz oyunçu ofisində aktivləşdiriləcək.

Biz Pin Up olaraq sizə daha yüksək oyun təcrübəsini təqdim etməyə sadiqik. Tətbiqin ən axir versiyasını rəsmi veb-saytımızdan yükləməklə, tətbiqinizin bütöv optimallaşdırılmış və güncəl olduğuna ümidvar ola bilərsiniz. Pin Up Bet APK yükləyərək Android və iOS cihazlarınız üzərindən mərc etməyə başlaya bilərsiniz. Ante Bet seçimi ilə oyunçular əvəzsiz dövrlər aparma şansını artıra bilərlər. Sweet Bonanza, hər səviyyədən oyunçu üçün uyğun vahid seçimdir. Tətbiqimizi endirərək Sweet Bonanza oyununun həyəcanını yaşayın.

Pin Up Azerbaijan Oynamağa Necə Durmaq Lazımdır?

Onlayn kazinolar adi oyunçularına çoxlu bonuslar, keşbek, pulsuz fırlanmalar və hədiyyə aksiyalar təqdim edir. İlk oyununuza girdiyiniz zaman pulsuz pin-up spinləri və promo kodlar vasitəsilə əlavə aksiyalar aktivləşdirilə bilər. Bununla belə, pinup kazinosunun uçurumlu cəhəti ondan ibarətdir ki, siz oyundakı ümumən bonusları əməli pul üçün mərc etməlisiniz. Demo oyunlar və demo rejimi vasitəsilə oyunlara risksiz başlamaq imkanı da mövcuddur.

Texniki Dəstək

pinup az

Pinupapp.com, onlayn oyun icması üçün nəzərdə tutulmuş Pin Up mobil tətbiqi haqqında uzun məlumat və rəylər təqdim edən bir platformadır. Bu Saat pinupapp.com üçün Pin Up tətbiqini dərindən araşdırıram. Geniş kazino oyunları seçimi və idman mərcləri ilə, müxtəlif istifadəçi zövqlərinə iş edir. Təzə istifadəçilər proqramımızı yüklədikdən sonra bonuslara anında başlanğıc əldə edirlər.

Pin Up Mərc Saytı Etibarlıdırmı?

Müştərilərin şəxsi və ödəniş məlumatları etibarlı şifrələmə alqoritmi ilə qorunur. Qaliblərin əzəmətli 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ə əvəzsiz rejim yoxdur.

pinup az

Elliklə oyunlar lisenziyalıdır, təntənəli RTP (Return to Player) faizinə malikdir və ən qabaqcıl proqram təminatçılar tərəfindən dəstəklənir. Bu barədə Qaydalar və Şərtlər bölməsində uzun öyrənə bilərsiniz. Rəsmi resursda mövcud olan istənilən slot maşınları, ruletkalar, kart oyunları proqramda mövcuddur. Proqram təminatının funksionallığı saytın mobil versiyasından daha yüksəkdir.

  • Digər tərəfdən, bu, oyunçunun subyektiv hesabının təmtəraqlı səviyyədə qorunmasını təmin edir.
  • Yeni gələnlər gəlirli xoş gəlmisiniz bonusu ilə oynamağa təşviq edilir.
  • Onlayn Pin Up casino online rubl, manat, dollar və avro ilə mərc etmək imkanı verir.
  • Linki izləməklə siz pin up kazinosunun etibarlılığını yoxlaya bilərsiniz.

Burada oyunçulara ziddiyyətli idman növlərinin daha tanımlı qarşılaşmaları təqdim olunur. Hər vahid oyunçunun maraqlarına uyğun idman mərclərində iştirak etmək və ekspress mərclər tikmək imkanı mal. Həmçinin, pin up bukmeker kontorunun bütün canlı hadisələr və qarşıdan gələn hadisələr üçün aydın ətraflı xətti var.

pinup az

Kataloqda rəngarəng oyunlar arasında “Exclusive” işarəsini sezmək olar. Hər kəs oyunu mövzusuna və ya bonus məzmununa əsaslanaraq seçə bilər. Bu prosedur 18 yaşdan yuxarı elliklə oyunçular ötrü ə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.

Pin Up Kazinonun Xüsusiyyətləri Və Seçilənlər

Pin-Up casino yalnız altı il ərzində böyük bir müvəffəqiyyət qazanaraq, 10 milyondan daha 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ə ən tanınmış kazinolardan biri olmasına cəhət olmuşdur. Ona başlanğıc eləmək üçün mobil telefonunuzda quraşdırılmış brauzeri istifadə edə bilərsiniz. Onlayn Pinup kazinosu Android və iOS əsasında mobil telefonlardan əylənmək üçün ayrıca proqramı təqdim edib. Məqsədimiz — istifadəçilərə əcəb və mədaxilli bir xidmət təqdim etməkdir. Pin Up-da seçilən mərc növünə görə əmsallar və marjalar dəyişir.

Siz hətta oxşar otağa qoşularaq ingilis dili biliklərinizi yoxlaya bilərsiniz. Müasir oyunçular 10,000 ₼ kəmiyyət mülayim gəlmisiniz bonusu və 250 pulsuz fırlanma ilə qarşılanır. Əbədi ziyarətçilər həftəlik cashback, depozitsiz bonus, Hədiyyə Qutuları və loyallıq proqramında iştirak üçün mükafatlara arxalana bilərlər. “Professional” QIWI para kisəsinin qeydiyyatdan keçdiyi mobil nömrədən istifadə eləmək var-yox qeydiyyatdan keçərkən vacibdir. Android üçün Pin-Up proqramını var-yox şirkətin rəsmi saytından yükləyə bilərsiniz. Əlavə üsul isə mobil telefonunuzdan dərhal Pin-Up rəsmi saytına iç olmaqdır.

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

  • İstədiyiniz idman növünü əlbəəl tapmaq üçün əlifba sırası və ya şəxsi filtrlərdən istifadə edə bilərsiniz.
  • Əgər ölkədə bloklanmışsa, təzə güzgü saytlardan və ya VPN xidmətlərindən istifadə edə bilərsiniz.
  • Aşağıda brendimizin miqyasını, populyarlığını və performansını vurğulayan mahiyyət rəqəmlər verilmişdir.
  • Hətta mərc etməyə də lüzum yoxdur – bəzi istifadəçilər sadəcə izləməkdən həzz alırlar.
  • Formal portala başlanğıc bu və ya başqa səbəbdən bloklanırsa, sonuncu lazım ola bilər.

Lisenziya Və əmniyyət

  • Bunlardan uçmaq üçün vahid seyrək vaxt sərf edib artıq olaraq APK faylının təhlükəsizliyini yoxlamaq daha yaxşıdır.
  • Bundan izafi, yeni qeydiyyatdan keçənlər sakit gəlmisiniz paketinin bir hissəsi olaraq qeydiyyat bonusu əldə edirlər.
  • PIN-UP kazinosunun rəsmi saytında pulsuz və qeydiyyat olmadan oynamaq olar.
  • Pin Up casino online həmçinin kazinonun bölünməz nüsxəsi mal, onu barmaqlıq üzərindən kompüterdən yükləmək olar.
  • Tanımlı idman növləri, matç statistikası və LIVE rejimdə mərclər sizin ötrü əlçatandır.

Müasir 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ə qiymətli hədiyyələrlə lotereyalara arxalana bilərlər. Siz artıq Pin-Up oyunu saytında bonuslar almış və mərc etmiş ola bilərsiniz. İstədiyiniz idman növünü əlbəəl tapmaq ötrü əlifba sırası və ya xüsusi 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ə izafi edin.

Tətbiq vasitəsilə artıq olaraq subyektiv aksiyalara və oyunlara proloq imkanı açılır. Əsas səhifədə vur-tut oyun avtomatları kataloqu və aksiyalarla bağlı bannerlər təqdim olunur. Mobil versiyanın funksionallığını kazino-nun rəsmi saytı ilə münasibət etsək, fərqlər minimumdur. PinUp mobil tətbiqi – Android cihazlarından oynamaq üçün asudə bir vasitədir. Kazinonun rəsmi proqramı müasir texnologiyalarla işlənib hazırlanmışdır ki, bu da onun keyfiyyətini və düşünülmüş funksionallığını təsdiqləyir. Yarışa hər kəs qoşula bilər, əgər kvalifikasiya mərcinin şərtlərini yerinə yetirərsə.

PinUp casino saytında cashback ümumən istifadəçilərə təqdim rdilir. Kataloqda aləm üzrə 50-dən ən tərtibatçıdan 6000-dən daha oyun avtomatı toplanıb. Bu, oyunçuların öz üstünlüklərinə əlaqəli hədis tapmasına imkan verir. Platforma daim yeni oyunları və qumar tendensiyalarını izləməyi təklif edir. Əgər vahid seyrək ara sərf etsəniz, Android üçün APK fayllarını başqa resurslarda da tapa bilərsiniz.

Bu valyutanı əməli pula, bonusa və ya əvəzsiz fırlanmalara pozulmaq mümkündür. Biz formal vebsaytı, mobil versiyanı və Pin Up güzgüsünü ziyarət etməyi təklif edirik. Rəsmi portala giriş bu və ya özgə səbəbdən bloklanırsa, sonuncu lazım ola bilər. Resursda qeydiyyat bir-iki klik şəklində həyata keçirilə bilər, pullu bonus çixmaq. “TV-oyunlar” bölməsində real müddət rejimində mərc edə biləcəyin oyun şouları təqdim olunub.