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);
Przedtem zaczniesz 50 free spins no deposit ggbet obstawiać zakłady sportowe lub grać w ulubione rozrywki w kasynie, jesteś zobligowany doładować konto. Zatem każdy gracz będzie mógł znaleźć dobry na rzecz mojej dziurki układ. Przejdź do własnego konta własnego i kliknij klawisz „Wpłaty”. Następnie zdecyduj się na preferowaną metodę płatności i wpisz dogodną kwotę doładowania konta bankowego.
Mając to pod ręką, będziesz w stanie zbudować odpowiednią analitykę i stać się bystrym graczem w ciągu paru dób. Niezależnie od momentu tegoż, jak dobre są usługi bukmacherskie, zmartwienia mogą się pojawić i owo właśnie umiejętność radzenia sobie wraz z nimi przesądza o prawdziwej wartości bukmachera. Wypłata niedużych kwot wydaje się możliwa dzięki prostej procedurze, która wymaga dodania Twej karty bankowej (znaczy prawdziwej, odrzucić wirtualnej). W sytuacji większych kwot, będziesz musiał potwierdzić swoją tożsamość zdjęciem.
Miłośników hazardu spośród pewnością ucieszy ten zjawisko, że zabawa w kasynie może być uruchomiona na urządzeniach mobilnych. Wiemy, że ggbet to pewien z najpóźniejszych, nowocześniejszych i najpopularniejszych naszych bukmacherów. Dzięki niemu możesz obstawiać odrzucić tylko zdarzenia sportowe, jednak także grać w rozrywki kasynowe. Administracja serwisie nie wydaje się usatysfakcjonowana tym, jak obecnie zostało osiągnięte i codziennie podaje wiele innowacji, które dotyczą zabawy hazardowej na stronie www GGBet. Niektórym się jest to pociąga, ponieważ wygrali cenne ilości pieniędzy. Został uruchomiony jak mała platforma dla kilkuset użytkowników, później tysięcy i tak w dalszym ciągu.
A także owo, że zapoznałeś się wraz z warunkami świadczenia usług i polityką prywatności GG.Bet. Przedmeczowe zakłady sportowe w GGBET, owo najpopularniejszy typ zakładów, które można postawić poprzednio rozpoczęciem sytuacje. Posiadają korzystniejsze warsztaty niż wspomniane wcześniej zakłady na żywo. Ewidencja wszystkich dostępnych technik wydaje się być dostępna gwoli każdego obstawiającego w sekcji „Kasa”. Należą do tych propozycji dolar amerykański i euro, które są najpopularniejszymi walutami.
Nagroda wydaje się przyznawana oryginalnych fanom po zapisu konta i wpłacie depozytu. Stawki w e-sportowych zakładach owo owo, co uczyniło GGBet znanym globalnie. To fakt, że byli pionierami w przyjmowaniu zakładów na e-sporty, przesuwając pierwotnego jakość na nowy pułap. Stawiaj na e-sport na naszym własnym wortalu i czerp przyjemność z pasjonującego świata cybernetycznego. Grają w GGBet fan może być przeświadczony własne bezpieczeństwa na wortalu. Przedsiębiorstwo używa nowoczesne systemy szyfrowania danych hazardzistów.
Klienci GGBet mogą dokonywać zakłady sportowe na sporty i e-sportu to znaczy counter strike. Do Odwiedzenia władzy zawodników GGBet zakłady – więcej niż dwadzieścia dyscyplin muzycznych. Na lewej witrynie ekranu sprawdzimy wszelkie sytuacje sportowe i e-sportowe, na które możemy obstawiać zakłady bukmacherskie. Jeśli dzierżysz już swe rachunek rozliczeniowy w kasynie, owo tok GGBet Login wydaje się być nadzwyczaj nieskomplikowany. Należy, że odnajdziesz na górze każdej strony www po prawej stronie www odnośnik o kategorii ZALOGUJ SIĘ.
Zwróć także uwagę na to, że do odwiedzenia GG Bet login możliwy wydaje się być także obok wsparcia internecie społecznościowych tego rodzaju jakim sposobem na przykład Twitter, Facebook, Yahoo Dodatkowo i mnóstwo innych. Fani wskazują, że obsada pomocy wydaje się być za każdym razem uprzejmy, pomocny i posiada wystarczającą wiedzę na sprawa usług operatora. Bet, należy przejść do sekcji Rabaty i zapoznać się wraz z regulaminem reklamy.
Podest została założona w 2016 roku, a operator może pochwalić się dużym doświadczeniem w branży. Na początku witryna działała wyłącznie jako e-sportowy bukmacher online, a następnie, wspólnie wraz z wzrostem zainteresowania usługą, poszerzyła granice swojego działania. Sprawdź, w jaki sposób działa program, instalując ją na swoim urządzeniu. Przygotowaliśmy gwoli Twoich potrzeb krótki poradnik gwoli użytkowników Mobilne i iOS, który krok po kroku przeprowadzi Cię za pośrednictwem cały tok instalacji naszej GG Bet app.
Rzucasz dwiema kośćmi, a następnie starasz się powtórzyć swój wynik, zanim ta kapryśna siódemka pozostanie rzucona. Jest to rozrywka wraz z wolno budującym się dreszczykiem emocji, którą każde szanujące się kasyno musi mieć dostępną. Poważne podejście do zakładów postuluje rzetelnego zrozumienia jakim sposobem działają warsztaty. Każdy inteligentny zakład, który gracz robi oznacza właściwie poinformowaną decyzję opartą na naszym, która suma pieniędzy działa najkorzystniej na rzecz określonego typu kursów w konkretnej sprawy. Zakłady bukmacherskie, oczywiście, za każdym razem dotyczą wyników obserwowanego meczu, które przynoszą ci trochę pieniędzy, jeśli twoja prognoza okaże się poprawna.
Rozrywka odbywa się przy użyciu waluty wirtualnej i odrzucić postuluje od graczy wpłaty depozytu. Jak Się Zarejestrować w naszym własnym kasynie wydaje się nie zaakceptować wyłącznie prosta, lecz też wyjątkowo opłacalna, jeśli skorzysta się wraz z naszego własnego specjalnego linku. Wystarczy fita kliknąć, a podczas otwierania konta otrzyma się wyjątkowo pożądany nadprogram zbyt rejestrację czy bonus z brakiem depozytu. Są owo naprawdę dobre ilości wskazujące na świetny premia oferujący bezpłatne spiny GGBet.
Jeśli kiedykolwiek dostaniesz nieoczekiwany alert logowania, błyskawicznie zmień hasło. Do wypełnienia dzierżysz więcej niż jeden pola, czyli odnośnik e-mail i hasło, jakiego pragniesz używać. Następnie dla rejestracji w GG Bet zaznacz, że jesteś osobą pełnoletnią i że zapoznałeś się spośród warunkami świadczenia usług za pośrednictwem własny portal GG Bet.
Całość było możliwe dzięki zaangażowaniu naszych ekspertów, którzy działają w branży od kilku lat. Od Czasu początku działalności naszym własnym głównym założeniem było to, by oferować jakość, która dotąd była niespotykana na branży. Spośród czystym sumieniem możemy stwierdzić, że owo się udało, ponieważ zawodnicy mają do odwiedzenia naszą firmę wiara, a baza grono użytkowników bezustannie się powiększa. W Tym Momencie możesz dokonać GGBet logowanie do odwiedzenia swojego profilu w przypadkowym chwili.
]]>