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);
Мостбет — онлайн казино с безупречной репутацией, которое постоянно улучшает качество предоставляемых услуг. Проверка аккаунта – сие важный шаг, который необходим ради обеспечения безопасности вашего игрового процесса и подтверждения вашей личности. Пройдя верификацию, вам получите доступ ко всем возможностям платформы, в том числе вывод выигрышей. С Целью быстрой связи со службой поддержки доступен официальный Телеграм-бот (@mostbetsupport_bot).
Прежде чем скачать mostbet kz приложение на айфон или айпад, придётся сменить страну в App Store, союз в казахстанском магазине его только через мой труп. Но новичку часто трудно разобраться во всех особенностях, так словно можно запустить любой слот в демонстрационном режиме. Данное бесплатная услуга, доступная для любого любителя азартных развлечений.
Отзывы от казахстанских игроков преимущественно являются положительными. После завершения регистрации, ваш номер телефона или местожительство электронной почты станут вашим логином для входа в аккаунт. Вы можете войти с различных устройств, таких как мобильный телефон, гаджет, компьютер или лаптоп, используя этот логин. Акции на Mostbet KZ — это простейший способ обрести достоинство во время ставок, спинов, участия в лотереях.
Сие исполин быть не только слоты, но и карточные, настольные, краш или лайв-игры. Связаться с ней можно по любым вопросам — от сложностей с авторизацией до технических сбоев в ходы игры. В зависимости от выбранного контакта ради связи, отличается скорость ответа специалистов. Еще значительнее бездепозитных поощрений начисляется, если активно участвовать в программе лояльности и продвигаться установленными уровнями.
В таких случаях основной портал часто блокируется провайдерами, словно мешает пользователям наслаждаться игрой. При депе в первые 15 минут вслед за тем регистрации – награда будет увеличена. На официальном сайте Mostbet пользователи гигант также следить за киберспортивными играми. Это популярное направление активно развивается, аудитория поклонников насчитывает до миллиона пользователей.
Наречие помнить, что регистрация разрешена только с целью совершеннолетних пользователей, и каждый непривычный клиент будет вознагражден бонусом от компании. Эксперты в области азартных игр ценят сайты с широким выбором платежных методов, так как это гарантирует удобство и безопасность с целью игроков. Мостбет КЗ предлагает немало платежных систем для пополнения и вывода средств. Сие связано с единица, словно личные данные игрока дополнительно защищены системой самого смартфона. Сие сделано для того, чтобы пользователи без усилий получали доступ к любимым развлечениям.
Взгляды и вывода вознаграждения через приложение Мостбет такие же, тоже на официальном сайте БК. Вслед За Тем этого деньги моментально поступят на ваш счет, и вы сможете приступить к ставкам или игре в казино. Отдел mostbet kz войти поддержки работает круглосуточно на русском и казахском языках, помогая решить любые вопросы с платежами. Для любителей быстрых и динамичных развлечений Mostbet предлагает казахстанским игрокам специальный раздел “Fast Games”. Здесь собрана коллекция мини-игр с простыми правилами, мгновенными раундами и быстрыми выплатами в тенге.
При словно, чтобы скачать Mostbet на Android, нужно обязательно разрешить загрузку файлов изо неизвестных источников. Все из-за борьбы плей маркет с азартными приложениями, союз приводит второму необходимости распространять ссылку вручную. Союз самочки точно можете могут уверены в надёжности Mostbet Android, даже словно файл принято поставляется администрацией. Можно обрести приветственный вознаграждение за регистрацию без депозита. По условиям акции, каждый новый клиент получает от казино в подарок 40 фриспинов, которые нужно отыграть с вейджером х40.
Профессиональные крупье проведут партию в рулетку, блэкджек, баккару или игра, а игроки могут наблюдать за их действиями через видеотрансляцию и общаться в чате. Одним из самых популярных видов ставок в Mostbet значится одиночная расчет, или ординар. Она подразумевает прогноз на единственный исход выбранного события. В случае верного предсказания, выигрыш рассчитывается путем умножения суммы ставки на коэффициент, установленный букмекером для данного исхода. Mostbet предоставляет казахстанским игрокам возможность заключать пари, используя разнообразные типы ставок.
На официальном сайте вверху страницы есть раздел, посвященный обходу блокировки. Зеркало Mostbet – сие аналог официального сайта, который в точности повторяет его оформление, но имеет другой доменный местожительство. Функциональная составляющая никак не отличается от основного ресурса, так что можно быстро освоиться и продолжить играть в казино. Да, деятельность Most Bet KZ легальна и находится под контролем комиссии Кюрасао.
]]>
Для любителей спортивных ставок Mostbet разработал отдельное приветственное предложение. Этот вознаграждение позволяет обрести дополнительные средства в размере 125% от первого депозита. Мостбет принимает ставки по лицензии Кюрасао, которую используют сотни зарубежных букмекерских контор и онлайн-казино. Они гигант выдаваться на конкретные спортивные события, с определенными коэффициентами. Ежели игрок получил бонус с целью раздела казино, он выдается с вейджером.
Ставки принимаются на матчи ATP, WTA и ITF разного уровня, включая турниры, проходящие в Казахстане. Любителям хоккея букмекер предлагает широкий выбор национальных и международных турниров, включая NHL и чемпионат Казахстана. В абрис букмекера представлены как традиционные и популярные дисциплины, так и довольно уникальные соревнования, интересные казахстанским игрокам. Помните, союз бонусные средства нельзя вмиг вывести – сначала необходимо выполнить консигнация отыгрыша.
Компания работает в Казахстане легально, поэтому в большинстве случаев зеркало предикатив. Однако союз наречие вас возникли проблемы с доступом к сайту, местоимение- постоянно можете скачать приложение ради обхода блокировки. В противном случае современное окно местоимение- можете найти на нашем портале или в службе поддержки компании. Слоты – данное то же самое, что и игровые автоматы, только онлайн и более разнообразно. В Mostbet есть слоты примерно от сотни провайдеров, игры можно фильтровать по ним, по категориям и жанрам, а к тому же искать по названию. Есть демо-режим, в котором можно играть без пополнения счета.
В Мостбет проверка считается обязательной процедурой, которую должен пройти каждый беттер. со помощью идентификации администрация БК проверяет информацию об клиенте, его совершеннолетний года. Подтверждение в Мостбет считается полностью безопасной процедурой. Игроку не наречие переживать, словно его личные данные будут распространены сторонним лицам. Вся информация наречие шифруется, словно гарантия безопасность.
Чтобы сделать ставку, нужно выполнить в Мостбет вход, указав личные данные. Беттер должен иметь хорошее представление об играх и командах, чтобы сделать корректный выбор. Особенно популярны киберспортивные соревнования по играм Dota 2, Counter-Strike, League of Legends, Valorant, Fifa.
Mostbet предлагает игрокам из Казахстана широкий подбор удобных способов пополнения счета, позволяя каждому пользователю выбрать наиболее подходящий способ. Пополнить счет можно через банковские игра (Visa и MasterCard), мобильных операторов, электронные кошельки и криптовалюты. Союз вас интересует бесплатная и безрисковая видеоигра, просто выберите игру из каталога азартных развлечений и начните играть. Существенно помнить, союз в демо-режиме местоимение- не можете вывести реальные деньги, так как все выигрыши аннулируются вслед за тем завершения игры.
MostBet – данное не просто интернет-казино; данное уникальное пространство с целью развлечений в мире онлайн-казино. Огромное разнообразие игр, щедрые бонусы, интуитивный интерфейс и высокий mostbet online степень безопасности делают MostBet одним предлог лучших онлайн-казино. Чтобы начать играть в казино Мостбет в Казахстане, вам необходимо зарегистрироваться и пополнить счет.
Взломать или каким-либо другим образом повлиять на работу ПО игровых автоматов невозможно. Mostbet также радует игроков щедрыми бонусными предложениями и различными способами вывода средств. Для удобства игры с телефона площадка предлагает адаптированное мобильное приложение. К Тому Же к получению доступна бесплатная PC-версия, адаптированная под компьютеры с операционной системой Windows. На официальном сайте Mostbet казино есть и покер-рум для игры в покер. Можно испытать себя за столом с целью Омахи, Тритона или Холдема.
В лайве игра более динамичная, интересная и ведется по увеличенному коэффициенту. Но новичку часто трудно разобраться во всех особенностях, так союз можно запустить любой слот в демонстрационном режиме. Это бесплатная услуга, доступная с целью любого любителя азартных развлечений. Профессиональные игроки, которые зарабатывают играя в казино, говорят о том, словно мобильное приложение заслуживает внимания.
]]>