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);
Обычно данное включает выполнение приглашённым игроком определённых действий, таких как внесение депозита или совершение ставок. ͏Площ͏адка 1 Win имеет простой и͏нтерфейс и легкую н͏авигацию.͏ Общество мо͏гут͏ легко во͏йти͏ и на͏ходить интересные и͏м спортивные события, управлять своим счетом и͏ делать денежные операции. Моб͏ильная вариант сайта и приложение ради iOS или Android делают ставки доступ͏ными в наречие время, или ͏в любом месте. Най͏ти новое зеркало 1͏ win сайт͏а в интернете ͏не сл͏ожно, оно обновляется время от времени.
Понятная навигация, широкий альтернатива событий, регулярные обновления ассортимента – всё данное делает сайт привлекательным. Футбол привлекает значительнее всего любителей спортивных ставок, благодаря глобальной популярности и нота 300 матчей в день. Пользователи гигант совершать ставки на все — от местных лиг до самого международных турниров. Благодаря таким опциям, как победитель матча, количество голов, гандикап и корректный счет, пользователи исполин изучить различные стратегии. Предматчевые ставки позволяют пользователям осуществлять ставки нота начала игры. Игроки могут изучить статистику команд, форму игроков и погодные состояние, а затем принять урегулирование.
За короткий период своего существования ресурс привлек огромную аудиторию. Количество новых игроков растет с каждым днем, следовательно советуем попробовать и вам. Обратите внимание, союз даже если вам выбираете быстрый формат, в дальнейшем вас гигант попросить предоставить дополнительную информацию. Ресурс 1вин предлагает сервис поддержки клиентов через онлайн-чат, доступный круглосуточно, 7 день в неделю. Время ответа службы поддержки быстрое, союз означает, союз местоимение- можете использовать ее для решения любых вопросов, которые наречие вас гигант возникнуть в все время.
Так иконка 1Win появится на главном экране вашего iOS-устройства и вам сможете быстро заходить на ресурс. Портал конторы поддерживает два языка – русский и английский язык. В дальнейшем администрация портала планирует расширить возможности и добавить еще языков. Например, банковские переводы и электронные кошельки имеют минимальный ограничение в 5 тысяч, в то время как AstroPay, игра Visa и Mastercard установили минимальную сумму депозита в 5 евро. Выводить можно суммы от 1 евро эквивалентную сумму в зависимости от выбранного метода вывода.
Таким образом, 1Win Bet открывает отличные возможности ради увеличения потенциального выигрыша на спортивных ставках. Разрешение на ведение игорной деятельности с целью 1Win получена от уполномоченного органа Кюрасао (Curacao eGaming). Это обязуется законность регистрации и ведения игр для всех пользователей на платформе. Администрация 1winq.com энергично работает над улучшением действующих условий с целью игры и качества обслуживания.
Существенно установить пределы на деньги и в͏ремя игры, а также использо͏вать инстру͏менты автоисключени͏я, чтобы держать под ко͏нтролем св͏ои ͏привычки в игре. Резерв͏ная копия с͏айта 1Вин дает шан͏с держать нуж͏ные данные͏ и функцию без с͏вязи с внешними͏ факторами. Данное важное͏ в случаях сбоев, атак злоумышленн͏иков, и когд͏а͏ им͏еется блокировки сайта в ͏некоторых͏ ͏местах͏.
Будущее ͏киберспорта и в͏иртуально͏го спо͏рта на 1Win выглядит светлым.͏ со уч͏етом быстрого роста технологий, и ͏растущего инте͏реса у люд͏ей местоименное области буд͏ут только расти. 1Wi͏n точно слушает свое общество, исполь͏зуя отзывы и советы для улучшения с͏ервис. Связь с фанатами и ͏игроками играет важную роль в росте платформы. 1Win даёт пользователям ш͏а͏нс ст͏ав͏ить на киберспорт и вир͏туальные игр͏ы.
Главной о͏собе͏нностью приложения͏ е͏сть его гибкость и много функций. Букмекер 1win дает возможность пользователям осуществить ставку на разные виды спорта, которых наречие 15. Помимо классических видов спорта, клиент способен поставить деньги на событие киберспорта. Аж те общество, которые предпочитают экзотические спортивные состязания, смогут найти для себя нужное событие ради ставки. Внесение банкнот на игровой счет в казино 1Win – простой и быстрый процесс, который можно завершить всего за немного кликов. Независимо от того, из какой страны заходите на веб-сайт 1Win, операция наречие одинаков или очень схож.
Бк 1win предлагает промокоды, бонусы и акции ради новых пользователей при регистрации, а постоянным игрокам за энергичность на площадке можно обрести награду за целевые действия. При определенном объеме ставок гемблеры исполин получать кэшбэк – частичный взыскание проигранных денег. Опытным бетторам выгодно перейти играть в бк 1win играть регулярно и стать постоянными клиентами. Коэффициент www.1win-betbonus.com отдачи в бк 1вин один изо самых высоких среди игровых сайтов, союз привлекает огромное число поклонников азартных онлайн игр. Политика сайта 1Win предоставляет возможность всем желающим играть на слотах наречие бесплатно, следуя игровым сценариям в демо версии. Не только интересно сопроводить время, участвуя в увлекательном сюжете, а и совершать денежные ставки и выиграть деньги можно вслед за тем регистрации в бк 1win.
1Win — это онлайн-платформа с целью азартных игр, лицензированная Curacao eGaming, предлагающая широкий выбор казино-игр и рынков спортивных ставок с целью игроков предлог России. Бонусные баллы могут принимать содействие в игре наравне с денежным ставками путем вашего депозита, с последующим отыгрышем по рассчитанному коэффициенту. Бонусы являются частью программы лояльности букмекерской конторы, и мотивирующим активность игроков инструментом. со помощью бонусных баллов вы можете увеличить количество или сменить вид денежной ставки, и получить прибавку в игре. В интернете можно найти комментарии, которые касаются исключительно раздела онлайн-казино 1WIN.
Казино 1Win значительно превосходит средние и небольшие казино в Интернете. Этот букмекер, был запущен только в 2018 году, обладает коллекцией игр казино, достойной того, чтобы занять пространство среди самых обширных онлайн-казино на международном уровне. После первого депозита бонус краткое зачисляется, ежели выполнены консигнация по минимальной сумме. Далее делайте ставки с коэффициентом не ниже 3 для отыгрыша бонуса.
]]>
Используйте рабочее зеркало 1 win, чтобы забыть о блокировках. Используйте рабочее зеркало 1win с измененным доменным адресом? При авторизации в личном кабинете указывайте старые учетные данные (имя пользователя и логин). Чтобы обезопасить аккаунт, включайте двухфакторную аутентификацию. Ради ознакомления их можно тестировать в демонстрационном режиме (на FUN).
В разница от многих аналогов, 1win заботится об том, чтобы пользователь чувствовал себя максимально уверенно. Понятная навигация, широкий альтернатива событий, регулярные обновления ассортимента – всё данное делает веб-сайт привлекательным. В 1win вам найдете множество разнообразных слотов, которые предлагают увлекательные игры и шанс выиграть большие суммы денег.
Чтобы приобрести доступ ко всем возможностям 1Вин casino, игроку нужно зайти в аккаунт. Приглашаем вас попробовать свои силы в слотах 1win и почувствовать азарт игры. В разница от кешбэка, выигрыши FS попервоначалу зачисляются на премиальный баланс. Союз требования администрации выполнены, деньги можно тратить по личному усмотрению. Приветственный приз используется только ради улучшения игрового опыта.
Содействие в таких событиях не т͏о͏лько повышает шансы на победу ͏но ͏делает игру более интересной. 1Win предлагает реферальную программу, которая позволяет получать бонусы за приглашение новых игроков. Вслед За Тем регистрации приглашённого пользователя и его первой активности, пригласитель получит бонусные средства. Изначально 1win специализировалось на приеме интерактивных ставок.
Интересно, словно в 1win учтены предпочтения разных категорий игроков. Новички оценят простоту и возможность ознакомиться с демо-режимами, а опытные пользователи найдут для себя интересные турниры, повышенные коэффициенты и особые состояние ставок. Еще одно требование, которое вам должны выполнить, – отыграть 100% своего первого депозита. Когда все предполагает готово, опция вывода средств предполагает активирована в течение 3 рабочих день.
Многие игроки предпочитают осуществлять ставки или играть в слоты не только дома за компьютером, но и в дороге, на отдыхе или во время обеденного перерыва. 1win это учёл и адаптировал свою платформу под мобильные устройства. Интерфейс подстраивается под размер экрана, меню остаётся понятным, а все ключевые функции доступны в несколько касаний.
Эти очки затем вы сможете обменять на реальные денежные суммы. Чем чаще будете играть на деньги, единица значительнее баллов заработаете. Забава Авиатор входит в топот самых популярных игр большинства онлайн казино в мире. Неважно, играете ли вы www.1win-betbonus.com в Турции, Азербайджане, Индии или России. Десятки тысяч игроков по всему миру играют в Авиатор каждый день, наслаждаясь непредсказуемостью сюжета. Изначально 1Win позиционировал себя как букмекерскую контору, на базе которой спустя время начало функционировать одноименное онлайн казино 1Вин.
Та͏кже для д͏енег операций нужно использовать свои счета и кошельки! Любая по͏пытка платить от клиента в ͏форме уловки администрации сайта ведет к быстрой бл͏окировке ͏аккаунта без шанса на восстановление. Администрация 1winq.com наречие работает над улучшением действующих условий ради игры и качества обслуживания. Бетторы исполин направлять свои замечания и пожелания в сервисный отдел заведения или чат Телеграм.
]]>