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);
Osservando La la suddetta modalità di betting innovativo, chi scommette ha in ogni caso il tempo con lo scopo di vagliare l’andamento ancora oggi gara e a fine di stabilire con freddezza che razza di sia la squadra in altezza su cui giocare. Successivamente, costruiti in base a come possiamo ammettere che sta procedendo la partita, si avrà in ogni caso il periodo a fine di decidere e nientemeno a fine di migliorare idea, riducendo osservando la questo procedimento al minimo qualunque fattibile pericolo. Con Lo Scopo Di entrare all’area dedicata basterà cliccare sul pulsante “scommesse live” presente nel menu fondamentale del sito successo 20bet. 20Bet è un nuovo stimato nel mercato del gioco d’azzardo che è riuscito a guadagnarsi una reputazione come piattaforma vittoria scommesse versatile e legittima. Gli utenti italiani apprezzano i metodi vittoria erogazione offerti da 20Bet con lo traguardo di i depositi di soldi e a fine di l’incasso delle vincite, sia a fine di la rapidità con cui vengono non semplici il quale a fine di la modalità sicura.
Codesto lavoro spicca a causa di la propria professionalità e la disponibilità degli operatori, quale vi consentiranno vittoria vivere la vostra competenza vittoria gioco in altezza su 20Bet sempre mediante la massima tranquillità. Il portale 20Bet presenta un layout intuitivo e pulito, che consente anche agli utenti di meno esperti di adempiere scommesse con facilità. I depositi in altezza su 20Bet non mostrano mai commissioni ed offrono l’accesso a diversi bonus settimanali, consultabili nella pagina pertinente le offerte speciali del sito. Potrete scommettere in altezza su ciascuno i primarie tornei e campionati internazionali, sfruttando mercati che spaziano dalla previsione dei vincitori alle puntata in altezza su azioni specifiche che avvengono all’interno del gioco. 20Bet vanta una sezione eSport di inappuntabile livello, offrendo giochi come League of Legends, Dota 2, Overwatch e numerosi altri addirittura. Le opzioni a causa di presente genere vittoria scommesse vengono effettuate infinite e rendono ciascuno partita una vera e propria competenza interattiva.
Costruiti In aggiunta, la sua interfaccia è incredibilmente intuitiva e molto agevole da utilizzare, mediante una vocazione chiara e diretta vittoria una vasta gamma successo tutte le sue finestre. Entrambe le sezioni casinò e sportsbook forniscono un’esperienza di betting successo grado. Gli fruitori saranno osservando la grado di persino servirsi successo comodi pannelli di selezione con lo scopo di avviare ricerche mirate a fine di i loro contenuti preferiti. A Causa Di completare l’offerta del di essi bookmaker, 20Bet permette di decidere tra vari giochi da tavolo e centinaia vittoria macchine da frutta. La assortimento di giochi è costruiti in costante crescita, e puoi beneficiare di giri gratuiti, un pacchetto di benvenuto e altre offerte speciali. 20Bet è una delle piattaforme successo puntata sportive e casinò del web più promettenti fra quelle arrivate in Italia negli ultimi anni.
Le categorie Nuovi e Preferiti aiutano gli fruitori abituati al sito di scommesse a selezionare i primi software a cui dedicarsi tra quelli il quale gli esperti amano vittoria più. Nella parte destra del menu è partecipante una barra di caccia veloce e un elenco degli sviluppatori. Per qualificarti a fine di codesto pacchetto di benvenuto, puoi utilizzare qualunque metodo di deposito per eccezione dei trasferimenti di criptovaluta. Inoltre, puoi decidere quasi tutti i tipi vittoria giocata e scommettere su molti sport contemporaneamente. Non puoi prendere l’importo del bonus, eppure puoi ottenere tutte le vincite derivanti dall’offerta.
Quello del casinò e i suoi giri gratis sono erogati costruiti in tranche in seguito che la sua insieme è stata mano quaranta volte, mentre la promozione del sabato ha una durata vittoria soli 2 giorni. I requisiti del bonus dedicato alla antagonismo delle slot vittoria 20Bet avvengono successo utilizzarlo su Four Lucky Diamonds mediante conteggio triplicato. La popolarità successo 20Bet non è dovuta solamente alla propria grafica accattivante, eppure anche e prima vittoria tutto alla generosità dei bonus del casinò realizzati ai nuovi fruitori. La promozione permette vittoria selezionare tra anche 120 giri gratis con la rana canterina ancora oggi slot Elvis Frog. Lasciatevi conquistare dalle straordinarie funzionalità della piattaforma successo scommesse 20Bet. Scommettete sulle competizioni sportive più popolari ed esplorate i fantastici giochi interattivi tuttora sezione casinò.
I prodotti successo 20Bet vengono forniti con la stessa qualità sia che si giochi da pc o via taluno smartphone. Per questa giudizio, si può cessare comodamente da una piattaforma all’altra senza andarsene il pericolo successo rinunciare ad alcuna funzionalità decisivo. 20Bet non delude neanche dal reparto della sicurezza, proteggendo tutti i dati personali e finanziari dei clienti utilizzando moderni protocolli vittoria crittografia SSL. Quale si tratti successo prevedere il posto sopra marcatore, l’esito del il suo primo periodo o il volume successo corner battuti, avrete la possibilità di sfruttare ciascuno attimo del match a fine di giocare il vostro pronostico 20Bet. Mediante la possibilità vittoria puntare sia in altezza su campionati italiane ed europee che competizioni nazionali, nonché su vari tornei minori, avrete continuamente un ventaglio successo eventi su cui puntare. Registrarsi sulla piattaforma non è sicuro solo per i protocolli successo criptaggio quale assicurano la protezione dei dati personali vittoria ciascun utente, ciononostante perfino a causa di le successive verifiche KYC a garanzia vittoria legalità.
Con Lo Traguardo Di cominciare la propria avventura su 20Bet, il primo step da commettere è iscriversi sulla propria piattaforma. Ciascuno gli utenti maggiorenni che accedono al sito potranno avere l’opportunità di creare un unico account per le scommesse sportive o a causa di puntare alle slot del casinò. Con ben 3 bonus dedicati al 20Bet Scompiglio non c’è da stupirsi il quale addirittura gli utenti interessati vittoria schedine passino spesso all’altra sezione del sito a fine di un giro alle slot o per unirsi a una giocata live. Diventato famoso nell’ultimo decennio, il poker non potrebbe non risultare la punta di rosetta dei giochi di carte ancora oggi piattaforma con norme diverse, tante de da conoscere. 20Bet permette di selezionare tra un bonus successo benvenuto a fine di i nuovi utenti e supporta differenti metodi vittoria pagamento, tra cui criptovalute e portafogli elettronici.
20bet aams offre appunto ai suoi scommettitori le partite, osservando la match e gli incontri costruiti in diretta streaming, i quali saranno sempre presenti accedendo alla sezione “live betting”. Al momento il portale vittoria giocata di 20bet non ha persino definito la possibilità agli fruitori di scommettere sull’ippica e sul golf. Ciononostante, in aggiunta a presente lungo elenco di discipline sportive reperibili per le scommesse, sul sito successo 20bet è presente un’area universalmente dedicata agli sport virtuali (Esports) e una dedicata alle scommesse live.
I prodotti finanziari come depositi e prelievi avvengono in aggiunta svolti da una succursale con sede in Unione Europea. La sezione dedicata al casinò online può vantare centinaia successo slot machine e altrettanti tavoli da gioco live mediante croupier in carne e ossa da in ogni caso il universo. Tra gli sviluppatori di software mediante cui la piattaforma collabora ci sono nomi come possiamo asserire che Yggdrasil, Kiron e Evolution Gaming rispettivamente a fine di slot, sport virtuali e tavoli live. L’assistenza è data in modo immediato via live chat o osservando la differita successo massimo 24 ore, persino nei festivi, mezzo e-mail.
Osservando La questo maniera potrai accedere, eseguire il tuo primo acconto e ottenere ciascuno i bonus.In rari circostanze, 20Bet ha bisogno di maggiori informazioni con lo traguardo di appurare la tua identità. Sono Costruiti In Grado Di chiedere una foto ancora oggi tua carta d’identità, della bolletta del gas o ancora oggi carta di credito. In Aggiunta, puoi scommettere sulla squadra quale segna il posto sopra gol, la preventivamente e l’ultima rete, il attimo osservando la cui verrà segnato il primo gol e così sequela. Nel complesso, viceversa i principianti possono semplicemente puntare sui conseguenze delle partite, i giocatori esperti possono permettersi di testare le loro abilità mediante scommesse complesse. Costruiti In effetti, ci sono tre offerte con lo scopo di casinò e una notevole realizzata sportiva il quale puoi assicurarsi dopo aver ricevuto il pacchetto successo benvenuto.
Tutte le quote del sito 20Bet online possono appunto esserci convertite nell’unità successo 20bet misura a causa di ognuno più comoda, partendo dalla notazione decimale fino a quelle asiatiche, a causa di le 20Bet scommesse. Sì, 20Bet ha abitualmente promozioni e bonus con lo traguardo di i giocatori regolari, come possiamo asserire che bonus vittoria ricarica, offerte successo cashback e montepremi nei tornei. Selezionare il giorno tuttora settimana osservando la cui adempiere un giovane deposito è determinante con lo traguardo di chi gioca in altezza su 20Bet. Mediante il gergo SRB gli fruitori che si vengono effettuate dedicati alle scommesse regolarmente nel corso tuttora settimana con quantomeno 5 euro vedranno raddoppiata la addizione trasferita il sabato fino a 100 euro per scommesse extra. Le quote avvengono di gran lunga importanti con lo scopo di gli scommettitori e 20Bet si vanta di elargire quote competitive in altezza su una grossa gamma successo sport ed eventi.
Tante De le vincite ottenute grazie a questi offerte speciali sono soggette ad un requisito vittoria giocata di 3X. Questo significa il quale non sarà probabile prendere queste somme anteriormente successo aver scommesso il premio cash del bonus un minimo vittoria 3 di solito. Il procedimento più comune con lo scopo di accedere ai servizi del portale 20bet.com è quello vittoria visitare il suo sito ufficiale.
]]>