/**
* 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( ' ' . "\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_theme_color = sprintf( ' ', 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 = ' ';
// 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' => '',
'after_widget' => '
',
'before_title' => '<'. $heading .' class="widget-title">',
'after_title' => ' '. $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();
}
Tag: Pin Up Azerbaycan Pinup Aze - Balaji Retail Design Build
Tag: Pin Up Azerbaycan Pinup Aze
Həmçinin, hər depozitinizdə müxtəlif bonusları əldə edə bilərsiniz. Məsələn, xüsusi günlərdə və ya bayramlarda kazino oyunçularına subyektiv https://pinup-azrb-kazino.com hədiyyələr və bonuslar təqdim edir. Onlayn qumarxanamızdakı oyunların müxtəlifliyi şübhəsiz bir üstünlükdür. Strateji oyunlarını sevənlər rulet və ya kart oyunları seçə bilərlər. Yeni duyğular dolanmaq istəyirsinizsə, bədii satıcılarla işləməyə çalişqanliq edə bilərsiniz. Pin Up Azerbaycan bazarında daha etibarlı və populyar onlayn kazino və bukmeker kontorlarından biridir.
Depoziti Necə Yatırmaq Olar?
Biz texniki problemlərə və ya suallara sürətli və səmərəli həllər təklif edirik. Biz 25-dən daha aktiv promosyon təklif edirik və bu hesab fasiləsiz artır. Tətbiqimizi əlan ‘Pin Up Bet yüklə’ seçimi ilə yükləyin və mərc etməyə başlayın.
Pin Up Kazino kataloqu 10,000-dən çox müxtəlif slotu özündə cəmləşdirir ki, bu da ətraflı seçim imkanı yaradır.
Komanda kazino və mərc həvəskarları üçün ideal həllər hazırlayıb.
Əgər telefonda oynamağa üstünlük verirsinizsə, rəsmi tətbiqi sizə uyğundur.
Biz formal vebsaytı, mobil versiyanı və Pin Up güzgüsünü ziyarət etməyi təklif edirik.
Pin-Up AZ Bukmeker kontorundan pulun çıxarılmasının vaxtı metoddan asılıdır.
Pin-up Kazino: Azərbaycanda ən Tanımlı Oyun Platforması
Təzə duyğular dolanmaq istəyirsinizsə, bədii satıcılarla işləməyə çalişqanliq edə bilərsiniz.
Obrazli kazino bölməsi oyunçulara praktik dilerlərlə bədii əlaqə qurmağa imkan verir.
Kiçik bazarlarda mərc oynamağı nəzərdə tutan bir strategiya ilə oynayırsınızsa, Pin Up seyrək sizə uyğun gəlməyəcək.
Pin Up 306 oyun həvəskarları ötrü ətraflı və həyəcanlı bir imtahan təklif edir.
Oyunlar kazino üslubunda hazırlanmışdır və iti-iti udmaq üçün vahid çox variant təklif edir. İstənilən büdcəyə olma olan ziyarətçilərin oyunlardan həzz alması üçün mərclərin çeşidi mümkün kəmiyyət genişdir. Pin Up Kazino mobil versiyası oyunçulara asudə, gur və funksional hədis təcrübəsi təqdim edir.
Pin Up Casino Oyunlarının Seçimi
Onlayn kazinomuz Pin Up Casino Slots-da oyunların unikallığı və müxtəlifliyi, əlbəttə ki, bizim ixtisasımızdır. Pin-Up onlayn kazino saytında strategiya oyunlarını sevənlər rulet və ya kart oyunlarını seçib istədikləri oyunu oynaya bilərlər. Əlbəəl oyuna əməli pul qoymağa hazır olan ən seyrək istifadəçi mal, çünki bu bir riskdir. Demo rejimindən istifadə edərək slot maşınlarının işini və incəliklərini başa düşəcəksiniz. Pinup kazinosunda mövcud olan oyunlar haqqında bu məqalədə ən daha oxuya bilərsiniz. Pin up dəstəyindən necə əlbəəl cavab götürmək olar burada oxuya bilərsiniz.
Pin Up Rəsmi Sayt & Proloq
Pin Up Azerbaijan platformasında kainat səviyyəli oyun təminatçıları ilə əməkdaşlıq edirik. Bu şirkətlər təntənəli davamlı qrafika və innovativ oyun mexanikası ilə tanınır. Kataloqda 50-dən çox provayderin hədis avtomatları təqdim olunur və bu siyahı daim genişlənir. Həmçinin kazino 1Moon, Vibra Studio, Betsolutions kimi müasir tərtibatçılarla da əməkdaşlıq edir. Ödənişlərin rəsmiləşdirilməsi yüngül və emalı gur, çıxarışlar üçün də xarakterikdir. Pin-Up brendi rəsmi saytının lakonik dizaynı ilə diqqət çəkir.
Pin Up Tətbiqindən Necə Istifadə Etmək Olar?
Təhlükəsizlik və itilik təmin edən tətbiq stabil işləyərək hər yerdə oyun təcrübəsini mümkün edir. İstifadəçi dostu interfeys naviqasiyanı asanlaşdıraraq həm müasir, həm də əkəc oyunçular ötrü sərbəst idarəetmə təklif edir. Büdcənizə uyğun başlanğıc ilə qazanclarınızı effektiv idarə edərək tətbiqin funksionallığından maksimum yararlanırsınız. Pin-up Casino var-yox oyunlar təklif etmir, həm də subyektiv yoxlama yaradır.
Platformamız ətraflı oyun seçimi təklif edir və gur ödəniş sistemi ilə fərqlənir. Bunlar irəlidə praktik pula dəyişdirilə bilən şəxsi bal sistemidir. Var-yox onların sayı yox, 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. 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.
Ona başlanğıc görmək ötrü mobil telefonunuzda quraşdırılmış brauzeri istifadə edə bilərsiniz.
Pin-Up Casino oyunçulara iti və təhlükəsiz maliyyə əməliyyatları təklif edir.
Bu bonusların hər ikisi oyun büdcənizi artırmağa və sizi əlamətdar olmaqda kömək edir.
Tətbiqin naviqasiyası sadədir, toplu müddətdə interfeysi icad edə biləcəksiniz.
Doğrulama, oyunçuların təhlükəsizliyini artırmaq məqsədi daşıyan təbii bir prosedurdur.
Bundan sonra siz saytın elliklə funksiyalarından istifadə edə biləcəksiniz.
Var-yox Pin-up 306 Az Saytında Mövcud Olan Eksklüziv Slotlar
Bu, hər bir oyunçunun öz büdcəsinə uyğun olaraq oynamaq imkanı verir. Bu eksklüziv mobil bonuslar birdəfəlik təkliflər və ya dövri aksiyaların bir hissəsi ola bilər. Parlaq bannerlər, əlçatan yörə menyu və səmimi struktur — hətta ilk dəfə iç olanlar belə rahatlıqla naviqasiya edə bilir. Oyunları provayderə və ya kateqoriyaya görə filtrdən ötürmək mümkündür — məsələn, var-yox yeni oyunlar və ya Pragmatic Play slotları. Ekspertizamıza əsaslanaraq deyə bilərik ki, platforma həmçinin geniş idman mərc imkanları təqdim edir.