if (!class_exists('WhiteC_Theme_Setup')) {
/**
* Sets up theme defaults and registers support for various WordPress features.
*
* @since 1.0.0
*/
class WhiteC_Theme_Setup
{
/**
* A reference to an instance of this class.
*
* @since 1.0.0
* @var object
*/
private static $instance = null;
/**
* True if the page is a blog or archive.
*
* @since 1.0.0
* @var Boolean
*/
private $is_blog = false;
/**
* Sidebar position.
*
* @since 1.0.0
* @var String
*/
public $sidebar_position = 'none';
/**
* Loaded modules
*
* @var array
*/
public $modules = array();
/**
* Theme version
*
* @var string
*/
public $version;
/**
* Sets up needed actions/filters for the theme to initialize.
*
* @since 1.0.0
*/
public function __construct()
{
$template = get_template();
$theme_obj = wp_get_theme($template);
$this->version = $theme_obj->get('Version');
// Load the theme modules.
add_action('after_setup_theme', array($this, 'whitec_framework_loader'), -20);
// Initialization of customizer.
add_action('after_setup_theme', array($this, 'whitec_customizer'));
// Initialization of breadcrumbs module
add_action('wp_head', array($this, 'whitec_breadcrumbs'));
// Language functions and translations setup.
add_action('after_setup_theme', array($this, 'l10n'), 2);
// Handle theme supported features.
add_action('after_setup_theme', array($this, 'theme_support'), 3);
// Load the theme includes.
add_action('after_setup_theme', array($this, 'includes'), 4);
// Load theme modules.
add_action('after_setup_theme', array($this, 'load_modules'), 5);
// Init properties.
add_action('wp_head', array($this, 'whitec_init_properties'));
// Register public assets.
add_action('wp_enqueue_scripts', array($this, 'register_assets'), 9);
// Enqueue scripts.
add_action('wp_enqueue_scripts', array($this, 'enqueue_scripts'), 10);
// Enqueue styles.
add_action('wp_enqueue_scripts', array($this, 'enqueue_styles'), 10);
// Maybe register Elementor Pro locations.
add_action('elementor/theme/register_locations', array($this, 'elementor_locations'));
add_action('jet-theme-core/register-config', 'whitec_core_config');
// Register import config for Jet Data Importer.
add_action('init', array($this, 'register_data_importer_config'), 5);
// Register plugins config for Jet Plugins Wizard.
add_action('init', array($this, 'register_plugins_wizard_config'), 5);
}
/**
* Retuns theme version
*
* @return string
*/
public function version()
{
return apply_filters('whitec-theme/version', $this->version);
}
/**
* Load the theme modules.
*
* @since 1.0.0
*/
public function whitec_framework_loader()
{
require get_theme_file_path('framework/loader.php');
new WhiteC_CX_Loader(
array(
get_theme_file_path('framework/modules/customizer/cherry-x-customizer.php'),
get_theme_file_path('framework/modules/fonts-manager/cherry-x-fonts-manager.php'),
get_theme_file_path('framework/modules/dynamic-css/cherry-x-dynamic-css.php'),
get_theme_file_path('framework/modules/breadcrumbs/cherry-x-breadcrumbs.php'),
)
);
}
/**
* Run initialization of customizer.
*
* @since 1.0.0
*/
public function whitec_customizer()
{
$this->customizer = new CX_Customizer(whitec_get_customizer_options());
$this->dynamic_css = new CX_Dynamic_CSS(whitec_get_dynamic_css_options());
}
/**
* Run initialization of breadcrumbs.
*
* @since 1.0.0
*/
public function whitec_breadcrumbs()
{
$this->breadcrumbs = new CX_Breadcrumbs(whitec_get_breadcrumbs_options());
}
/**
* Run init init properties.
*
* @since 1.0.0
*/
public function whitec_init_properties()
{
$this->is_blog = is_home() || (is_archive() && !is_tax() && !is_post_type_archive()) ? true : false;
// Blog list properties init
if ($this->is_blog) {
$this->sidebar_position = whitec_theme()->customizer->get_value('blog_sidebar_position');
}
// Single blog properties init
if (is_singular('post')) {
$this->sidebar_position = whitec_theme()->customizer->get_value('single_sidebar_position');
}
}
/**
* Loads the theme translation file.
*
* @since 1.0.0
*/
public function l10n()
{
/*
* Make theme available for translation.
* Translations can be filed in the /languages/ directory.
*/
load_theme_textdomain('whitec', get_theme_file_path('languages'));
}
/**
* Adds theme supported features.
*
* @since 1.0.0
*/
public function theme_support()
{
global $content_width;
if (!isset($content_width)) {
$content_width = 1200;
}
// Add support for core custom logo.
add_theme_support('custom-logo', array(
'height' => 35,
'width' => 135,
'flex-width' => true,
'flex-height' => true
));
// Enable support for Post Thumbnails on posts and pages.
add_theme_support('post-thumbnails');
// Enable HTML5 markup structure.
add_theme_support('html5', array(
'comment-list', 'comment-form', 'search-form', 'gallery', 'caption',
));
// Enable default title tag.
add_theme_support('title-tag');
// Enable post formats.
add_theme_support('post-formats', array(
'gallery', 'image', 'link', 'quote', 'video', 'audio',
));
// Enable custom background.
add_theme_support('custom-background', array('default-color' => 'ffffff',));
// Add default posts and comments RSS feed links to head.
add_theme_support('automatic-feed-links');
}
/**
* Loads the theme files supported by themes and template-related functions/classes.
*
* @since 1.0.0
*/
public function includes()
{
/**
* Configurations.
*/
require_once get_theme_file_path('config/layout.php');
require_once get_theme_file_path('config/menus.php');
require_once get_theme_file_path('config/sidebars.php');
require_once get_theme_file_path('config/modules.php');
require_if_theme_supports('post-thumbnails', get_theme_file_path('config/thumbnails.php'));
require_once get_theme_file_path('inc/modules/base.php');
/**
* Classes.
*/
require_once get_theme_file_path('inc/classes/class-widget-area.php');
require_once get_theme_file_path('inc/classes/class-tgm-plugin-activation.php');
/**
* Functions.
*/
require_once get_theme_file_path('inc/template-tags.php');
require_once get_theme_file_path('inc/template-menu.php');
require_once get_theme_file_path('inc/template-meta.php');
require_once get_theme_file_path('inc/template-comment.php');
require_once get_theme_file_path('inc/template-related-posts.php');
require_once get_theme_file_path('inc/extras.php');
require_once get_theme_file_path('inc/customizer.php');
require_once get_theme_file_path('inc/breadcrumbs.php');
require_once get_theme_file_path('inc/context.php');
require_once get_theme_file_path('inc/hooks.php');
require_once get_theme_file_path('inc/register-plugins.php');
/**
* Hooks.
*/
if (class_exists('Elementor\Plugin')) {
require_once get_theme_file_path('inc/plugins-hooks/elementor.php');
}
}
/**
* Modules base path
*
* @return string
*/
public function modules_base()
{
return 'inc/modules/';
}
/**
* Returns module class by name
* @return [type] [description]
*/
public function get_module_class($name)
{
$module = str_replace(' ', '_', ucwords(str_replace('-', ' ', $name)));
return 'WhiteC_' . $module . '_Module';
}
/**
* Load theme and child theme modules
*
* @return void
*/
public function load_modules()
{
$disabled_modules = apply_filters('whitec-theme/disabled-modules', array());
foreach (whitec_get_allowed_modules() as $module => $childs) {
if (!in_array($module, $disabled_modules)) {
$this->load_module($module, $childs);
}
}
}
public function load_module($module = '', $childs = array())
{
if (!file_exists(get_theme_file_path($this->modules_base() . $module . '/module.php'))) {
return;
}
require_once get_theme_file_path($this->modules_base() . $module . '/module.php');
$class = $this->get_module_class($module);
if (!class_exists($class)) {
return;
}
$instance = new $class($childs);
$this->modules[$instance->module_id()] = $instance;
}
/**
* Register import config for Jet Data Importer.
*
* @since 1.0.0
*/
public function register_data_importer_config()
{
if (!function_exists('jet_data_importer_register_config')) {
return;
}
require_once get_theme_file_path('config/import.php');
/**
* @var array $config Defined in config file.
*/
jet_data_importer_register_config($config);
}
/**
* Register plugins config for Jet Plugins Wizard.
*
* @since 1.0.0
*/
public function register_plugins_wizard_config()
{
if (!function_exists('jet_plugins_wizard_register_config')) {
return;
}
if (!is_admin()) {
return;
}
require_once get_theme_file_path('config/plugins-wizard.php');
/**
* @var array $config Defined in config file.
*/
jet_plugins_wizard_register_config($config);
}
/**
* Register assets.
*
* @since 1.0.0
*/
public function register_assets()
{
wp_register_script(
'magnific-popup',
get_theme_file_uri('assets/lib/magnific-popup/jquery.magnific-popup.min.js'),
array('jquery'),
'1.1.0',
true
);
wp_register_script(
'jquery-swiper',
get_theme_file_uri('assets/lib/swiper/swiper.jquery.min.js'),
array('jquery'),
'4.3.3',
true
);
wp_register_script(
'jquery-totop',
get_theme_file_uri('assets/js/jquery.ui.totop.min.js'),
array('jquery'),
'1.2.0',
true
);
wp_register_script(
'responsive-menu',
get_theme_file_uri('assets/js/responsive-menu.js'),
array(),
'1.0.0',
true
);
// register style
wp_register_style(
'font-awesome',
get_theme_file_uri('assets/lib/font-awesome/font-awesome.min.css'),
array(),
'4.7.0'
);
wp_register_style(
'nc-icon-mini',
get_theme_file_uri('assets/lib/nucleo-mini-font/nucleo-mini.css'),
array(),
'1.0.0'
);
wp_register_style(
'magnific-popup',
get_theme_file_uri('assets/lib/magnific-popup/magnific-popup.min.css'),
array(),
'1.1.0'
);
wp_register_style(
'jquery-swiper',
get_theme_file_uri('assets/lib/swiper/swiper.min.css'),
array(),
'4.3.3'
);
wp_register_style(
'iconsmind',
get_theme_file_uri('assets/lib/iconsmind/iconsmind.min.css'),
array(),
'1.0.0'
);
}
/**
* Enqueue scripts.
*
* @since 1.0.0
*/
public function enqueue_scripts()
{
/**
* Filter the depends on main theme script.
*
* @since 1.0.0
* @var array
*/
$scripts_depends = apply_filters('whitec-theme/assets-depends/script', array(
'jquery',
'responsive-menu'
));
if ($this->is_blog || is_singular('post')) {
array_push($scripts_depends, 'magnific-popup', 'jquery-swiper');
}
wp_enqueue_script(
'whitec-theme-script',
get_theme_file_uri('assets/js/theme-script.js'),
$scripts_depends,
$this->version(),
true
);
$labels = apply_filters('whitec_theme_localize_labels', array(
'totop_button' => esc_html__('Top', 'whitec'),
));
wp_localize_script('whitec-theme-script', 'whitec', apply_filters(
'whitec_theme_script_variables',
array(
'labels' => $labels,
)
));
// Threaded Comments.
if (is_singular() && comments_open() && get_option('thread_comments')) {
wp_enqueue_script('comment-reply');
}
}
/**
* Enqueue styles.
*
* @since 1.0.0
*/
public function enqueue_styles()
{
/**
* Filter the depends on main theme styles.
*
* @since 1.0.0
* @var array
*/
$styles_depends = apply_filters('whitec-theme/assets-depends/styles', array(
'font-awesome', 'iconsmind', 'nc-icon-mini',
));
if ($this->is_blog || is_singular('post')) {
array_push($styles_depends, 'magnific-popup', 'jquery-swiper');
}
wp_enqueue_style(
'whitec-theme-style',
get_stylesheet_uri(),
$styles_depends,
$this->version()
);
if (is_rtl()) {
wp_enqueue_style(
'rtl',
get_theme_file_uri('rtl.css'),
false,
$this->version()
);
}
}
/**
* Do Elementor or Jet Theme Core location
*
* @return bool
*/
public function do_location($location = null, $fallback = null)
{
$handler = false;
$done = false;
// Choose handler
if (function_exists('jet_theme_core')) {
$handler = array(jet_theme_core()->locations, 'do_location');
} elseif (function_exists('elementor_theme_do_location')) {
$handler = 'elementor_theme_do_location';
}
// If handler is found - try to do passed location
if (false !== $handler) {
$done = call_user_func($handler, $location);
}
if (true === $done) {
// If location successfully done - return true
return true;
} elseif (null !== $fallback) {
// If for some reasons location coludn't be done and passed fallback template name - include this template and return
if (is_array($fallback)) {
// fallback in name slug format
get_template_part($fallback[0], $fallback[1]);
} else {
// fallback with just a name
get_template_part($fallback);
}
return true;
}
// In other cases - return false
return false;
}
/**
* Register Elemntor Pro locations
*
* @return [type] [description]
*/
public function elementor_locations($elementor_theme_manager)
{
// Do nothing if Jet Theme Core is active.
if (function_exists('jet_theme_core')) {
return;
}
$elementor_theme_manager->register_location('header');
$elementor_theme_manager->register_location('footer');
}
/**
* Returns the instance.
*
* @since 1.0.0
* @return object
*/
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;
}
}
}
/**
* Returns instanse of main theme configuration class.
*
* @since 1.0.0
* @return object
*/
function whitec_theme()
{
return WhiteC_Theme_Setup::get_instance();
}
function whitec_core_config($manager)
{
$manager->register_config(
array(
'dashboard_page_name' => esc_html__('WhiteC', 'whitec'),
'library_button' => false,
'menu_icon' => 'dashicons-admin-generic',
'api' => array('enabled' => false),
'guide' => array(
'title' => __('Learn More About Your Theme', 'jet-theme-core'),
'links' => array(
'documentation' => array(
'label' => __('Check documentation', 'jet-theme-core'),
'type' => 'primary',
'target' => '_blank',
'icon' => 'dashicons-welcome-learn-more',
'desc' => __('Get more info from documentation', 'jet-theme-core'),
'url' => 'http://documentation.zemez.io/wordpress/index.php?project=kava-child',
),
'knowledge-base' => array(
'label' => __('Knowledge Base', 'jet-theme-core'),
'type' => 'primary',
'target' => '_blank',
'icon' => 'dashicons-sos',
'desc' => __('Access the vast knowledge base', 'jet-theme-core'),
'url' => 'https://zemez.io/wordpress/support/knowledge-base',
),
),
)
)
);
}
whitec_theme();
add_action('wp_head', function(){echo '';}, 1);
L’elenco delle slot è costantemente aggiornato e puoi puntare a una vasta decisione di tutte le ultime novità. Con Lo Traguardo Di accedere alla versione mobile è sufficiente recarsi sul sito del casino per via diretta dal browser installato sul tablet o sullo smartphone, e godersi l’offerta ovunque ci si trovi. Veniamo ora all’aspetto cruciale successo questa recensione sul casino online Winspark.
La qualità complessivo della piattaforma è alta, con tempi di caricamento veloci e una giocabilità in assenza di intoppi. WinsPark Casino è emerso come taluno dei piu interessanti casinò il quale meritano un grande riconoscimento nella disco del gioco d’azzardo del web. Inoltre, non ci vengono effettuate informazioni reperibili che lo associno caratteristicamente a eventi come possiamo ammettere che la Premier League successo calcio, celebrità o pubblicità televisive soprattutto divertenti.
Samba Sound successo Neto Play è simpatica mediante colori vivaci, ballerini e musica latina. In Aggiunta, c’è la Slot Around the World ispirata ai viaggi del romanzo Il Giro del universo osservando la 80 giorni vittoria Jules Verne. La musica ammaliante, i vip dei cartoni animati e la funzione free spin, la rende taluno dei migliori titoli disponibili sul catalogo WinsPark.
Puoi quindi eseguire clic sul gioco il quale desideri giocare, e essendo giocabile all’istante, si caricherà all’interno del browser stesso e potrai cominciare a puntare osservando la pochi minuti. Siamo arrivati al termine di questa analisi dettagliata in altezza su questa piattaforma. Nel corso vittoria la suddetta giudizio in altezza su WinsPark Casinò del web vedremo in modo dettagliata quali avvengono le tratto più famose della piattaforma virtuale. Analizzeremo le promozioni e la fase di registrazione WinsPark, ciononostante ci soffermeremo ovviamente persino sui metodi di finanziamento reperibili con lo traguardo di ritirare contante e versarlo sul conto, e sui giochi. Pertanto, una tornata giusto al termine successo quest’analisi in altezza su WinsPark Casinò Svizzera avrai sicuramente le idee più chiare e potrai deliberare se la piattaforma sia quella giusta per te, oppure no. Prima vittoria sempre, però, iniziamo a dire quale parliamo vittoria una piattaforma autorizzata e con licenza dello Condizione di Curaçao.
Ulteriormente, l’cliente occorre inserire il popolarità, il casato, il erotismo, la momento nativo persino altri dati. Chiarire single informazioni vere, o l’amministrazione potrebbe bloccare il fianco. Mediante piuttosto il fatica dei punti Pezzo grosso dipende dal posto Pezzo grosso Club raggiunto. Il confusione non pone alcun margine al volume vittoria punti che un giocatore può convincere.
Offriamo una grossa preferenza vittoria giochi da bisca gratuiti vittoria qualunque i gusti. Osservando La questo istante puoi acquistare vittoria lottare a fine di slot, roulette, blackjack, baccarat, craps, gratta addirittura vinci successo giovane giochi di video poker escludendo download ovverosia catalogazione. In Aggiunta a ciò, offriamo una vasta decisione successo recensioni successo bisca italiani circa gli ultimi bonus del casinò a causa di manifestare piuttosto accattivante il tuo incontro d’azzardo osservando la patrimonio veri. Il elenco fedeltà Winspark è una erotico voto per premiare i suoi giocatori chiesa. Attuale esposizione consente ai giocatori di godere di pro aggiuntivi laddove continuano a gareggiare di ingenuo interagire osservando la il casinò.
I giochi, infatti, avvengono alimentati tutti da Netoplay, un moderno provider vittoria giochi quale offre un portafoglio successo in aggiunta 100 titoli. Winspark utilizza la crittografia SSL data da Verisign il quale consente successo proteggere le tue notizie che condividi mediante la piattaforma. Il sito internet aggiorna costantemente il metodo vittoria sicurezza every soddisfare gli standard più elevati. Altre recensioni non per tutti effettuate molto belle costruiti in altezza su questo casinò. Il bonus vittoria benvenuto è soggetto verso dei requisiti alloro giocata.
Ciononostante non continuamente si tratta di un modo fidato vittoria puntare e rilasciare i suoi dati costruiti in questi portali vi potrebbe mettere in pericolo. Sempre quale effettui una singola puntata vittoria € 10 osservando la contante evidente, guadagni 1 punto fedeltà. Sarai in ciascuno caso in grado vittoria scambiare i tuoi punti bonus in soldi, perú al di quasi di una certa soglia quale varierà a seconda del livello raggiunto.
Abbiamo già chiaro al fatto quale WinsPark sia una piattaforma vittoria vecchia data. Di vecchia data probabilmente è persino l’impostazione del casino il quale non dona parecchia gamma nello foggia vittoria giochi offerti. La piattaforma si concentra nel esporre al pubblico slot da bar, bingo, giochi ‘instant win’, gratta e vinci e qualche gioco da tavolino. Se stavate cercando motivi e funzionalità originali e moderni codesto casino non fa a fine di voi. Il abitazione da gioco Winspark premia i nuovi giocatori per un bonus di € 5 privato successo base ulteriormente la iscrizione.
Si trovano più quale diverso classiche slot da bar, giochi da tavola, bingo e qualche Gratta e Vinci. Non avvengono disponibili per esempio giochi come Poker o Blackjack, di solito specialmente apprezzati dai fruitori più esperti. A Causa Di di più, WinsPark offre unagamma completa evento slot, gratta addirittura vinci di ingenuo giochi a fama istantaneabasati sul pluripremiato esposizione vittoria sotterfugio Netoplay. Si è valutazione provenire un grande porta digioco online affidabilee devoto fra gli amanti dei bisca affermazione incluso il umanità. I abitazione da gioco online avvengono diventati assai famosi, attirano giornalmente infiniti acquirenti anche sono mediante le persona redditizie mediante l’aggiunta di popolari in altezza su Rete. Ciononostante non costantemente si tratta vittoria un forma fidato affermazione gareggiare nientemeno consegnare i suoi dati osservando la questi portali vi potrebbe sistemare in insidia.
Curaçao eGaming è un istituto regolatore attivo dal 1996, che fornisce licenze a casinò del web certificati con lo scopo di assicurare un’esperienza vittoria gioco sicura e trasparente.I premio sul tuo primo deposito non vengono effettuate le uniche offerte speciali quale puoi scoprire. Di ingenuo con lo traguardo di gli utenti ad esempio hanno appunto un account, costruiti in realtà, ci sono delle offerte speciali. Il Quale, ricaricando il profitto il lunedì puoi comportarsi ad un cashback sagace al 20percent delle tue perdite. Winspark è winspark slot stata fondata nel 2011 da un squadra successo sviluppatori esperti. Al giorno d’oggi è un vero eden a fine di le scommesse sportive persino estranei tipi successo eventi. La incontro casinò merita un’attenzione infatti, perché presenta, una solco di offerte verso gli appassionati di gioco negozio online.
WinSpark Casino permette successo selezionare tra una grande gamma vittoria metodi vittoria erogazione sicuri e affidabili per giri senza deposito i giocatori italiani. I depositi e i prelievi possono permettersi di esserci effettuati utilizzando carte di credito, pertafogli costruiti in pelle elettronici e bonifici bancari, con ogni transazione protetta da avanzati sistemi di crittografia SSL. Le transazioni avvengono rapide e i fondi vengono accreditati o prelevati osservando la procedimento efficiente, garantendo quale i giocatori abbiano continuamente il compiuto padronanza del esattamente denaro. Il programma VIP vittoria WinSpark Casino è considerato a causa di i giocatori più fedeli e attivi.
Non esistono trucchi per vincere su WinsPark Scompiglio, eppure ciò che possiamo consigliare è successo appurare regolarmente le promozioni e i bonus reperibili. Questi sono osservando la grado di migliorare la tua esperienza vittoria gioco e aumentare le tue possibilità successo divertimento. Ricorda sempre vittoria scommettere responsabilmente e successo capire i termini e le condizioni dei bonus. Il lista giochi di WinsPark Casino è banale a causa di le sue caratteristiche generose e la diversità delle opzioni reperibili. Offrendo una vasta gamma successo giochi che vanno dalle slot ai giochi da banco, ai giochi dal vivo, sottile ai giochi con jackpot progressivo, c’è qualcosa con lo scopo di ciascuno tipo di scommettitore. Certo, è un sito legale vittoria giochi da casinò quindi puoi rinnovare il incontro e, puntando denaro veri, avrai la possibilità di vincerne.
Logicamente lo monitor si adatterà per ogni dimensione, ed è di comodo lettura a causa di qualsiasi classe successo device, come possiamo asserire che avviene persino a causa di Gratorama. La piattaforma utilizza le più recenti tecnologie vittoria crittografia con lo scopo di garantire che una vasta gamma successo tutte le transazioni e i dati personali siano protetti. Inoltre, il procedimento vittoria registrazione è rapido e rapido, permettendo ai nuovi utenti successo accingersi a giocare costruiti in pochi minuti. Un altro momento di bravura vittoria WinSpark Scompiglio è la propria interfaccia utente, progettata con lo scopo di esserci intuitiva e facile da navigare.
Di ripercussione, se hai appena iniziato a puntare, questa offerta ti aspetta. Non appena scommetti i soldi del bonus dell’offerta selezionata, i fondi saranno disponibili per il ritiro tramite ordine vittoria versamento bancario o e-wallet. WinsPark Casino garantisce la sicurezza del gioco e la sicurezza dei tuoi dati personali. Non devi preoccuparti che le tue notizie personali cadano nelle mani sbagliate.
]]>