/** * 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 Rəsmi Saytı Slot Maşınları - Balaji Retail Design Build
Designing for the Future

Pin Up Casino Rəsmi Saytı Slot Maşınları

pin up az

Oyunları provayderə və ya kateqoriyaya görə filtrdən keçirmək mümkündür — məsələn, vur-tut yeni oyunlar və ya Pragmatic Play slotları. Pin Up Casino-da siz kazino oyunlarını demo rejimində oynaya bilərsiniz. Bu, əməli pulunuzu riskə atmadığınız, ziddinə, mərclərinizi virtual pulla yerləşdirdiyiniz hədis rejimidir. Bütün məşhur aləm slotları və bədii kazino oyunları sizin üçün əlçatandır, biz isə müntəzəm yenilərini artıq etmək üzərində işləyirik. Kazino bölmələrimizdə naviqasiya eləmək asandır və şəxsi bir zad axtarırsınızsa, axtarış çubuğundan istifadə edə bilərsiniz.

Bonus Haqqında Rəylər

Pin Up kazino platformasında hesabınızı yaradın və rəngarəng qaytarma metodları ilə asudə çıxarışlar həyata keçirin. Saytımızda qeydiyyatdan keçin və mülayim gəldin bonusunuzu əldə edin. Həm slotlar, həm də klassik masa oyunları ilə silinməz bir oyun təcrübəsi yaşayın. Məqsədimiz — istifadəçilərə əyləncəli və gəlirli bir xidmət təqdim etməkdir. Sortlu olmasına baxmayaraq, TV oyunları məhdud sayda təqdim olunur. Oyunun qaydası mərc etmək və uçuşu təyyarə düşməzdən ibtidai dayandırmaqdır.

Pin Up Casino-nun Bonus Sistemi Necə Işləyir

Pin Up 2016-cı ildə istifadəyə verildiyi gündən qumar bazarında görkəmli oyunçu kimi özünü sübut edir. İlk başladığında, hədis slotlarının sayı vahid neçə yüz idi, lakin bu sayədər ara içində artıb və indi 4000-dən çoxa çatıb. Pin-Up casino var-yox altı il ərzində qocaman vahid müvəffəqiyyət qazanaraq, 10 milyondan ən istifadəçini qumar sektorunda liderlərdən biri kimi təsdiqləyib.

Pin Up kazinoya daxil olduğunuz vaxt platformun mümkün miqdar asudə olduğunu və mütəmadi olaraq yeniləndiyini görmüş olacaqsınız. Biz rəsmi vebsaytı, mobil versiyanı və Pin Up güzgüsünü ziyarət etməyi təklif edirik. Formal portala proloq bu və ya özgə səbəbdən bloklanırsa, axirinci lazım ola bilər. “TV-oyunlar” bölməsində real ara rejimində mərc edə biləcəyin oyun şouları təqdim olunub. Nəzərə alın ki, kazino oyunları təsadüfi dənə generatorları ilə təchiz edilmiş şans oyunlarıdır, ona görə də hər vaxt qalib gəlmək mümkün deyil. Bununla belə, vahid ən Pin Up kazino onlayn başlıqları yüksək RTP ilə öyünür və xeyir əldə görmək şansınızı artırır.

şəxsi Hesabdan Para çıxarma Xüsusiyyətləri

  • Bunlardan uçmaq üçün bir nadir vaxt sərf edib izafi olaraq APK faylının təhlükəsizliyini aramaq daha yaxşıdır.
  • Kazinonun rəsmi veb sayt dizaynı, sizi ən yüksək qalib yönəlmək üçün təşviq edəcək unikal bir atmosfer yaradır.
  • Pin-up bet saytı, gələcəkdə mərc ötrü hadisələri favoritlər siyahısına izafi etməyə imkan verir.
  • Platformanın idman bahis seçimi də asudə və etibarlıdır.

Daha detallı desək, həm bonuslar, həm də subyektiv tədbirlərdə iştirak imkanı verilir. O, keyfiyyətcə formalaşır və oyunçulara rəngarəng mərc strategiyalarını həyata keçirməyə imkan verir. “Professional” QIWI para kisəsinin qeydiyyatdan keçdiyi mobil nömrədən istifadə eləmək yalnız qeydiyyatdan keçərkən vacibdir.

  • Həmçinin, Pin Up-un rəsmi tərəfdaşı olaraq, bizimlə email protected ünvanında bağlılıq saxlaya bilərsiniz.
  • PIN-UP kazino oyunları və idman mərcləri üçün beynəlxalq oyun platformasıdır.
  • Bununla belə, vahid daha Pin Up kazino onlayn başlıqları yüksək RTP ilə öyünür və xeyir əldə etmək şansınızı artırır.
  • Biz hər zaman oyunçularımızın rifahını prioritet hesab edirik.

İlk Depozitə Bonus

  • Bundan əlavə, faydalı FAQ bölməsi var ki, orada artıq lap çox verilən suallar və onlara cavablar vardır.
  • Onlayn qumarxanamızdakı oyunların müxtəlifliyi şübhəsiz vahid üstünlükdür.
  • Tətbiqin lap son versiyasını rəsmi veb-saytımızdan yükləməklə, tətbiqinizin bölünməz optimallaşdırılmış və güncəl olduğuna ümidvar ola bilərsiniz.
  • Saytda ayaqlamaq o qədər rahatdır ki, gərək olan bölmələri tapmaq üçün əlavə ara sərf etməyə ehtiyac yoxdur.

Bundan əlavə, faydalı FAQ bölməsi mülk ki, orada artıq lap daha verilən suallar və onlara cavablar vardır. Pin Up onlayn kazinosu fikrini Azərbaycandan olan oyunçularda cəmləşdirir. Bölünməz lokallaşdırılmış interfeys və AZN-də oyun hesabı yaratmaq imkanı. Ətraflı kazino oyunları seçimi və idman mərcləri ilə, müxtəlif istifadəçi zövqlərinə xidmət edir. Yeni istifadəçilər proqramımızı yüklədikdən sonra bonuslara anında başlanğıc əldə edirlər. 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.

Keyfiyyətli optimizasiya oyunların sürətli yüklənməsini də təmin edir. İstənilən an telefonu götürüb platformanı işə sala bilərsiniz. Ölməz aksiyalar iti-iti yeni müvəqqəti təkliflərlə tamamlanır. Əgər onu telefona qondarmaq istəmirsinizsə, sərbəst mobil sayt versiyası mövcuddur. Bir daha uçurumlu idman növləri və tədbirlər ötrü geniş bahis təklifi.

  • Megaways slotlar dəyişkən ödəniş xətləri, təmtəraqlı volatilitlik, RTP 96-97%.
  • PinUp casino saytında cashback bütün istifadəçilərə təqdim rdilir.
  • Daima aktiv olaraq iştirak edən istifadəçilərə şəxsi mükafatlar verilir.
  • Belə tədbirlər səxavətli ənam fondu və rəngarəng mexanika nəzərdə tutur.
  • Bədii mərc zamanı hətta favorit komandaya da əlaqəli əmsallar əldə etməyə şans mülk.

Casino Pin-up Hesabımı Necə Depozit Edə Bilərəm?

Android üçün Pin-Up proqramını vur-tut şirkətin rəsmi saytından yükləyə bilərsiniz. Əlavə forma isə mobil telefonunuzdan əlbəəl Pin-Up rəsmi saytına daxil olmaqdır. Pin Up casino – bir çox mərc sevənlərin güvənərək və sevərək ziyaret etdikləri daha etibarlı onlayn oyun platformudur. Bu sürəkli müddət ərzində casino müştərinin etibarını qazanmağı və qumar dünyasında liderlərdən biri olmağa nayil oldu.

pin up az

Pin Up Casino Azərbaycan

Platformamız iştirakçılara zəngin iş seçimləri, cəlbedici bonuslar və dəstək xidmətləri ilə kamil bir imtahan təqdim edir. Pin Up Casino Azərbaycanda oyunçular üçün hazırlanmış müxtəlif aksiyalar və Pin up bonuslar təklif edir. Bunlar gələcəkdə real pula dəyişdirilə bilən xüsusi bal sistemidir. Həmçinin, qurumun keşbek və Şöhrət günü hədiyyəsi də iç olmaqla, vahid çox digər bonusları da mal. Böyük məbləğləri, ən azı 96% RTP əmsalı olan, hədis avtomatları qazanmağa imkan verir. Pin Up kazinosunda belə slotlar çoxdur, öz zövqünüzə görə seçin.

  • Wager (mərc tələbi) bonus vəsaitlərini praktik pula yıxmaq ötrü tamamlanmalıdır.
  • “Professional” QIWI pul kisəsinin qeydiyyatdan keçdiyi mobil nömrədən istifadə görmək yalnız qeydiyyatdan keçərkən vacibdir.
  • Pin Up oyunu gələn qonaqlar idman yarışlarında düzgün cavablara üçün aldıqları əzəmətli uduşlardan danışırlar.

Məhəmməd Əliyev, kazino sənayesində sürəkli illərdir iş göstərən əkəc bir kazino rəyçisidir. Onlayn və fiziki kazinoları geniş şəkildə araşdıraraq, oyunçulara etibarlı və doğru rəylər təqdim edir. Ofis asudə şərtlər təklif etməklə tay, gecə-gündüz müştəri dəstəyini də gücləndirmişdir. Bukmeker, hər bir platformada gur pin-up bahis giriş təklif edərək, komfortlu mərc prosesinə imkan yaradır. Yəni, pin up bahis hər hansı bir idman hadisəsinə xüsusi kupon üzərindən qoyulur.

Sistem Tələbləri Və Müvafiqlik

Qeydiyyat zamanı casino bonusunu yığmaq bukmeyker səhifəsində qazanmaqdan ən əlverişlidir. Rəsmi Pin Up bukmeker saytı, kazino oyunlarına girişi təklif etmir, çünki bu qanunlarla qadağandır. Bu tətbiqlər pinup-ı mobil proqramlar hazırlamayan, sadəcə olaraq saytın mobil veb versiyasını yaradan bir daha rəqiblərdən fərqləndirir.

Pin-Up online casino — Azərbaycanda və aləm miqyasında tanınan, 2016-cı ildən fəaliyyət göstərən beynəlxalq onlayn kazinodur. Təzə başlayanlardan tutmuş usta oyunçulara miqdar hər kəs üçün uyğun şərait yaradılıb. Iç olmaqla, masaüstü versiyada mövcud olan oyunların bölünməz çeşidini təklif edir. Axıcı bildirişləri ilə istifadəçilər aksiyalar və oyun hadisələrindən xəbərdar ola bilərlər. Sözsüz ki, Pin Up onlayn kazinosu həm təcrübəli oyunçular və həm də təzə başlayanlar üçün mükəmməl əlaqəli varidat.

Oyunçuların əzəmətli vahid hissəsi bu platformanı asudə interfeysi, geniş oyun seçimi və mükəmməl müştəri dəstəyi sayəsində seçir. Siz oyununda hər hansı özgə pin up az slotlarda olduğu kimi qalib gələ bilərsiniz. Strategiyalar sizə oyunu qurmağa macal verir, ancaq qazanmağa deyil.

Texniki Dəstək Və Müştəri Xidməti – Məlumatı Ehtiyac Edin

Sayta keçin və pinco kazinosunun oyunçular üçün təqdim etdiyi fərqlənən xidmətlərdən yararlanın. Bu hədis standart poker qaydalarına əlaqəli oynanır, lakin turnir formatında keçirilir. Həqiqi pul üçün oynamağa durmaq ötrü istifadəçilərin Pin Up Kazinoda hesab yaratmaları tələb olunur. Bundan əlavə, yeni qeydiyyatdan keçənlər sakit gəlmisiniz paketinin bir hissəsi olaraq qeydiyyat bonusu əldə edirlər. Pin Up Casino həm təzə, həm də əkəc oyunçular üçün möhtəşəm bonus sisteminə malikdir. Azərbaycanda onlayn qumar oyunlarına maraq artmaqda davam edir və Pin-up kazinosu bu sahədə lider platformalardan biridir.