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);
Оформлен официальный ресурс онлайн казино 1Win сдержанно, дизайн простой и ненавязчивый, в нем преобладает синий цвет. Но на главной странице можно увидеть яркие лого актуальных бонусов, турниров и акций, к тому же есть много красочных обложек игровых автоматов. Мобильный доступ к 1Win предоставляет пользователям удобство и гибкость в управлении своими ставками и аккаунтом в все время и изо любой точки мира. Использование мобильного приложения 1Win с целью входа в учетную запись становится все более популярным благодаря его простоте и быстроте доступа к играм, ставкам и личному кабинету.
Дилер запускает шарик на рулеточное запаска 1win, а игроки делают ставки в реальном времени посредством специального программного обеспечения в виде меню на экране своего устройства. В то же время, благодаря использованию нескольких камер, передающих картинка в высоком разрешении, игроки исполин отлично видеть все, что происходит в зале. И, соответственно, забава проводится максимально честно и прозрачно. Погрузитесь в забирающий мир азарта и удачи с игрой Fortune Tiger! Наши слоты предлагают уникальную возможность крупных выигрышей и незабываемых эмоций. Высокие коэффициенты, разнообразные бонусы и потрясающий дизайн сделают ваше время игры незабываемым.
По Окончании регистрации изменить основную валюту счета можно только через службу поддержки. Рекомендуется внимательно выбирать валюту при регистрации, чтобы избежать необходимости её последующего изменения. Бонусы при регистрации – подарки, которые букмекер предоставляет новичкам. На текущий период это приветственный награда +500% к размеру первого депозита с целью новых пользователей. Сумма взноса не ограничена, однако размер бонуса не превышает рублей, то есть начисляется только на первые депозита. Пройти регистрацию можно в все время суток, процесс займет не более 2 минут, еще порядка 5 минут потребуется ради заполнения профиля в личном кабинете.
Используйте только официальные ресурсы с целью регистрации и входа. Ознакомьтесь с условиями ставок на 1win, выберите оптимальный тип ставки под свой образ прогнозов, и наслаждайтесь разнообразием возможностей для успешных ставок. В лайв-ставках пользователей ждет меньший альтернатива событий, чем в прематче, но с появлением уникальных мероприятий.
С Целью автомобиль Mastercard предусмотрено только обновление счета, поэтому использовать их при наличии VISA нет смысла. Онлайн-кинотеатр – данное настоящий кинотеатр с подборкой самых последних фильмов в высоком качестве. Покер-рум представляет собой полноценную площадку с целью игры в различные к данному слову пока нет синонимов… покера за столами с разными лимитами. Кроме того, игроки в игра исполин участвовать в различных акциях и получать дополнительные выигрыши. Чтобы ознакомиться с этими и другими развлечениями из серии 1win games, посетите официальный сайт оператора.
буква помощью них мошенники могут получить ваши учетные данные. После входа в 1Win через такой ресурс, ваши данные станут доступны мошенникам. Вам можете играть в онлайн-рулетку в режиме очной игры с казино.
В первую очередь следует перейти в официальные аккаунты 1win казино в социальных сетях. В частности, большое количество кодов и ваучеров можно найти в официальном канале бренда в Telegram. Кроме Того можно воспользоваться поисковой системой, чтобы перейти на сайты, которые рассказывают об текущих предложениях.
Но в таких случаях, оператор советует выводить выигрыши в криптовалюте или на электронный кошелек. Также интернет провайдеры исполин блокировать официальный сайт букмекерской конторы One Win, поэтому клиентам предлагается рабочее зеркало. К тому же, можно играть в приложении, оно не блокируется. Вслед За Тем регистрации букмекерская контора 1win открывает все возможности игрокам с целью ставок на спорт. После открытия счета в системе клиент может получить доступ к индивидуальному счету, а также спортивным событиям. С Целью посетителей, желающих оценить разнообразие и количество дисциплин спорта онлайн, предусмотрен режим наблюдателя.
По Окончании 1win kz вход регистрации рекомендуется сразу же подтвердить личность. Процесс KYC предусмотрена для проверки возраста и повышения уровня защиты клиентов. Кроме Того проверка открывает доступ к выводу средств с баланса. Обойти блокировки кроме того позволяет отдельное приложение для Андроид.
буква нами регистрация на официальном сайте проходит быстро и удобно. Используйте промокод при регистрации, чтобы получить эксклюзивные бонусы и предложения. Кроме того, мы предоставляем рабочие зеркала на сегодняшний день, что обеспечивает беспрепятственный доступ к нашему сервису в все время. Не забудьте скачать наше приложение с целью ставок, которое позволит вам быть в курсе всех событий и управлять своими ставками на ходу. Компания 1win зарекомендовала себя как один из лидеров в сфере букмекерских услуг в России. Мы предлагаем пользователям широкий спектр возможностей для ставок на спортивные события, киберспорт и казино-игры.
Вслед За Тем создания аккаунта, игроки имеют полный доступ к функционалу сайта, включительно возможность делать ставки, вносить и выводить средства. Однако с целью вывода дензнак с игрового счета краткое потребоваться прохождение процедуры верификации. 1вин предлагает широкий подбор игр и щедрые поощрения, что делает его уникальным местом для азартных развлечений. На платформе представлено множество слотов, ставок на спорт и покерных турниров, что обеспечивает максимальное разнообразие игрового процесса. Союз азартные развлечения – ваша пылкость, то мы настоятельно призываем обратить внимание на наше впечатляющее разнообразие игр, в числе которых более 1000 вариантов. Основная часть нашего ассортимента – это разнообразные игровые автоматы на реальные деньги, позволяющие вывести выигрыши.
По Окончании восстановления пароля вам сможете снова войти в свою учетную запись, используя новые учетные данные. Ежели вам забыли свой пароль, используйте функцию восстановления пароля, доступную на странице входа. Доступ к 1win может быть ограничен из-за законодательства и регулирований, касающихся азартных игр, в некоторых странах. Это может включать к данному слову пока нет синонимов… на проведение азартных игр в интернете или требования к лицензиям операторов игр. Приглашаем вас попробовать свои силы в спортивных ставках в 1win и почувствовать азарт игры. В 1win вам найдете множество разнообразных слотов, которые предлагают увлекательные игры и шанс выиграть большие суммы банкнот.
Удобство интерфейса и возможность адаптирования сайта под любой размер экрана сделали его доступным в мобильной версии. Бренд 1win также предлагает выгодные коэффициенты и широкую линию ставок на различные спортивные события, союз делает процесс беттинга наречие комфортным и выгодным. Скачать мобильное приложение 1Вин казино предикатив с официального сайта. Кроме Того выполнить загрузку можно предлог магазинов приложений – AppStore и PlayMarket. Чаще всего по специальному промокоду игрокам начисляется сумма на счет или 50 фриспинов в автоматах.
Ради этого в процессе регистрации он нажимает Наречие меня есть промокод и вводит комбинацию в соответствующее поле. В дальнейшем полученные при регистрации пользовательские реквизиты используются и при авторизации на мобильной/десктопной версиях портала, и с целью идентификации в приложениях. Откройте страницу казино и нажмите соответствующий раздел.
]]>