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);
Zabawy wariantu Insta to na przykład bingo, keno, kości, zdrapki i całe mnóstwo wciągających sytuacji. To właśnie oni dostarczają polecane zabawy wśród polskich zawodników, które wykazują potencjał do odwiedzenia odwiedzenia okazałych wygranych. Opcjonalnie kasyno może również wymagać potwierdzenia adresu zamieszkamia odbioru, pozostałych dokumentów bądź przeprowadzenia wideorozmowy.
Ponieważ tego typu bonusy nie zaakceptować są obecnie dostępne, wskazane jest śledzić aktualizacje, ponieważ kasyna często dodają wyjątkowe oferty wyjąwszy depozytu. By zdobyć szyfr promocji do odwiedzenia NV Casino z brakiem depozytu, zarejestruj świeże profil na formalnej witrynie NV Casino. Według zakończeniu rejestrowania się sprawdź sekcję z promocjami albo swoją skrzynkę e-mail, gdzie znajdziesz najlepsze kody bonusowe. Wprowadź system kodowania w odpowiednie grunt, aby odebrać bonus bez depozytu i skorzystać spośród gratisowych spinów bądź odmiennych nagród wyjąwszy konieczności wpłaty. Pamiętaj, aby zapoznać się z warunkami każdej reklamy, żeby w pełni wykorzystać proponowane korzyści. Fani poszukujący możliwości przetestowania platformy wyjąwszy konieczności wpłacania własnych środków mogą skorzystać z atrakcyjnych ogłoszeń, które NV Casino przygotowało specjalnie gwoli świeżych użytkowników.
Program mieści luksusowe bonusy VIP konstruowane gwoli wiernych klientów, zachęcając do dalszego zaangażowania. Regularna komunikacja umożliwia, że zawodnicy otrzymują na termin wiadomości o dostępnych możliwościach, jakie możliwości umożliwia im strategicznie maksymalizować swoje korzyści. Kasyno proponuje różnorodne tytuły od czasu okresu wybitnych dostawców, zapewniając doskonałą jakość grafy, realistyczną rozgrywkę i dużo emocji. 1X2 Gaming wydaje się to dostarczyciel specjalizujący się w sporządzaniu innowacyjnych gier slotowych i wirtualnych zakładów sportowych.
Fani mogą wybierać spośród różnych wariantów imponujących konsol, każda wraz z unikalnymi procedurami i limitami zakładów dostosowanymi do różnych budżetów. Każde zabawy są dostępne 24/7 z obsługą w mnóstwo językach i opcją czatu na żywo. Jackpoty są uruchamiane przypadkowo podczas typowej partii, co określa, że każdy fan dzierży równe okazje na wygraną niezależnie od wysokości zakładu. Choć RTP ludzi komputerów wydaje się niższe (około 88-90%) ze względu na składkę jackpotową, potencjalne wygrane mogą całkowicie zmienić życie. NV Casino podaje różnorodne tematyki jackpotów – od czasu afrykańskich safari na egipskie przygody, zapewniając rozrywkę dla każdego gracza szukającego wielkich emocji i rekordowych wygranych.
Powinieneś dostarczyć papiery tożsamości, dowód adresu i weryfikację metody płatności przed uzyskaniem dostępu do swych wygranych. Ten tok najczęściej utrzymuje pory i mieści przedłożenie dowodu własnego wydanego poprzez rząd, rachunku zbyt środowiska i wyciągu bankowego albo zdjęć karty. Dzięki naszym promocjom zawodnicy mogą korzystać z nadal większej ilości przywilejów i nagród wyjąwszy konieczności używania kodów promocyjnych. Wszelkie operacje są dostępne bezpośrednio wraz z konta gracza, a stan przelewów można sprawdzać w panelu użytkownika.
Zakłady przedmeczowe obejmują szeroką gamę sportów i rynków – od chwili imponujących wyników według złożone kombinacje. NV Casino w charakterze kasyno internetowego udostępnia przejrzysty panel sektora, który umożliwia prędko odnaleźć interesujące tytuły. NV Casino istotnie deposit premia i rabaty specjalistyczne to okazja, aby zdobyć poboczne rekompensaty w obrębie działaniu Gra Tygodnia. Sunny Coin , a na aktywacji bonusu w opisie i wpłacie klucza gracze mogą liczyć na atrakcyjne profity. Obowiązuje maksymalna cena 20 PLN oraz zakres wypłat równy pięciokrotności wartości bonusu. Każdy spośród tychże bonusów ma swoje wytyczne i maksymy, dlatego zanim aktywacją powinno się dokładnie zapoznać się spośród regulaminem ofert.
NVcasino przez internet owo podest gwoli zawodników, którzy lubią prostotę, szybkie wypłaty i konkretną ofertę bonusową. Dla graczy szukających anonimowości, kryptowalut i dużych turniejów – jest to strzał w dziesiątkę. Początkujący też się odnajdą, ponieważ nv kasyno rejestracja obsługa i interfejs nie wymagają doktoratu. Warto dać mu szansę, zwłaszcza jeśli masz dość przeładowanych i sztucznie błyszczących kasyn. Umyślnie dla takowych zawodników przygotowaliśmy w NV kasyno osobną sekcję o kategorii „Gry Insta”. Aczkolwiek efektywność rozwiązywania problemów może być niekonsekwentna, a niektórzy użytkownicy zgłaszają niezadowalające załatwienie ich kwestii.
Jeśli aktywowałeś nv casino nadprogram z brakiem depozytu, w pierwszej kolejności skorzystasz spośród gratisowych spinów, a wówczas później zagrajesz zbyt własne środki. Jeśli zaliczasz osobiście mojej dziurki do grupy highrollerów, innymi słowy zawodników grających nieomal wyłącznie na wysokie stawki, to spośród pewnością spodoba Tobie się odrębna nasza profesjonalna podaż. Wydaje Się ona dostępna dla użytkowników, którzy osiągnęli jakie możliwości w żadnym wypadku dalszy stopień w własnym klubie VIP i umożliwia uzyskać premię o wartości 100% od czasu wpłaconej ilości do kwoty aż PLN. Tak właśnie wygląda prawdziwy nadprogram proponowany za pośrednictwem NV kasyno online dla highrollerów. Ta promocja dostępna jest od momentu piątku do niedzieli, jej wymagany obrót to x40, a dzięki tej realizację masz pięć dni.
NV casino w istocie deposit bonus codes te pozwalają na odblokowanie różnych bonusów, takowych jak darmowe spiny, poboczne środki na grę bądź specjalistyczne propozycje na rzecz stałych internautów. Ważne wydaje się, aby prawidłowo wprowadzić szyfr, ponieważ każda promocja dzierży określone warunki, które muszą zostać spełnione, żeby móc w pełni spośród tej dziewczyny skorzystać. NV casino no deposit premia to doskonała okazja dla graczy, którzy chcą rozpocząć grę z brakiem konieczności wpłacania własnych środków. Wydaje Się to specjalna podaż rabatowa, która umożliwia na wypróbowanie konsol i funkcji kasyna bez ryzyka finansowego. Dzięki wstecz bonusowi nowi użytkownicy mogą sprawdzić, w jaki sposób działa platforma, i wygrać prawdziwe pieniądze bez inwestycji.
Cały interfejs witryny wydaje się być dostępny w języku naszym – od głównego lobby, za pośrednictwem opisy konsol, aż po sekcje wsparcia. Tłumaczenia są sensowne, naturalne i odrzucić wyglądają na wykonane automatycznie, jak w dużym stopniu usprawnia wygodę poruszania się po platformie. Wideo poker umożliwia na kontrolowanie swych decyzji i wybieranie optymalnych kompozycji kart, jakim sposobem sprawia, że uciecha wydaje się być odrzucić tylko losowa, aczkolwiek również oparta na umiejętnościach. NV Casino wydaje się zarządzane zbyt pośrednictwem świetnego operatora, który posiada zasobne doświadczenie w branży komputerów online. Kasyno działa na bazie licencji wydanej poprzez Malta Gaming Authority (MGA), jakim sposobem znaczy, że podlega rygorystycznym regulacjom prawnym i audytom.
Według pomyślnej ocenie nadprogram będzie aktywowany w opisie gracza, jakie możliwości umożliwi wykładzinom rozpocząć używanie z ofert promocyjnych bez konieczności dokonania początkowego depozytu. Na Rzecz miłośników ryzyka i łowców szansie dostępne są dzienne promocje i nv casino free spins na świeże tytuły. Trzeba aktywować grę spośród propozycji dnia i kręcić bezpiecznie utraty własnych środków. NV Casino emituje się być licencjonowane na Curaçao, które spełnia zasadnicze oczekiwania, jednakże odrzucić zdaje się być znakomite wraz wraz z ścisłego dozoru.
]]>