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вин, помимо уборная использования, представляет собой обеспечение постоянного прямого доступа для игроков к этой букмекерской конторе. Если на вашем смартфоне или компьютере имеется соответствующий софт, то вам шалишь необходимости искать рабочее зеркало в поисковиках для обхода блокировок. Наречие отметить, союз сама программа разработана следовательно, словно не требует последних моделей телефонов или мощного железа с целью работы. Учитывая то, что всего приложение занимает 30 единица дискового пространства, это отличный погашение.
Вам можете получить от 7 до 15 процентов к выигрышу на ставках экспресс. В купоне должно быть не менее пяти событий с коэффициентом выше 1. Новые промокоды распространяют официальный ресурс , зеркало и партнерские запас.
1win – безопасный и безопасный букмекер, который предлагает своим клиентам широкий альтернатива спортивных событий и ставок. Компания имеет лицензию на оказание услуг букмекерской деятельности, что обязуется безопасность и защиту интересов игроков. Букмекерская компания 1win предлагает своим клиентам широкий альтернатива слотов онлайн, которые являются одним изо где играть в покер в россии самых популярных видов казино-игр. В этой статье мы рассмотрим основные преимущества и особенности слотов 1win. В целом, игровые автоматы 1win предлагают увлекательные игры, привлекательные бонусы и акции, удобный интерфейс и мобильную версию, быстрые выплаты и качественную поддержку клиентов.
Все игровые автоматы, представленные на официальном сайте 1Вин – легальные азартные разработки. Каждый онлайн слот оснащен ГСЧ и имеет высочайший уровень отдачи. Он соответствует показателям RTP, заявленным провайдерами.
Настоящие зеркала 1Win используют ваш имеющийся аккаунт. На странице должен быть логотип 1Win, раздел с лицензией Curacao и кнопка «Скачать приложение». Самый распространенный вариант – данное желание новичка попробовать свои силы в ставках на спорт. Реальные деньги ставить наречие, а виртуальные – идеальный вариант, чтобы почувствовать весь этот процедура и союз азарт. Кроме Того есть те, кто просто хочет проверить свою интуицию – в таком случае виртуальный счет представляет собой хорошим помощником. Следить за появлением новых акций можно на официальном сайте.
Например, внося вклад, вы получаете начисление 100 или 200 процентов от его суммы. Детальнее с бонусной программой можно ознакомиться на странице казино. Это рекомендация важно как с целью любителей ставок на спорт, так и ради игроков в игровые автоматы.
Здесь сочетаются спортивные ставки, богатый подбор игровых развлечений, гибкая бонусная программа и продуманный интерфейс. Шалишь нужды искать что-то ещё, союз есть 1win, который постоянно совершенствуется, ориентируясь на потребности пользователей. Особенно достаточно отметить приветственный вознаграждение – отличная возможность начать свой путь с дополнительными средствами. Данное своеобразная поддержка от 1win ради тех, кто только начинает своё ознакомление с платформой. Кроме того, игроки гигант рассчитывать на специальные акции, приуроченные к важным спортивным событиям, праздникам или релизам новых слотов. С Целью того чтобы испытать все возможности 1win, достаточно пройти несложную процедуру регистрации.
Как только вы выберете матч или спортивное событие, все, союз вам нужно сделать, данное выбрать сумму, подтвердить вашу ставку и затем надеяться на удачу. Клеймящий по отзывам игроков, набор поощрений в казино 1 Win на сегодня вполне может конкурировать с новыми азартными клубами. Есть бонусы и для клиентов online casino, и ради беттеров, делающих ставки на спорт.
]]>
Оно предоставляет тот же функционал, словно и мобильная разновидность, с удобным интерфейсом и высокой производительностью. Союз наречие вас гаджет на iOS, операция загрузки аналогичен. Просто 1Win скачать iOS, следуя инструкциям на сайте, и через немного минут вы сможете наслаждаться всеми функциями приложения. Букмекерская контора 1win известна с 2017 года, вход на сайт 1win возможен через зеркало или актуальный местоположение в официальном телеграм-канале. Там вам узнаете больше о бонусах, новых играх, сможете обрести промокод 1win (ваучер) с целью быстрого пополнения игрового счета.
Клиентам предложены разные категории аппаратов, ставки на спорт, покер-рум. Оператор принимает игроков изо России и позволяет им открывать счет в рублях. Казино имеет хорошую репутацию и честно начисляет клиентам деньги. Установка мобильного приложения от букмекерской конторы 1Win может 1win сайт сопровождаться различными техническими проблемами. Ниже представлены наиболее распространенные сложности с установкой программы на устройства Android и iOS и способы их решения. При входе через браузер букмекерская контора не используется на 100%.
Использование приложения позволяет отказаться от VPN или поиска рабочего зеркала, так как не потребуется их использование для обхода блокировки основного ресурса. Официальное приложение 1win — это инструмент с целью удобной и безопасной игры с мобильного устройства. Оно позволяет приобрести доступ к казино, спортивным ставкам, live-играм и личному кабинету без использования браузера или зеркал. Ниже перечислены ключевые преимущества использования мобильного приложения 1win.
Следовательно загрузка доступна только через официальный веб-сайт 1win. Поскольку приложение с целью ставок скачивается не изо Google Play, обновление тоже происходит не посредством этого маркета. Игрок краткое удалить клиент, а по окончании скачать APK 1win повторно. В приложении официального сайта 1вин доступны все популярные платежные способы.
За установку мобильного приложения 1Вин предусмотрен бонус в размере рублей. В дальнейшем он получает +5% к выигрышу по ставкам с коэффициентом от 3,00 или процент от 1 до 20 на ежедневную сумму проигрыша от рублей. Чем больше проигрыш, единица выше процент перечисления денег с бонусного на основной счет.
1win — это букмекерская контора, которая быстро завоевала распространенность благодаря широкому выбору спортивных событий, выгодным коэффициентам и удобству использования. Однако главным преимуществом платформы является 1win мобильное приложение, которое позволяет совершать ставки где угодно и когда угодно. Скачать приложение 1Вин на мобильный телефон можно с мобильной версии основного сайта. За установку программы пользователь получает на премиальный счет рублей.
Как использовать бонусы 1win, вам можете узнать по ссылке. Установить мобильное приложение 1win на Андроид — не самая простая цель. Единица не менее, сие займет не более минуты вашего времени. Вслед За Тем того как вы нажали на кнопку «1вин скачать», краткое начнется загрузка.
С Целью скачивания достаточно открыть веб-сайт 1win с мобильного браузера, найти раздел с приложением и нажать кнопку загрузки. Передо установкой может потребоваться разрешить инсталляцию программ изо сторонних источников в настройках телефона. Союз файл загружен, его нужно открыть, подтвердить установку и дождаться окончания процесса. Приложение появится на экране смартфона и пора и честь знать готово к использованию. Приложение машинально подключается к рабочему серверу и позволяет обходить блокировки без дополнительных настроек.
Скачать официальное приложение 1win на устройства с iOS можно напрямую через мобильный браузер, поскольку программа не размещена в App Store. Данное связано с внутренними ограничениями платформы Apple по размещению азартного контента. С Целью установки необходимо открыть ресурс 1Вин на iPhone или iPad, перейти в раздел с мобильным приложением и нажать на кнопку установки. После подтверждения на экране появится ярлык, который ведёт к версии казино, полностью адаптированной под iOS-устройства. Подобный формат работы называется WebApp — он позволяет получить доступ ко всем функциям платформы без загрузки файла или установки через магазин приложений. Приложение открывается в отдельном окне и сохраняет вход в личный кабинет, историю операций, доступ к игровым автоматам и разделу ставок.
]]>