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);
Come Possiamo Ammettere Che creatori tuttora piattaforma offriamo un’competenza senza pari, in cui unitamente ci si rilassa e si gode il attimo. Vi aspettano giochi fantastici, il nostro team di supporto costantemente pronto per aiutarvi e offerte parecchio convenienti, che sarà difficile non cogliere al caduta. Portiamo l’alterazione successo un vero casinò direttamente sul tuo monitor con i nostri giochi mediante croupier dal vivo.
Sappi il quale con lo scopo di possedere osservando la uso presente bonus dovrai eseguire un il suo primo deposito successo almeno 20€. Le norme delle scommesse richiedono successo non eseguire delle puntate minori vittoria 1,50€ e neanche maggiori successo 50€. Chiaramente, anteriormente successo poter aprire il tuo bankroll, dovrai formalizzare un’iscrizione all’interno del portale così da poter offrire al strategia vittoria inventarti tra i suoi clientela. Ma le credenziali sbagliate o dimenticate sono ancora la giudizio più collettivo dei disturbi di entrata.
Il servizio clienti è condizione parecchio disponibile e specializzato, rispondendo prontamente alle mie domande. Insegnamento appassionatamente codesto casinò a chiunque cerchi un’competenza vittoria gioco del web di buona qualita. Una delle primarie attrazioni vittoria BetRiot per i giocatori italiani è la vasta gamma successo slot machine, quale spazia dai titoli più popolari a quelli meno conosciuti eppure ugualmente emozionanti. I tornei settimanali, mediante premi alti, vengono effettuate un diverso elemento di forte richiamo con lo traguardo di chi ama la concorrenza.
Partecipante garantisce il che qualunque partita sia giusta e che razza di i conseguenze non avvengono influenzati da fattori esterni. Costruiti In Aggiunta, la suddetta offerta non può esserci combinata mediante altri fondi booster o bonus sportivi. Ognuno questi bonus avvengono considerevolmente remunerativi, persino qualora richiedono l’utilizzo fama criptovalute a causa vittoria poterne usufruire. Osservando La Aggiunta, bisogna tenere partecipante che questi bonus hanno un requisito fama posta successo 35x, mentre molte de le vincite ottenute utilizzando i giri gratis del primo bonus hanno un requisito successo posta vittoria 40x. Il fatto il quale BetRiot Disordine non offra una promozione di presente tipo non deve prendere. Un aspetto certo del sito è rappresentato dai generosi incentivi che fornisce come possiamo dire che compenso.
Parte del ragione a causa di cui BetRiot Casino è così popolare è legittimo alla sua enorme e diversificata negozio di libri vittoria giochi, quale include i giochi più innovativi e più caldi osservando la viavai, oltre alla propria sezione successo scommesse sportive. Dal attimo quale entriamo nel particolare vittoria ogni promo nella nostra sezione dedicata ai bonus all’dentro tuttora giudizio, vi daremo solamente una rapida occhiata a ciò il quale potete aspettarvi. Bonus vittoria benvenuto, tornei, bonus speciali a fine di lo sport, bonus vittoria ricarica settimanali, bonus cashback, bonus cripto, giri gratis e persino un programma VIP saranno tutti disponibili in altezza su BetRiot. La piattaforma garantisce un’interfaccia fluida, rendendo comodo la navigazione tra le varie categorie.
La qualità dei giochi è eccellente e ci sono molte opzioni con lo scopo di qualsivoglia i tipi vittoria giocatori. Il lavoro clienti è condizione eccezionale, continuamente pronto ad aiutare mediante qualunque quesito o incertezza. Raccomando appassionatamente Pribet Confusione a chiunque cerchi un’esperienza vittoria gioco del web di alta qualità. BetRiot Casino betriot casino portugal permette successo selezionare tra un lista ampio e variegato vittoria giochi del web il quale affascina i giocatori italiani. La piattaforma si distingue con lo traguardo di la qualità e la varietà delle sue opzioni, offrendo esperienze adatte a una vasta decisione di tutte le preferenze.
Al BetRiot Scompiglio, comprendiamo che transazioni fluide e sicure avvengono una nasce importante tuttora tua esperienza vittoria gioco. Ecco perché abbiamo selezionato un’ampia scelta successo metodi successo erogazione su cui possiamo eseguire affidamento, garantendo il quale ciascuno anticipo e ritiro sia rapido, fidato e in assenza di disturbi. Abbiamo progettato la nostra sezione successo giochi da tavolo a causa di portare l’autentica competenza del casinò per via diretta sul tuo schermo. Quale tu sia un giocatore intenditore successo blackjack o un accalorato successo roulette, la nostra selezione soddisfa ciascuno i gusti e livelli di abilità. Al BetRiot Confusione, ci impegniamo a mantenere alta l’inquietudine con offerte speciali regolari che offrono un capiente levatura e migliorano la tua competenza vittoria gioco. Quale tu ami le slot, i giochi del casinò live o ingenuamente desideri ottimizzare il tuo budget, le nostre offerte settimanali hanno qualcosa con lo traguardo di tutti.
Sì, BetRiot Casino opera legalmente e è regolamentato con concessione valida a causa di offrire giochi negozio online. A volte i tempi vittoria ritiro potrebbero essere più veloci, ciononostante nel complesso è un eccellente sito. Un altro attraversamento determinante è quello di assicurarsi il quale il sito sia effettivamente attivo e non sia inattivo a causa di qualunque ragione. Ove il casinò è costruiti in fase vittoria manutenzione, vi verrà notificato nel momento osservando la cui proverete a caricare il sito. È in più possibile attivare l’autoesclusione (temporanea o permanente) o chiedere la chiusura dell’account osservando la qualunque istante. Betriot non è in possesso successo una autorizzazione ADM (ex AAMS), necessaria per operare legalmente in La Penisola.
Anteriormente di inserire le credenziali, assicuratevi vittoria non averle scritte accidentalmente costruiti in maiuscolo o di aver usato una idioma diversa dall’inglese. È possibile reimpostare facilmente la password del esattamente account facendo clic sul pulsante vittoria entrata e poi su “Password dimenticata”. I dati raccolti dall’industria dell’iGaming negli ultimi anni dimostrano il quale il settore ha tratto geniali pro dalla crescita vertiginosa dell’utilizzo dei dispositivi mobili da parte di chi cerca intrattenimento negozio online. La creazione di siti internet adatti ai dispositivi mobili sta diventando un investimento sempre più importante a causa di gli operatori successo iGaming. Dopo tanti sforzi negli ultimi anni, hanno infine raggiunto l’obiettivo di creare siti mobili attraenti e completamente funzionali. Le scommesse sportive di BetRiot Confusione sono attualmente piene di partite e eventi differenti.
Mediante un acconto minimo successo soli €10, garantiamo quale ogni giocatore possa entrare direttamente nell’azione senza attese. Abbiamo creato il nostro bonus di benvenuto in altezza su BetRiot Scompiglio per dare il via alla tua avventura mediante il botto. Non si tratta solo successo fondi extra—ma successo offrirti più opportunità di analizzare i nostri in aggiunta 6.000 giochi e assicurarsi vincite reali fin dall’avvio.
Per Betriot Casinò offriamo diversi metodi di finanziamento, avvengono inclusi i circuiti tradizionali come possiamo asserire che carte successo credito e bonifici bancari, oltre alle criptovalute come possiamo dire che Bitcoin e Litecoin. I limiti successo prelievo vengono effettuate regolati osservando la base al livello VIP dell’utente e vengono effettuate aggiornati ciascuno trimestre. Betriot offre un’ampia gamma di giochi da casinò e bonus, unitamente a opportunità successo scommette in altezza su basket, calcio, corse vittoria cani e diverso addirittura. Inoltre, è determinante avvedersi che ci sono restrizioni sulla piattaforma; i giocatori da certi paesi non possono permettersi di divenire membri vittoria Betriot.
]]>