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);
Questi punti potranno esserci convertiti osservando la soldi evidente o per acquistare offerte speciali e benefici dallo store vittoria WinsPark. Con Lo Scopo Di come riguarda i vari giochi, puoi scegliere tutti quelli che come, anche i Gratta e Vinci come Tiki Treat, Bingo Club, Comes and Jungle Jones. A fronte del primo deposito, spetta, alquanto, un bonus del 100 a causa di cento fino a 200 euro. Offerte Speciali speciali caratterizzano il lunedì (cashback del 20%) e il venerdì (omaggio fino a 50 euro). Il programma fedeltà VIP dà entrata a pro, premi e tanto diverso ancora. È un’opportunità da non perdere con lo scopo di chiunque bramosia coltivare il batticuore dei giochi del web in modo gratuito e senza rischi.
Qual È L’età Minima Per Giocare In Altezza Su Winspark?Assicurati di leggere tu stesso i termini e le condizioni con lo scopo di non rischiare il tuo account. Per contattare l’assistenza basta compilare il form successo richiesta fornito nella sezione “contatti”, inserendo perfino il motivo con lo traguardo di i quali si desidera ricordare con un operatore. I giochi vengono effettuate perfettamente compatibili mediante differenti sistemi operativi, sia fissi che mobile. Per presente tesi, rimangono specialmente fluidi costruiti in ciascuno i dispositivi su cui sono avviati. I gratta e vinci sono disponibili nella medesima quantità delle slot, persino se vengono effettuate che puoi trovare pochi eppure famose giochi per il bingo e il keno, sempre apprezzati dagli interessati.
Se non dovessi essere soddisfatto del casinò del web WinsPark, puoi coltivare a dare taluno sguardo ad altre piattaforme vittoria presente tipo. Queste, difatti, hanno delle funzionalità molto simili, anche qualora ovviamente ci vengono effettuate determinate differenze. Ove hai intenzione vittoria giocare per via diretta da mobile, ovvero da smartphone e tablet, il casinò ti mette a tuo occasione.
Oltre a ciò, c’è l’assistenza gratuita a tua vocazione, perciò sfruttala con lo scopo di qualsiasi dubbio. Abbiamo analizzato WinsPark casino sotto tutti gli aspetti, partendo dalla registrazione fino ai bonus e ai giochi che puoi trovare costruiti in presente casinò online. Il nostro team ha espresso un giudizio testando il sito osservando la preventivamente anima. Winspark è regolamentato dalla concessione dell’Antillephone successo Curacao, garantendo un ambito successo gioco deciso e disciplinato. Il sito ha crittografia SSL per la protezione dei dati personali e finanziari dei giocatori, assicurando la sicurezza di depositi e prelievi.
Adesso puoi unirti al sito con lo traguardo di mettere alla campione la tua fortuna con le condizioni più confortevoli. Ove necessario, puoi giocare via il telefono con il metodo Android o iOS. La edizione mobile del casinò sarà un’opzione eccellente per gli utenti il quale apprezzano il esattamente periodo neppure sono pronti a al PC a causa di ore. Osservando La certi circostanze ti potrebbe esserci chiesto vittoria appurare le tue notizie personali a fine di completare la verifica e destituire le restrizioni dal tuo account. Dovrai dare una foto tuttora tua carta d’identità o altri documenti quale possano confermare la tua identità. Gli amministratori controlleranno tutto nei tempi più veloci e rimuoveranno le restrizioni dal spaccato.
Per entrare al tuo account, puoi utilizzare famiglia utente/E mail e password. Fai attenzione a non entrare al tuo profilo in altezza su dispositivi non consapevoli e non condividere dati personali mediante terzi. Depositate in questo giorno e inserite il gergo promozionale WED100. Il acconto minimo con lo scopo di aderire è successo 10 € e il requisito successo puntata è di 50x. In Più, è possibile effettuare puntate di 2 euro o meno, utilizzando il bonus osservando la soldi.
Le WinsPark opinioni più ottim riguardano proprio codesto momento. Sul sito, infatti, troviamo un bonus WinsPark casinò 5 euro senza acconto, una promozione vittoria benvenuto quale offre il 100% del il suo primo versamento sottile a 200 euro. Il secondo sistema, alquanto, prevede la possibilità di entrare al casinò direttamente dal browser del proprio dispositivo. newlineIl sito, difatti, si ottimizza costruiti in questione allo monitor e perciò non avrai alcun tipo vittoria problema e potrai puntare e depositare o prelevare le vincite.
Le offerte vittoria bonus con condizioni eque vengono effettuate la spina dorsale successo un casinò negozio online affermato. Depositi e prelievi devono esserci effettuati rapidamente e comodamente. Da sottolineare, in futuro, persino la bellezza successo una sezione dedicata ai giochi scratch. Potrai tentare, appunto, anche WinsPark Gratta e Vinci 5 euro gratis, cioè in modalità demo e anche mediante soldi veri. Osservando La fisica, con lo scopo di ciascuno 10 euro giocati sul incontro gioco del casinò riceverai un momento.
La Suddetta opzione è ideale a causa di familiarizzare mediante i giochi e le loro funzionalità prima vittoria deliberare di puntare mediante denaro veri. Winspark Scompiglio offre una buona assortimento di giochi e un’interfaccia comodo da esercitare. Il bonus successo benvenuto è stato ottimo, eppure i tempi vittoria prelievo potrebbero essere più rapidi.
Sono accettati Visa e Mastercard, ma persino gli e-wallet come possiamo dire che Skrill e Neteller. Con in aggiunta 15 metodi vittoria finanziamento, Winspark permette vittoria scegliere tra vastissima scelta a ciascuno i innovativi giocatori. Una volta ottenuti i bonus, prima vittoria poter adempiere un ritiro, è necessario onorare però il requisito vittoria posta. In questo caso, Casinò Winspark consente ai giocatori vittoria prelevare gli importi solo dopo il quale essi abbiano mirato quantomeno cinquanta di solito l’importo bonus ricevuto.
Questo provider si concentra su giochi a guadagno istantanea, slot e gratta e vinci. In qualità di casinò basato in altezza su NetoPlay, WinsPark utilizza un programma HTML5 il quale funziona bene con ciascuno i primarie sistemi operativi e dispositivi. Winspark utilizza la crittografia SSL data da Verisign quale consente successo proteggere le tue informazioni quale condividi mediante la piattaforma. Il sito web aggiorna costantemente il metodo vittoria sicurezza a causa di soddisfare gli standard più elevati. Ove avete un vostro sito internet o un noto sui social media, partecipate al programma vittoria affiliazione vittoria Winspark. Con solo 4 fornitori sul sito, Winspark ha un gran volume successo giochi di vari generi.
Con Lo Traguardo Di chi è alla ricerca di divertimento, Winspark ha un’ampia scelta successo giochi. Immergiti costruiti in mondi fantastici con slot come possiamo ammettere che “Aladdin’s Treasure Megaways” e vivi l’emozione di vincite sostanziose con i giochi jackpot, fra cui spicca “Mermaids Wild”. Winspark Casino ha un inappuntabile lista vittoria giochi e le promozioni sono interessanti. Tuttavia, ho riscontrato qualche dilazione nei prelievi, eppure nulla vittoria assai grave.
WinsPark Confusione include più vittoria 300 intrattenimenti nel infatti catalogo. Questo elenco include slot machine, Gratta e vinci, Giochi da tavolino winspark casino, Casinò Live e tanti altri. La gamma è suddivisa costruiti in categorie pertinenti osservando la modo da poter sostenere velocemente tutta la varietà. L’elenco delle slot è costantemente aggiornato e puoi giocare a tutte le ultime novità. Non appena scommetti i denaro del bonus dell’offerta selezionata, i fondi saranno reperibili per il ritiro mezzo bonifico bancario o e-wallet. Si potrà pertanto scommettere persino costruiti in mobile alle attrazioni del casinò, portando sempre mediante sé l’avventura all’interno vittoria slot e giochi sempre diversi.
Le slot negozio online rappresentano una delle categorie più popolari su Winspark Casino, mediante oltre 400 titoli disponibili. Offriamo una selezione successo slot con concetti differenti e funzionalità innovative. Le grafiche accattivanti e le vincite potenziali le rendono assai amate dai nostri utenti. Non ha molti bonus, ma offre una buona varietà successo giochi di interesse, insieme a fornitori di giochi di elevato grado. Winspark ha persino giochi vittoria fornitori popolari come Leander, Netent, iSoftBet e, certo, Evolution. Live Confusione in altezza su WinsPark ti permetterà vittoria immergerti nell’atmosfera dei club offline, in cui il risultato del round è determinato non da algoritmi matematici, eppure da carte reali o roulette.
Non esistono tasse sui depositi o sui prelievi, perciò metterai e preleverai il saldo a prezzo pieno. Rivelate a te una recensione in altezza su WinsPark, taluno dei casinò del web più in voga del attimo. La Suddetta è una giudizio completa, che ti darà gli strumenti per decidere o di meno questo sito. Con Lo Scopo Di prelevare denaro dal saldo, devi analizzare un sistema di erogazione e specificare i dettagli. Controllo la correttezza dei dati inseriti con lo traguardo di ricevere i tuoi fondi più velocemente e in assenza di problemi.
]]>