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);
GGBet jest to całościowa platforma hazardowa działająca od czasu 2016 roku kalendarzowego. Oprócz dużej sekcji zakładów muzycznych, GGBet podaje współczesne kasyno sieciowe z szeroką gamą konsol i atrakcyjnych reklamy. Kasyno GGBet wydaje się być dostępne w krajowej wersji językowej i akceptuje zawodników spośród Lokalny. Powinno Się zwrócić uwagę na sezonowe bonusy, które pojawiają się na przykład w sezonie letnim lub podczas ważnych świąt.
W ramach takowych ofert można uzyskać GGBet darmowe spiny, poboczne doładowania albo kasyno GGBet premia bez depozytu. Żeby nie zaakceptować przegapić żadnego spośród oryginalnych bonusów, wskazane jest regularnie sprawdzać swoją pocztę mejl, ponieważ zawsze informujemy grono internautów o każdego najkorzystniejszych promocjach. Fascynujący premia powitalny jest to nie jedyne, jak zostało przygotowywane gwoli klientów kasyna. Stali bywalcy mogą korzystać z cotygodniowych promocji, które na stałe wpisały się do odwiedzenia naszego własnego kalendarza bonusów. Weekly Bonus można aktywować jakie możliwości tydzień między wtorkiem a czwartkiem, wpłacając przechowanie w wysokości jak w żadnym wypadku 20 złotych.
Próg jest wysoki w relacji do odwiedzenia wcześniejszych premii, jednak procedura kyc gwarantuje o wiele lepsze warunki. Premia powitalny jest naliczany według przelicznika wynoszącego 150%. Realizując dalszy przechowanie, użytkownik może odebrać premię wynoszącą do 800 zł + 70 gratisowych spinów w grze Book of GGbet.
Należy pamiętać, że każdy premia działa w aprobacie wraz z regulaminem określonej reklamy. Po założeniu konta bankowego należy dokonać wpłaty głównego niedużego depozytu. Spośród kolei za złożenie kolejno 3 depozytów o określonej kwocie, gracz może uzyskać poniekąd 6000 złotych doładowania do odwiedzenia konta i pięćset darmowe free spin za rejestrację. Wydaje Się Być jest to serwis bogaty w przeróżne gry hazardowe, obfity premia powitalny i pewne rabaty na rzecz zarejestrowanych.
Dzięki różnorodności dostępnych procedur płatności i walut, użytkownicy spośród Lokalny mogą wygodnie korzystać z miejscowych systemów pieniężnych. Jedyną znaczącą różnicą wydaje się to, że fani nie mogą wypłacić własnych wygranych. Należy przeładować grę, żeby uzupełnić sumę kredytów i kontynuować grę. Modus demo wydaje się również opcją na rzecz tychże, którzy chcą zapoznać się wraz z grą zanim postawieniem zakładu na rzeczywiste pieniądze. Jeśli szukasz klasycznego hazardu, możesz spróbować szczęścia w pokerze, blackjacku, bakaracie, Sic Bo i innych rozrywkach.
W odpowiednim oddziale wyszukasz całe arkusze danych empirycznych dotyczące sezonów, play-offów, oraz ogólnych wyników drużyn narodowych i zawodników z całego świata. Dzięki faktycznie dużej ilości analiz możesz poprawić własne efekty w zakładach i poznać dużo dogłębnych faktów na sprawa pewnych poprzez Twoich potrzeb dyscyplin. Większość ludzi przychodzi gwoli emocji, jakie zakłady internetowego dodają do odwiedzenia oglądania, ponieważ owo niezwykle wzbogaca doświadczenie. W ten sposób odrzucić możesz przegrać, ponieważ twoje pełne zaangażowanie w każdej sytuacji jest satysfakcjonujące bez względu na wszystko. Podczas wówczas gdy Dota dwóch stawia zanim graczami niezwykle łatwy cel (zniszczenie Ancient), Twoja osoba skorzystasz niezwykle dobrze znając skomplikowane budowy bohaterów i procedury.
W przypadku wypłat, okres wykonania zależy od momentu wybranej procedury, lecz wypłaty wraz z portfeli elektronicznych są przeważnie najszybsze. Graj wnikliwie na GGbet i korzystaj z różnorodnych bonusów, które podest ma do przedstawienia. Premia powitalny, bonus od depozytu, kampanie promocyjne, turnieje bukmacherskie i program lojalnościowy zapewniają emocjonujące i satysfakcjonujące doświadczenie obstawiania. Pamiętaj, że obstawianie miało być przyjemnym i rozrywkowym zajęciem, zawsze graj wnikliwie. GGbet działający pod spodem firmą Brivio Limited posiada licencję Curacao eGaming Commission, jak potwierdza legalność i zgodność platformy z przepisami regulacyjnymi. Posiadanie autoryzacji pozwala ggbet casino na świadczenie swych usług w wielu państwach na całym świecie.
Na Rzecz więcej złożonych problemów, tego rodzaju jak weryfikacja konta bankowego czy kwestie związane z transakcjami, gracze mogą napisać na email protected. Reakcji na zgłoszenia e-mailowe najczęściej przychodzą w ciągu dwudziestu czterech godzin. W Najwyższym Stopniu efektywną metodą wydaje się czat na żywo, który dostępny wydaje się przez całą dobę. Konsultanci przeważnie odpowiadają w ciągu kilkunastu chwil, a tylko rozmowa odbywa się w języku angielskim lub lokalnym, w zależności od ustawień konta.
Asortyment wydaje się systematycznie aktualizowany o nowe wyroby, które zostały przetestowane pod kątem zgodności spośród taksami. Są niezawodne i bezpieczne, wyposażone w wytwornica liczb losowych zapewniający rzetelność wyników. Jakub Zakrzewski to ceniony twórca tekstów przez internet i tradycyjnych mediów, wyróżniający się lekkim stylem i oryginalnym spojrzeniem. Swoim umiejętności obejmują precyzyjną analizę danych i samodzielne grupowanie wiadomości, tworząc kompleksowego specjalistę ds.
1-wszy zakład bezpiecznie określa, że w wypadku przegranej cała kwota postawionego zakładu zostanie zwrócona na konto gracza jako rzeczywiste pieniądze. Do promocji są zaliczane zakłady sportowe GGbet spośród kursem jakie możliwości najmniej 1.75. Apka GGBET zapewnia najlepsze zakłady bukmacherskie przez internet, w tymże zakłady na żywo, bonusy, wpłaty i wypłaty i oczywiście darmowe transmisje. To świetne rozwiązanie na rzecz internautów, którzy odrzucić za każdym razem mogą skorzystać wraz z komputera stacjonarnego, a dostęp do programów zapewnia wygodę i możliwość obstawiania z arbitralnego miejsca.
Dbając o wygodę swoich użytkowników, kasyno na bieżąco pobudza listę dostępnych konsol i slotów. Jak Się Zarejestrować na stronie bukmachera nie zaakceptować absorbuje dużo periodu i pozwala miłośnikom konsol znaleźć odpowiednią rozrywkę i zagrać w pokera, ruletkę bądź blackjack tuż po założeniu konta. GGBet kasyno online ofiaruje przejrzystą platformę hazardową, która może się pochwalić jakościową grafiką i dopasowanym do wymagań graczy interfejsem. Poszerzona strona bukmacherska zezwala doświadczyć niezapomnianych emocji i szybko wdrożyć się w świat kasyna na żywo. Najwyższa jakość usług świadczona przez używane przez nas kasyno GGBet wydaje się być widoczna również w naszym własnym wortalu spośród zakładami bukmacherskimi.
GGBet zadbał o owo, żeby pomimo przyciągających warunków obstawiania, gracze mogli się cieszyć optymalną grafiką i najlepszą ofertą konsol kasynowych. GGBet kasyno internetowego pomimo tegoż, że jest relatywnie nowe w świecie hazardu, owo już zdołało zdobyć serca fanów. Posiadamy legalną licencję, gwarantującą odpowiednią jakość własnych usług. Nasza propozycja wydaje się poświęcona zarówno gwoli kasynowych internautów, w jaki to sposób i osób lubiących obstawiać w zakłady bukmacherskie.
]]>