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 на iPhone потребуется браузер Safari. С Целью загрузки приложения на смартфон необходимо выбрать раздел «Приложение» в меню или «Приложение для iOS» на главной странице мобильной версии. Скачать приложение 1Win на телефон можно в мобильной версии сайта.
Визуальных отличий в действительности нет, но скрытые элементы удалены или оптимизированы под Android и iOS. 1win KZ скачать можно не только ради комфорт, но и получения максимально упрощенного интерфейса букмекерского раздела. Приложение 1win доступно для бесплатного скачивания на официальном сайте. Вам предикатив платить за его использование или установку, и операция установки достаточно легок и безопасен. Ежели наречие вас возникли трудности с загрузкой или установкой приложения, на сайте есть подробные инструкции и раздел поддержки пользователей.
Поскольку программное обеспечение является официальным и имеет цифровые подписи, пользователю не требуется вручную разрешать системе устанавливать файлы. Нижняя часть приложения имеет информационные и правовые сборки информации. Кроме этого, внизу главной страницы ПО есть переходы к наиболее важным категориям – Казино, Спорт и другие. По Окончании авторизации необходимо в верхнем правом углу окна программы нажать кнопку с личным никнеймом пользователя. Необходимо выбрать платежную систему, указать сумму вывода, ввести реквизиты оплаты и подтвердить операцию.
Ради резидентов РФ главным плюсом значится возможность открыть счёт в российских рублях (RUB), без дополнительных комиссий на пополнение и вывод. Это особенно удобно при использовании местных платёжных систем. Минимальная сумма транзакции меняется с учетом способа внесения депозита. В ознакомительном формате невозможно выиграть реальные деньги.
Сие гарантия, союз пользователи будут использовать действительно удобным и надежным приложением. Скачать 1win с официального сайта позволяет быстро и без лишних проблем. Мобильные приложения 1Win – данное полноценное онлайн-казино в вашем телефоне, позволяющее значительнее никогда не искать наземные заведения и не зависеть от наличия ПК! Дизайн и структура навигации являются копией основного сайта. ПО выполнено в традиционных цветовых решениях, характерных ради компании. Основная часть интерфейса приложения заполнена игровыми приложениями оператора.
Ради этого нужно просто скачать 1win на андроид, указать свою страну и выбрать валюту ставок. Система автоматически предложит логин и пароль, которые нужно использовать ради авторизации. При этом протокол безопасности операционной системы захочет, чтобы игрок сознательно подтвердил собственную готовность качать программы не предлог официального магазина приложений. По Окончании этого загрузка продолжится, а уже после установки программы вы можете снова запретить подобные скачивания, если считаете, союз сие повысит безопасность устройства.
Нажав на нее, 1вин мобильное приложение появится на экране вашего рабочего стола и вы сможете им использовать. Установочный apk-файл полностью безопасен для 1win смартфона на Андроид, вслед за тем инсталляции приложения на телефон его можно удалить из загрузок. Напомним, союз в официальном магазине Google Play только через мой труп никаких версий букмекерской конторы 1вин, это мошенники! Используйте зеркало 1win, чтобы скачивать реальную версию БК на смартфон. С Целью того чтобы обрести от 1win вознаграждение, необходимо загрузить его на свое устройство. Сие не обязательно смартфон — устройством краткое быть и персональный компьютер на Windows.
Возле букмекерской конторы 1Win шалишь полноценного приложения для яблочного гаджета. Описанный выше алгоритм позволяет формировать на рабочем экране иконку для быстрого запуска мобильной версии сайта. Ради установки приложения 1win на Android необходимо скачать APK-файл с официального сайта. Затем в настройках устройства разрешите установку приложений из неизвестных источников и запустите загруженный файл для установки. Чтобы начать использовать приложение 1Win, просто скачайте его на ваше механизм . Ради пользователей достаточно 1Win скачать Android с официального сайта, чтобы установить приложение и начать делать ставки.
]]>
Банковская карта имеет разные номиналы, самая минимальная сумма составляет 600 тенге. Ради любителей игровых автоматов предусмотрена наградная опция «Кешбек», при которой возвращается часть дензнак, потраченных на игровые автоматы. В зависимости от уровня счета и общей суммы вкладов проценты варьируются от 5 до самого 1win скачать 25.
1Win, как одна изо глав͏ных площадок, предлагает юзерам разные͏ и н͏ад͏ежные способы положить и взять деньги. На͏ 1Win есть много р͏азных видов кибер͏спорта, в том числе известные игры как Dota 2, CS2, Valorant и League of Legends. ͏Киберспорт на 1Win о͏тличается сво͏им ритмом͏, и дает зрителя͏м шанс см͏отрет͏ь ин͏тересные͏ соревнования в реальное время. Оди͏н вин к тому же ͏предлагает подарки за последующие пополнения счёта.
Ежели беттор включает в квазиденьги 5 и более событий с котировками от 1,3, то в случае выигрыша получает бонус нота 15%. Вы сможете воспользоваться уже имеющейся учетной записью. Так официальный ресурс обеспечивает бесперебойный доступ к платформе, позволяя пользователям делать ставки союз в тот мгновение, когда он не доступен.
С Целью увеличения выигрыша бк 1win работает проект лояльности, выигрыш можно увеличивать наречие бонусов с последующим отыгрышем, и промокодов. Программа предлагает дополнительные бонусы при пополнении счета. Данное позволяет увеличить баланс и получить значительнее возможностей ради ставок и игр.
Союз азарт часто связан с удачей, достаточно помнить и о рациональном подходе. Если вы хотите добиться успеха на 1win, есть смысл использовать простые, но эффективные философия. Не вкладывайте значительнее средств, чем готовы потерять, не превращайте ставки или игру в казино в долг. Относитесь к процессу как к приятному занятие, а не к источнику guaranteed дохода.
Букмекер разработал целую систему ставок, которые доступны как с приложения, так и на сайте. Крупный выбор вариантов при очень удобен, беттеры исполин существенно увеличить свои шансы, комбинируя разные варианты исходов. В приложении 1win ставки на спорт оформляются точно кроме того как на сайте.
Эти бонусы могут быть как фиксированными, так и процентными, и созданы ради поощрения постоянных клиентов. Наречие ознаком͏иться с условиями полу͏чения к данному слову пока нет синонимов… ͏бонусов, так как они отличаются от приветственных. Мобильная вариант 1Win͏ даст возможность играть в любимые игры где угодно и коли угодно.
Добро пожаловать в онлайн казино и букмекерскую контору 1Win! На нашем игровом портале вы найдете широкий подбор популярных игр казино, подходящих ради игроков с любым уровнем опыта и банкролла. Наш важнейший приоритет — обеспечить вам удовольствие и развлечение в безопасной и ответственной игровой среде. Благодаря наличию лицензии и использованию надежного игрового софта мы заслужили полное доверие наших пользователей. 1win вход — данное процедура авторизации на официальном сайте 1вин, позволяющий зарегистрированным пользователям обрести доступ к своему личному кабинету.
Сублицензия, выданная 1Win, позволяет ему функционировать во многих странах мира, включая Латинскую Америку. Ставки в международном казино, таком как 1Win, являются законными и безопасными. Приложение очень похоже на сайт в плане удобной навигации и предлагает те же возможности. Время, необходимое ради получения банкнот, может варьироваться в зависимости от выбранного вами способа оплаты. В некоторых случаях вывод средств осуществляется мгновенно, в других – может занять ряд часов или даже день.
Все вкладки и разделы удобно расположены на главной странице. При помощи функциональной системы навигации перемещаться между ними очень легко и просто. Администрация казино 1Вин систематизировала всю информацию на сайте по отдельным разделам.
О͏т маленького͏ проекта до большого игрока на рынке стриминг сервисов, 1Win TV прошла длинный путь получая всё большую известность ср͏еди ͏зрителей. Пользователи часто отмечают высокое качество контента, удобство интерфейса и возможность доступа к эксклюзивным материалам. Союз местоимение- выбираете контент на 1win, смотрит͏е на описания, трейлеры и о͏тзывы от других людей.͏ Это поможет ͏вам сде͏лать ͏выбор который ͏подходит ваши вкус͏ы и пред͏почт͏ения. Видеопокер в 1Win — данное хорошая возможность с целью людей, кто хочет сочетать част͏ь удачи и мысленного ͏плана͏. Из͏вестные ва͏риан͏ты ест͏ь Jacks or Better, Deuces Wild͏ и Joker Poker.
Если ваша тариф будет успешной, выигрыш окажется на вашем счету и вам сможете использовать его с целью дальнейших ставок или вывести со счета. Виртуальный спорт — данное онлайн-симуляторы для спортивных ставок, в которых можно поставить на победу одной предлог команд в спортивном матче. То есть виртуальный спорт данное своеобразная комбинация ставок на спорт и онлайн-казино, в которых результат матча определяется генератором случайных чисел. Регистрируйтесь с промокодом IN1WINBET и получайте отличные бонусы с целью новых игроков. В 1win вам найдете множество разнообразных слотов, которые предлагают увлекательные игры и шанс выиграть большие суммы банкнот. Оперативные выплаты выигрышей – один из ключевых аспектов успеха 1win.
]]>