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);
Jeśli nie zaakceptować jesteś przekonany jak do inwestowania w kasynie fachowymi środkami, idealną opcją wydaje się być nadprogram z brakiem depozytu. Jednym postulatem do odwiedzenia jego uzyskania wydaje się być ponieważ konto w portalu. Na ten moment, oprócz bonusu powitalnego, trwa siedmiu reklamy związanych z zakładami sportowymi. Różnią ów kredyty przy tymże rodzajem działania – są jest to przykładowo bonusy od momentu depozytu, teksty środków, bądź wyraźnie wyższe warsztaty. Niedużo jest obszarów, do odwiedzenia których pragnie się ciągle wracać, lecz 20Bet udowodniło, że wydaje się być jednym spośród nich.
Co ciekawe operator wymaga użycia waluty EUR albo USD przy wnoszeniu głównego depozytu i używaniu bonusu na start. Jest to cotygodniowa promocja przeznaczona dla zarejestrowanych użytkowników. Aby z niej skorzystać, wystarczy wpłacić minimum 80 ZŁ w piątek, a bonusowo otrzymamy 50% sumy, aż do odwiedzenia czterysta ZŁ. Jest owo cotygodniowa kariera gwoli zawodników, którzy wpłacili jak w żadnym wypadku 20 EUR w ciągu minionych 5 dzionki.
Kody atrakcyjne są propozycjami bonusowymi, które nadzwyczaj silnie oddziałują na odbiorców. Za otrzymanym od operatora kasyna ciągiem znaków może się kryć dosłownie wszystko. Od bonusów bez wymogu depozytów, poprzez wyszukane premie rozdawane wyłącznie w określonych kręgach, według standardowe oferty dostępne gwoli każdego. Głównym warunkiem, żeby móc odebrać wszystek bonus w 20Bet, jest rejestracja konta.
Jeśli przekracza pani 80 PLN, na używane przez nas saldo wpłynie 50% więcej wpłaconej sumy aż do tysiąc ZŁ. Kariera cotygodniowa jest to świetna metoda na prawidłowe doładowywanie naszego własnego salda. Cotygodniowe doładowanie zezwala na przyjmowanie gratisowych zakładów sportowych do odwiedzenia 400 PLN w każdą sobotę.
Żeby otrzymać pełen premia za rejestrację, wystarczy fita wkleić w najlepsze położenie, a dodatek będzie odruchowo przypisany do własnego konta gracza. Bukmacher zapewnia ekskluzywny pęk powitalny, składający się z kilku oddzielnych bonusów. Określonym wraz z tych propozycji wydaje się wyjątkowa premia na zakłady sportowe, a reszta to propozycji depozytowe dla kasyna.
Czytając, możesz się dowiedzieć, jakie obowiązują w Bet20 kody bonusowe i różne wytyczne dotyczące promocji. Każdy gracz może ubiegać się o wyjątkowy 20bet kod promocyjny nadprogram od pierwszego depozytu. Wszystkie powyższe propozycji są powiązane spośród pomocniczymi wpłatami w kasynie.
Pamiętaj, że by móc skorzystać z tejże propozycje, jesteś zobligowany zdeponować przynajmniej 80 zł w ciągu 5 dzionki. Propozycje promocyjne są naprawdę istotne, jeśli rozchodzi o zakłady sportowe i gry losowe. Wraz Z ich pomocą unikniesz znaczących utrat i zdobędziesz większe możliwości miłej i niezapomnianej rozrywki. Podsumowując, odrzucić posiada sensu rejestrować się u bukmachera, jeśli odrzucić gwarantuje imponujących, a przynajmniej akceptowalnych ofert rabatowych.
Propozycja powitalna wydaje się uważana zbytnio główny i najistotniejszy upominek w branży zakładów w Globalnej sieci. Jego główną zaletą jest jest to, że można fita uzyskać z brakiem żadnych opóźnień – niemalże bezzwłocznie według zapisu. Całość, jakie możliwości powinieneś zrobić, jest to aktywować swe konto i zrealizować pierwszą wpłatę (w niektórych przypadkach). W tymże przypadku fani rywalizują między sobą o końcową pozycję w tabeli. Swój zestawienia mogą oni poprawiać, stawiając zakłady na sytuacje sportowe. Dla zwycięzców przewidziane są lukratywne gratyfikacyj, aż do 6000 PLN.
Bez względu na wybraną opcję, powinno się upewnić się w sprawie pomocniczych warunków. Może jest to być system kodowania bonusowy, wpłata, lub wykonanie pozostałych poszczególnych czynności. Te dodatkowe wzory za każdym razem są wyraźnie zaznaczone w regulaminie oferty. Z niniejszej relacji dowiesz się o możliwościach słynnego międzynarodowego bukmachera 20Bet. Uważa się jego obecnie zbytnio jednego spośród najhojniejszych w branży, ponieważ podaje zaskakująco przystępne bonusy dla świeżych użytkowników.
Premia wydaje się przyznawany obok jak najmniejszym depozycie, wynoszącym czterdzieści zł. Środki przyznane na konto bonusowe są obłożone konkretnymi warunkami użytkowania. Owo 5-krotny obrót na kuponach AKO z minimum dwoma zdarzeniami i zsumowanym kursem 2,00.
To oryginalna kariera wraz z zakładami dostępnymi gwoli osób, które zdeponowały przynajmniej równowartość 20 EUR w ciągu niedawnych pięciu dni. Jeżeli uda się trafić dziesięciu, 9 albo 8 wskazanych wydarzeń, to 20Bet wypłaci 4500 zł, czterysta zł albo dwieście zł rekompensaty. Decydując się na nadprogram gwoli zakładów muzycznych, można liczyć na czterysta zł, przyznawane w charakterze 100% od momentu depozytu.
Najmniejszy przechowanie kwalifikujący do zdobycia bonusu to 40 zł. Otrzymane pieniądze mają warunek 5-krotnego obrotu na kuponie akumulowanym, wraz z co najmniej dwoma typami o łącznym kursie nie zaakceptować mniejszym niż 2,00. W naszym przypadku fan gier losowych może odebrać aż 2-ie premie – od momentu czołowej i drugiej wpłaty. Powinno Się aczkolwiek pamiętać, że limit na wygrane wraz z darmowych spinów wynosi 220 ZŁ.
Inny nadprogram przeznaczony wydaje się być natomiast na rzecz zwolenników zakładów AKO. Zależnie od czasu cyfry zdarzeń na własnym kuponie, otrzymujemy tak zwanym. Jeśli nasz kupon będzie zawierał 20 zdarzeń, jego kurs pozostanie powiększony aż o 100%. Jedną spośród reklamy, której wskazane jest się przyjrzeć bliżej, jest „Cashout”, wykorzystywany, gdy ustawiony zakład odrzucić idzie według własnej myśl.
Serwis 20Bet obecnie funkcjonuje jako pełnoprawny bukmacher sportowy i kasyno internetowe. Toteż wyjąwszy względu na to, w której sekcji zamierza się bawić użytkownik rejestrujący rachunek rozliczeniowy, powinien otrzymać odpowiednio dostosowaną ofertę. Operator 20Bet stworzył osobne rabaty gwoli miłośników obydwu sekcji. Przygotowano osobne pakiety startowe, premie odnawialne, więcej jeszcze programy lojalnościowe. Klub VIP jest to ekskluzywna promocja zarówno na zakłady sportowe, jak i kasyno.
Oczywiście załączniki przyznawane są po spełnieniu określonych wymagań, które ściśle zobrazowane są w regulaminie konkretnej marki. Na te i inne najczęściej zadawane pytania postaramy się odpowiedzieć w dalekiej części owego artykułu. System lojalnościowy kasyna wydaje się stały i nie resetuje osiągów gracza. Początkowo to pliki darmowych spinów i po kilkadziesiąt złotych, a ostatnie poziomy przyznają tysiące tysięcy złotych.
]]>