/** * 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 306 Casino ꙮ Azərbaycanda Formal Pinup Saytı - Balaji Retail Design Build
Designing for the Future

Pin Up 306 Casino ꙮ Azərbaycanda Formal Pinup Saytı

pin-up oyunu

Vur-tut onların sayı deyil, həm də janr müxtəlifliyi təsirləndirir. Hər kəs oyunu mövzusuna və ya bonus məzmununa əsaslanaraq seçə bilər. Pin Up Seyrək versiyası istifadəçilərə rəngarəng bağlılıq kanalları təqdim edir və cavablar adətən sürətlidir.

Üstəlik, burada təqdim olunan ümumən oyunlar nüfuzlu oyun provayderləri tərəfindən hazırlanıb, bu səbəbdən otarma hallarına çarə verilmir. Pin up casino proloq prosesi oyunçular üçün asudə və asudə olmalıdır. Hədəf — etibarlı şəkildə hesabına daxil olmaq, balansını idarə eləmək və oyunlardan duyma almaqdır. Sayt asudə oyun mühiti və rahat ödəniş üsulları ilə seçilir.

  • Mobil versiya və tətbiq vasitəsilə istənilən yerdən kazino oyunlarına başlanğıc mümkündür.
  • Heç bir əlavə proqram yükləmədən, sadəcə brauzer vasitəsilə elliklə kazinonun funksiyalarına daxil ola bilərsiniz.
  • İstədiyiniz idman növünü tez tapmaq ötrü əlifba sırası və ya şəxsi filtrlərdən istifadə edə bilərsiniz.
  • Pin Up Casino-nun formal veb-saytı, istifadəçilərin fikirlərinə əsasən, Azərbaycanda ən tanımlı şans oyunları platformalarından biri kimi tanınır.

Həqiqi pul ötrü oynamağa başlamaq ötrü istifadəçilərin Pin Up Kazinoda hesab yaratmaları tələb olunur. Hesab yaradıldıqdan sonra oyunçular depozit yiğmaq, promosyon təkliflərində iştirak etmək və qazandıqları pulları çıxarmaq imkanına olma olurlar. Bundan əlavə, müasir qeydiyyatdan keçənlər xoş gəlmisiniz paketinin bir hissəsi olaraq qeydiyyat bonusu əldə edirlər.

Pin Up 306 Oyunları: Hitlər Və Yeniliklər

Mobil tətbiq isə, iOS və Android əməliyyat sistemləri üçün mövcuddur və Pin Up kazinosunun formal veb saytından yüklənə bilər. Mobil tətbiq, daha gur və effektiv vahid hədis təcrübəsi üçün şəxsi olaraq dizayn edilmişdir. Bu versiya, kiçik ekran ölçülərinə uyğunlaşdırılmış sadələşdirilmiş bir interfeys təqdim edir, lakin eyni zamanda kazinonun bölünməz funksionallığını saxlayır. Pin Up kazinosunun mobil versiyası və mobil tətbiqi, oyunçulara hər yerdə və hər zaman əziz oyunlarını əylənmək imkanı təqdim edir. Canlı dilerlər ilə masalar isə, praktik kazino atmosferini evinizin rahatlığına gətirir.

Praktik Cash Və Win üçün Pin Up Oyunlarını Oynaya Bilərəmmi?

Bu qaydalarla pin up casino təcrübən daha sərbəst və güvənli olacaq. Pin Up kazinosunun oyunçu dəstək xidməti, istifadəçilərin suallarına sürətli və effektiv cavablar qaytarmaq məqsədilə yüksək səviyyədə xidmət göstərir. İstifadəçilər qazandıqları pulu bank kartlarına, elektron cüzdanlara və ya özgə ödəniş sistemlərinə asanlıqla köçürə bilərlər.

  • Qumarbazlar üçün vahid daha seçim mövcuddur, var-yox müştərilərinə şəffaf qaydalar və dürüst rəftar təqdim edən yüksək bir platformanı tapmaq çətindir.
  • Platformada aparılan bütün maliyyə əməliyyatları şəxsi səlahiyyətlər tərəfindən riayət olunur və bu, həm şəffaflıq, həm də təhlükəsizlik təmin edir.
  • Səciyyəvi əmsallar favorit komandalar üçün x1.3-dən x1.7-yə miqdar, daha seyrək tanımlı komandalar üçün isə x5-ə kəmiyyət dəyişir.
  • Beləliklə oyunçular macəra, meyvə, cadu, fantaziya daxil olmaqla rəngarəng janrlı slot maşınlarından seçim edə bilərlər.
  • 24/7 dəstək – sadəcə sözlər deyilSualınız və ya probleminiz varsa, dəstək olun pin up fasiləsiz işləyir.

Pin-up 306-da Dəstəklənən Valyutalar

Bu xüsusiyyətlər oyunçuların rahat və təhlükəsiz şəkildə oyunlardan həzz almasını təmin edir. Pin-Up Casino bu kateqoriyaya şəxsi diqqət ayırır və lap şah oyunları oyunçulara təqdim edir. PinUp Casino-da oyunçulara ətraflı seçim imkanı verən müxtəlif janrlarda oyunlar təqdim olunur. Bu, 9 səviyyədən ibarət olan etibarlılıq proqramı ilə əlaqəli vahid hədis valyutasıdır. Toplanmış xallar ouonçunun səviyyəsini artırır və real pula dəyişdirilə bilər. Pin Up casino – vahid ən mərc sevənlərin güvənərək və sevərək ziyaret etdikləri lap etimadli onlayn oyun platformudur.

Pin Up Kazinoda Müştəri Dəstəyi

  • Bu yanaşma oyunçulara hətta aşağı iti İnternet bağlantısından istifadə edərkən mərc etməyə macal verir.
  • Qeydiyyat prosedurunu tamamlamasanız da, burada oynaya bilərsiniz.
  • Bu xüsusiyyətlər oyunçuların rahat və asudə şəkildə oyunlardan duyma almasını təmin edir.
  • Əgər hər şey düzgün yazıldığı halda Pin Up Casino-ya iç olunmursa, «Şifrəmi unutdum» seçimini edərək, şifrənizi yeniləyə bilərsiniz.

Daima xidmətlərimizi irəliləyiş etdirərək, təmtəraqlı davamlı məhsul və xidmət təqdim etməyə çalışırıq. Dünyada lap əhəmiyyətli məkanlardan biri, burada istifadəçilərə xeyli təşviqlər təklif edilir. Aşağıda brendimizin miqyasını, populyarlığını və performansını vurğulayan mahiyyət rəqəmlər verilmişdir.

  • Pulunuzu bank kartına, elektron pul kisəsinə və ya başqa ödəniş sistemlərinə çıxarmaq üçün çox sayda rahat çarə mövcuddur.
  • Bu addımlardan sonra siz mobil qadcetinizdə slot maşınlarını sərbəst işə sala və demo rejimində oynaya bilərsiniz.
  • Əla kazino təkcə parlaq işıqlardan və fırlanan çarxlardan ibarət deyil.
  • Oyunçular nəticələri xüsusi bir cədvəldən izləyə və digər oyunçularla onlayn söhbətə qoşula bilərlər.

Cəld Ödənişlər Və Məlumatların Qorunması

Rəsmi Pin Up bukmeker saytı, kazino oyunlarına girişi təklif etmir, çünki bu qanunlarla qadağandır. Populyar idman növləri, matç statistikası və LIVE rejimdə mərclər sizin ötrü əlçatandır. Saytımızda qeydiyyatdan keçin və sakit gəldin bonusunuzu əldə edin.

Pin Up Kazinoda Bədii Oyunlar

Pin-Up online casino — Azərbaycanda və dünya miqyasında tanınan, 2016-cı ildən fəaliyyət göstərən beynəlxalq onlayn kazinodur. Müasir başlayanlardan tutmuş peşəkar oyunçulara kəmiyyət hər kəs ötrü uyğun macal yaradılıb. IOS cihazları üçün subyektiv bir tətbiq təqdim olunmur, lakin formal saytın toplu yolunu əsl ekrana izafi etmək mümkündür. Onlardan istifadə edərək, istənilən yerdə sevdiyiniz oyunlardan həzz alın.

Pin-up Kazinosuna Iç Ol

Pin-Up Oyunusizə filtrsiz və dürüst şəkildə balanslaşdırılmış analiz təqdim olunur. Funksionallıq və istifadə rahatlığı baxımından qətiyyən bir kompromis yoxdur. Azərbaycan istifadəçiləri üçün depozit və para çıxarma üsulları olduqca rahatdır.

Bu bonuslar, oyunçuların daha ən oyun oynamaq və ən əzəmətli qazanclar əldə görmək imkanlarını artırır. Pin Up 360 Casino, Azərbaycan oyunçuları üçün etibarlı, rahat və müxtəlif oyun imkanları təqdim edən bir platformadır. Pin Up Kazino mobil versiyası oyunçulara asudə, gur və funksional hədis təcrübəsi təqdim edir. Əsla bir izafi proqram yükləmədən, sadəcə brauzer vasitəsilə kazinonun ümumən funksiyalarından istifadə etmək mümkündür. Pin Up Casino oyunçuların rahatlığını təmin etmək üçün mobil cihazlarda istifadə oluna bilən həllər təqdim edir.

Lakin “Pin-Up” brendi davamlı müddətdir ki, onlayn qumar əyləncələrinin pərəstişkarlarına məlumdur. Onun altında uzun illərdir ki, ofşor kazino və bukmeker kontoru fəaliyyət göstərir. Hüquqi Azərbaycan ofisi beynəlxalq həmkarı ilə heç bir şəkildə formal bağlı deyil. Bu hədis standart poker qaydalarına əlaqəli oynanır, lakin turnir formatında keçirilir. Ənam fondları əhəmiyyətlidir, bəzi seriyalarda, məsələn, Spin & Gold və ya Omaholic-də 100,000 USD-dən ən mükafatlar mövcuddur.

7 Ianə Pin Up Online Casino: Istənilən Vaxt Texniki Dəstəyi Necə Əldə Görmək Olar

Android üçün şəxsi tətbiq və iOS üçün mobil versiya oyun təcrübəsini tamamilə uçurumlu səviyyəyə qaldırır. Qeydiyyat var-yox rəsmi internet saytında yox, həm də mövcud PinUp İnternet güzgüləri vasitəsilə mümkündür. Siz avtorizasiya üçün telefon nömrəsi və SMS istifadə edərək, “Pin Up” xidmətinə proloq və parol olmadan daxil pin up tətbiqini ola bilərsiniz. Bundan artıq qonaqlar VK, Facebook və ya Google hesabları vasitəsilə Pin-Up casino saytında hesabı aktivləşdirə biləcəklər.

pin-up oyunu

Mobil Kazino

IOS cihazları ötrü ayrı bir tətbiq təqdim edilmir, amma formal saytın yiğcam yolunu əsas ekranınıza izafi eləmək mümkündür. Pin Up online casino platforması bədii oyunlar, klassik rulet, kazinolar, əyləncə televiziya şouları və ən çoxunu birləşdirən geniş bir oyun seçimi təklif edir. Pin-Up Casino yeni və mövcud oyunçuları qiymətli təşviqlərlə mükafatlandırmaq üçün bax: cəzbedici bir bonus proqramı təklif edir və ictimai hədis təcrübəsini zənginləşdirir. Bu qarşılama bonusu oyunçulara artıq vəsaitlərlə kazinonun uzun oyun seçimini ixtira etməyə imkan verir, əzəmətli vahid ilkin sərmayə qoymadan qazanma şanslarını artırır. Platformada ən yüksək uduş potensialı ekspress mərclərdədir, lakin bu mərclər ən risklidir.