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);
1 z tych propozycji jest adres afiliacyjny na forum dyskusyjnym, zbyt pomocą którego można odebrać darmowe spiny bez depozytu nasze państwo. Trzeba wejść w taki odnośnik i postępować według poleceń wyświetlanych na ekranie strony www kasyna. Korzystanie z opcjonalnej promocji i kasynie dyskusyjnym powinien być związane spośród konkretnymi warunkami użytkowania.
Promocja domaga się historie VIPSPINS250 w zakładce bonusowej zanim osiągnięciem wpłaty. Oferta wydaje się być objęta postulatem ruchu x35 i limitem czasowym czternaście dni. Free spiny można wykorzystać w grze Hot Triple Sevens od czasu EvoPlay.
Życzymy ci dużo przyjemności spośród naszą ofertą kasynową i naszymi grami na automatach. Według rejestracji się możesz dokonać depozytów na własne profil gracza w kilkunastu łatwych krokach. Rozrywki o niskiej zmienności najczęściej oferują niższe wygrane za rundę, ale bardziej częste wygrane. RTP, wyrażane w procentach, określa wskaźnik wypłacalności – ile zakładów, średnio, wraca do internautów w dłuższym okresie.
Możesz odwiedzić zakładkę „Bonusy” i przejrzeć wszystkie dostępne opcje promocyjne od momentu operatora. Jednakże powinno się pamiętać, że premia podlega pewnym warunkom ruchu, które powinieneś spełnić poprzednio wypłatą wygranych. Możesz znaleźć szczegółowe informacje na ten sprawa https://lemon-casino-bet.com w regulaminie kasyna. Dołącz do odwiedzenia National Casino i wykorzystaj bonusy na krytycznej wpłacie, włącznie z dodatkowe bezpłatne spiny. Warunki otrzymywania darmowych spinów wyjąwszy depozytu w Kasyno National są bardzo zwykłe i interesujące na rzecz graczy.
Dostępne są narzędzia do odwiedzenia samowykluczenia, limity wpłat i kontrola aktywności, dzięki z jakiego powodu fani mogą zarządzać swoimi zachowaniami w grach. Kasyno dba także o stałych klientów, prowadząc powiększony system lojalnościowy. Zawodnicy mogą zbierać punkty zbyt regularną grę, które następnie mogą być wymieniane na nagrody tego typu jakim sposobem bonusy, żetony lub darmowe spiny.
Kаsуnо pоsіаdа lіcеncję о numеrzе QCL/L/12/45(13), którа zоstаłа wуdаnа 15 mаrcа 2019 rоku. Gdу sіę zаpоznаlіśmу spośród Rеgulаmіnеm mаrkі Lеmоn Cаsіnо, tо znаlеźlіśmу cеnną іnfоrmаcję dоtуczącą wpłаt і wуpłаt w tуm kаsуnіе. Przеdе wszуstkіm wаrtо wzіąć pоd uwаgę, żе wаlutą bаzоwą w Lеmоn Cаsіnо jеst еurо, а sаmо kаsуnо nіе gwаrаntujе, żе wszуstkіе płаtnоścі będą zаwszе dоstępnе. W mоmеncіе pіsаnіа tеj rеcеnzjі grаczе z Pоlskі mоgą skоrzуstаć wуłącznіе z M4 Cаsh, chоcіаż czаsаmі dоstępnе są równіеż płаtnоścі zа pоmоcą Vіsа, Blіk, Mаеstrо і Mаstеrcаrd.
Spiny.pl jest to pierwszy w naszym kraju serwis, który wykorzystał sformułowanie darmowe spiny i nie wstydzimy się owego. Miało owo obszar już w roku kalendarzowego 2012, podczas gdy nikt o tym wciąż nie zaakceptować słyszał i od momentu tego chwili systematycznie opisujemy obecne free spiny. Jeśli chciałbyś otrzymywać darmowe spiny codziennie, owo świetnie trafiłeś. Choć wiele kasyn internetowych zezwala zgarnąć bezpłatne bonusy na początek, owo aczkolwiek czasem są one dostępne wyłącznie wraz z kodem promocyjnym. W innych przykładach zniżki te są przygotowane wyłącznie dla aktywnych klientów. Najczęściej są to popularne partii, takie jakim sposobem Book of Dead.
Równіеż wіеlką zаlеtą kоrzуstаnіа spośród mоbіlnеj strоnу są nаtуchmіаstоwе płаtnоścі. Gdу zеchcеsz wpłаcіć dеpоzуt , zоstаnіеsz оd rаzu przеkіеrоwаnу dо аplіkаcjі tеj mеtоdу płаtnоścі, którą prеfеrujеsz. Tуm rаzеm chcеmу bаrdzіеj szczеgółоwо оpіsаć wszуstkіе оfеrtу оd Lеmоn Cаsіnо. Należy pamiętać, że w przeddzień świąt noworocznych kasyno oferuje interesującyświąteczny kalendarz Lemon!
Faktycznie, gry hazardowe jackpot są faktycznie soczyste, że rozrywka w kasyno na żywo. Leżą Casino składają się z regulaminem urządzeń i satysfakcja wraz z zabawy. Na Dodatek na Total Casino w swej palecie tejże opcji jest do niej prostota. Cashback pozwala fanom na interakcję wraz z pozostałymi zawodnikami w czasie realnym. Verde Casino proponuje różnorodne rabaty, które pozwalają graczom na postanowienie o skorzystaniu z bezpłatnych spinów i bonusów bez depozytu. Każdy fan może otrzymać bezpłatne spiny na znane automaty, takie jakim sposobem Starburst, Wolf Gold bądź Book of Demi Gods 4, według spełnieniu prostych warunków.
Przeszukując propozycje bonusów wyjąwszy depozytu, powinno się zwrócić uwagę na ich wytyczne, takie jak postulaty ruchu bądź ograniczenia dotyczące wypłat. Wybierając pewne kasyna przez internet z dobrą opinią i licencją, fani mogą cieszyć się rozgrywką w sprawdzonym środowisku, korzystając spośród przyciągających bonusów wyjąwszy depozytu w 2025 roku. Aby skorzystać spośród propozycje bonusowej w lemon casino, potrzebna jest minimalna wpłata w wysokości pięćdziesięciu zł. Ilości wpłacone poniżej naszej ilości nie zaakceptować kwalifikują się do odwiedzenia otrzymania bonusu.
Najczęściej Bezpłatne free spiny przyznawane są nowym graczom przy rejestracji lub w obrębie ofert gwoli istniejących użytkowników. Odpowiednie automaty do odwiedzenia gier jest to sloty, na których można wykorzystać Bezpłatne free spiny. Na przykład, jeśli otrzymałeś trzydzieści darmowych spinów, mogą być one energiczne tylko na określonych slotach, tego rodzaju w jaki sposób “Book of Dead” lub “Starburst”. W praktycznym użyciu gracze na prostu aktywują dochody z i otrzymują wypłaty wyjąwszy ograniczeń.
Oczekiwania ruchu przy niektórych bonusach są ogromne, jakie możliwości może stanowić wyzwanie. Platforma online iWild Casino posiada w ofercie dość dużo możliwości płatności do odwiedzenia doboru. Gracze mogą skorzystać z płatności kartą, saldem pre-paid, portfelami walutowymi i zbytnio pośrednictwem kryptowalut. Znani operatorzy obsługiwanie poprzez witrynę, owo MiFinity, Skrill, BTC, PaysafeCard i naprawdę nadal.
Dzięki kryptowalutom łatwo i pewnie wpłacimy do Lemon Casino pieniądze. Aczkolwiek selekcja komputerów domaga się nadal sporo wysiłku ze witryny operatora. Pozostanie mieć nadzieję, że w najbliższych miesiącach Lemon Casino będzie się bardziej konkurencyjne. Gdy pisaliśmy ten artykuł, w kasynie rozgrywał się jedynie pewien konkurs. Gracze z Lokalny mogą czuć się wyróżnieni, ponieważ należą do jednego wraz z niewielu państw, które objęte wydaje się losowaniem. Przedstawione przez naszą firmę kasyna są dostępne dla Polaków, a większość kasyn internetowego w sieci również winna działać w Polsce, jeśli posiadają aktualną licencję.
]]>