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);
Możliwość dostosowania i podejmowania decyzji w momencie faktycznym podwyższa stawkę związana spośród rywalizacją. Na Rzecz entuzjastów gier kasynowych Betsafe przygotowało bogaty zestaw automatów, konsol stołowych i konsol na żywo, jak zapewnia oryginalne doświadczenie jakim sposobem w rzeczywistym kasynie. Betsafe Kasyno systematycznie organizuje prestiżowe turnieje i zdarzenia specjalistyczne wraz z gwarantowanymi pulami nagród. Nasz program lojalnościowy nagradza czynnych graczy pomocniczymi bonusami a także różnorodnymi przywilejami. Dołącz do odwiedzenia elitarnych internautów Betsafe Kasyno i wmów się, z jakiego powodu jesteśmy liderami w branży konsol hazardowych przez internet. Biblioteka konsol Betsafe Kasyno owo troskliwie wybrana kolekcja od czasu czołowych dostawców oprogramowania.
Obserwując wydarzenia na boisku bądź korcie, gracze mogą zdobywać wartościowe dane, które pomagają w formułowaniu więcej precyzyjnych prognoz. Oglądanie meczów na żywo zezwala dostarczać centralnych informacji potrzebnych do podejmowania przemyślanych wyborów związanych spośród zakładami. Betsafe, który został zbudowany w 2006 roku za pośrednictwem Grupę Betsson, zdobył reputację w charakterze działający w pełni profesjonalny bukmacher. Jego oryginalne podejście, pomoc dla klientów a także zgodność spośród uprawnieniem stwarzają dobre środowisko do obstawiania. Dzięki konkurencyjnym marżom, różnorodności propozycji oraz globalnej obecności, Betsafe przyciąga popularność wśród internautów na całym świecie.
Witryna Www pokrywa kluczowe ligi i międzynarodowe turnieje, co gwarantuje ogromny kalejdoskop możliwości dla zwolenników owego piłki nożnej. Betsafe weseli się wysokim docenieniem w Polsce, głównie dzięki przejrzystości, różnorodności możliwości zakładów oraz szybkiemu procesowi wypłat. Użytkownicy wraz z Polski cenią sobie niezawodność i łaskawe gwoli użytkownika funkcje platformy.
W Betsafe Kasyno kładziemy duży nacisk na doskonałość obsługi a także dzisiejsze rozwiązania technologiczne. Posiadana za pośrednictwem naszą firmę licencja MGA zapewnia pełne bezpieczeństwo i przejrzystość wszelkich umowy. Ta platforma powstała z myślą o w największym stopniu wymagających graczach, którzy cenią sobie wysoką jakość i niezawodność.
Dzięki linkom partnerskim posiadamy możliwość tworzenia treści i uzyskiwania prowizji, co odrzucić wiąże się spośród dodatkowymi wydatkami na rzecz internautów. Linki partnerskie umożliwiają nam tworzenie wartościowych treści i uzyskiwanie prowizji, nie zaakceptować obciążając na dodatek graczy. Klikamy przycisk \”otwórz konto\” i w tym chwili na podany mejl na żywo efekty w wirtualnychpowinien dotrzeć odnośnik aktywacyjny, który należy otworzyć dla aktywacjikonta. Warto również dodać, że choć kasyno przez internet wydaje się być dostępne dla graczy zpromocyjnych do odwiedzenia tejże sekcji.
W Betsafe tok ocenie konta bankowego jest to standardowa procedura, która postuluje od zawodników dostarczenia zeskanowanych dokumentów, takich w który sposób dowód tożsamości, poświadczenie adresu zamieszkamia i dane dotyczące wybieranej metody płatności. Działania te mają na celu ochronę użytkowników a także zapewnienie zgodności spośród obowiązującymi wzorami, jakie możliwości minimalizuje zagrożenie oszustw. Z możliwościami zakładów na żywo w Betsafe, fani zyskują szansę na delektowanie się emocjami związanymi z obstawianiem w momencie faktycznym. Dzięki elastyczności w strategiach, podejmowaniu woli opartych na analizach na żywo oraz dostępowi do odwiedzenia transmisji spośród różnych wydarzeń, Betsafe wyznacza na oryginalne zakłady. Integrując zakłady na żywo w własnej palecie, gracze mogą podnieść emocje związane spośród obstawianiem na zupełnie nowy poziom. Betsafe umożliwia użytkownikom dostęp do odwiedzenia transmisji na żywo spośród mnóstwo muzycznych wydarzeń, co zezwala dywanom śledzić akcję na żywo.
Betsafe z sukcesem łączy dzisiejsze technologie zabezpieczeń wraz z emocjonującą rozrywką, tworząc atmosferę, w której zawodnicy mogą czuć się bezpiecznie i dobrze. Aby uzyskać premia, należy skorzystać z naszego własnego linku, wyjąwszy konieczności wpisywania kodu reklamowego. Sekcja pokerowa Betsafe wycelowana jest do odwiedzenia fanów scrable i oferuje różnorodne turnieje, zapłaty a także luksusowe zniżki. Miłośnicy scrable mogą cieszyć się emocjonującą grą i rywalizować o interesujące gratyfikacyj. Dzięki dostępności w wielu językach Betsafe spełnia wyczekiwania zróżnicowanej społeczności zawodników z całego świata. Jest To umożliwia bukmacherowi dotarcie do odwiedzenia użytkowników spośród przeszło stu krajów, oferując dywanom naprawdę międzynarodowe doświadczenia w obstawianiu.
Zacznij swoją przygodę w fascynującym świecie komputerów internetowego wraz z wspaniałym Betsafe Kasyno. Jeżeli poszukujesz pewnej platformy, która jednocześnie podaje niezrównane możliwości uciechy, owo trafiłeś znakomicie. Nasza Profesjonalna uznawana marka oferuje niepowtarzalny premia powitalny sięgający 2000 EUR, wprowadzając Cię w luksusowy świat unikalnych komputerów i emocjonujących turniejów. Środki powitalne stają się dostępne gwoli oryginalnych graczy natychmiast na katalogów czołowej wpłacie, jak znaczy , że odrzucić należy szukać żadnych kodów promocyjnych.
Oferujemy setki konsol, w naszym różnorodne automaty, zabawy stołowe oraz ekskluzywne alternatywy kasyna na żywo. Używane Przez Nas procedury płatności są nieustannie aktualizowane o najświeższe rozwiązania technologiczne. Współpracujemy jedynie z zaufanymi producentami usług pieniężnych, co zapewnia bezpieczeństwo środków własnych graczy. Wszystkie procedury płatności zostały połączone wraz z myślą o maksymalnej wygodzie użytkowników.
Dzięki naszym wartościowym informacjom uczestnicy mogą podejmować świadome postanowienia przy obstawianiu, jakie możliwości może zwiększyć ich okazje na profity. Obok atrakcyjnych sportów takich jakim sposobem piłka nożna, koszykówka, siatkówka, tenis, hokej na lodzie, kojec i MMA, platforma zaspokaja również wymagania mniejszych grup fanów piłki nożnej. Działając adekwatnie z nakazami upoważnienia, Betsafe posiada licencję Malta Gaming Authority oraz odmienne zaświadczenia, które umożliwiają mu działalność na wielu rynkach. Ręczymy pełną przejrzystość wszelkich operacji pieniężnych na naszej systemie. Pewne audyty przeprowadzane za pośrednictwem zewnętrzne spółki czasie rzeczywistym potwierdzają, że stosujemy najwyższe wzorce bezpieczeństwa w Betsafe Kasyno. Betsafe Kasyno ustala oryginalne standardy w obszarze bezpieczeństwa sprawie i gwarancji danych empirycznych osobowych.
]]>