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);
(inter agli aggiornamenti regolari, la negozio di libri delle slot continua a crescere, offrendo sempre innovativi giochi da conoscere. A Causa Di registrarsi sulla nostra piattaforma è essenziale possedere almeno 18 anni e approvare le norme del sito. In Seguito la registrazione, potremmo richiedervi una controllo KYC con lo traguardo di assicurare la sicurezza dell’account. Non abbiamo circa nulla di recriminare al sito, e ci ha fatto piacere notare come la sezione relativa al gioco responsabile sia approfondita, proponendosi come una salvagente a i quali confidare qualora la condizione psicologica dei giocatori sia traballante. Abbiamo visto come possiamo ammettere che il portale ti garantisca una capiente varietà vittoria opzioni di gioco tutte accessibili e adatte anche an aderire le esigenze dei giocatori più pretenziosi.
Ove dovessi averne bisogno potresti contattare email protected ma rispetto per altri casino, purtroppo Betriot non ha una e-mail il quale sia destinata per un ufficio di reclamo. Entrerai all’dentro tuttora sezione “contattaci” sappi il quale troverai tutte le referenze necessarie con lo traguardo di disporre un confronto con lo staff del sito. Sappi il quale questo viene dato sull’attività vittoria gioco dell’utente ciascuno 90 giorni e quale è aggiornato dunque con cadenza trimestrale. I limiti successo prelievo su Betriot avvengono ben regolati all’dentro della piattaforma e camminano successo pari passo con il programma VIP ideato dall’azienda.
Questi giochi mettono alla prova le abilità dei giocatori, rendendo qualunque partita coinvolgente e ricca vittoria adrenalina. Fra i giochi più apprezzati troviamo il blackjack e la roulette, eppure la varietà è parecchio ampia. Iscriversi a BetRiot è un procedimento rapido e rapido, richiedendo solamente pochi minuti per completare il modulo successo iscrizione. Le opzioni vittoria finanziamento disponibili vengono effettuate fra le più sicure e utilizzate dai giocatori italiani, fra cui carte vittoria credito, pertafogli in pelle elettronici come PayPal e Skrill, oltre al bonifico bancario. BetRiot garantisce la sicurezza delle transazioni (inter. alla crittografia avanzata, offrendo protezione insieme delle notizie personali e finanziarie.
In Più, possiede una concessione vittoria gioco regolamentata, garantendo un ambiente vittoria gioco affidabile e pellucido. A Causa Di coloro che cercano una piattaforma successo gioco fresca con giochi autentici, tante offerte, pagamenti sicuri e un ambiente user-friendly, il Casino Betriot si distingue come possiamo asserire che una scelta successo prim’ordine. Buona sorte a qualsivoglia i giocatori successo fortuna, e ricordate vittoria accogliere una politica successo bonus appropriata. Immergetevi nel universo dei casinò con Betriot e approfittate vittoria emozionanti opportunità con lo scopo di guadagnare in capiente. La piattaforma supera le altre con la sua varietà di giochi di slot e avventure che vanno da film famosi a safari durante la giungla e mitologie greche
.
A Causa Di quanto concerne i codici bonus esclusivi di Betriot, sarà nostra premura inserirli all’interno nel link di giornata al portale. Oggi esamineremo insieme ciascuno i bonus primarie quale presenta il sito di Betriot e le indicazioni più importanti quale ti saranno necessari a causa di crearti un’idea complessivo circa la di essi effettiva utilità. Già dal momento osservando la i quali aprirai la anteriormente pagina, vedrai un’animazione quale riporta il logo Betriot la che razza di presenta il sito al meglio e instaura già un messaggio successo patto frizzante con ipotetici giocatori futuri. Abbiamo provato per te Betriot Casino con un certo numero di 3 persone a causa di circa cinquanta ore successo gioco analizzando, approfittando dell’occasione, come si presenta il portale, quali avvengono i suoi punti successo bravura o le mancanze accidentali relative ad qualche aspetti specifici.
I limiti successo ritiro con voucher non vengono effettuate distinti poiché il portale non supporta la suddetta tipologia di erogazione. Ovviamente, prima vittoria poter aprire il tuo bankroll, dovrai formalizzare un’iscrizione all’dentro del portale così da poter permettere al metodo di inventarti fra i suoi clienti. Come Possiamo Ammettere Che con lo traguardo di molti altri casinò negozio online, aprire e gestire un conto Betriot è assai semplice. Osservando La codesto pezzo esploreremo i ragioni per cui Betriot è un bookmaker negozio online ideale con lo scopo di le tue scommesse sportive , analizzando qualsivoglia i suoi aspetti costruiti in maniera dettagliato. Le nostre avanzate misure vittoria sicurezza garantiscono quale il tuo account sia costantemente protetto, offrendoti la aforisma tranquillità viceversa giochi. Con un anticipo minimo vittoria soli €10, garantiamo il quale ciascuno giocatore possa entrare subito nell’azione senza attese.
Betriot offre un’ampia gamma vittoria metodi successo pagamento, gestendo sia le opzioni bancarie tradizionali che le transazioni mediante moderna criptovaluta, con l’obiettivo vittoria assicurare il quale tante de le transazioni siano fluide e sicure. La piattaforma adotta rigorosi protocolli con lo scopo di la protezione delle informazioni personali e finanziarie, implementando tecnologie di crittografia vittoria primo piano e sistemi anti-frode a fine di proteggere i dati degli fruitori. In Più, l’regolarità di Betriot nel soddisfare i clientela è sembra per il lavoro successo assistenza clientela 24/7, accessibile canale posta elettronica e live chat, garantendo un aiuto efficace e tempestivo quando necessario. In Più, il team di supporto clienti è ben addestrato con lo traguardo di gestire una varietà successo richieste, dalle questioni successo erogazione alle domande sui giochi, garantendo che i giocatori possano godere vittoria un’competenza di gioco in assenza di problemi. Codesto focus sul supporto compiuto e sulle transazioni sicure sottolinea l’impegno successo Betriot nel fornire un ambito successo gioco negozio online deciso e piacevole con lo traguardo di i suoi fruitori. Senza la necessità successo un’applicazione ufficiale, Betriot è perfettamente ottimizzato per i dispositivi mobili, garantendo quale i giocatori possano godere dei loro giochi di slot preferiti, roulette, blackjack e bonus del casinò personalmente sui di essi smartphone o tablet.
Sebbene il portale non offra un’applicazione dedicata ai giocatori, ma allo stesso periodo ciascuno i servizi il quale offre, le promozioni e le esperienze vittoria gioco avvengono degni di giudizio e lo rendono una piattaforma assolutamente competitiva e di rilievo. I tempi vittoria prelievo con Postepay, Voucher e Paypal non vengono effettuate distinti poiché il portale non supporta i suddetti metodi di finanziamento. Betriot è una piattaforma vittoria betriot gioco d’fortuna negozio online schiettamente al attraversamento coi tempi, il quale permette di scegliere tra un ampio spettro vittoria metodi successo erogazione vittoria cui potresti avere sia a causa di i depositi quale prelievi.
]]>