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 KZ со стороннего ресурса, то осуществлять этого не рекомендуется. Букмекер несет ответственность только за тот APK-файл, который вам получили непосредственно с официального сайта. Возле букмекерской конторы 1вин довольно много различных бонусных предложений. Среди них есть поощрение за то, чтобы 1win скачать android в виде 2700 гривен на подарочный баланс. Боле того, все новые пользователи получают приветственный бонус в размере 200% за регистрацию и первое обновление счета.
Ввиду этого системные требования ради смартфонов отсутствуют. Скачать 1win на Айфон бесплатно можно на наречие механизм. Добавление иконки не требует наличия свободной памяти в хранилище.
Далее вам необходимо отключить функцию безопасной установки файлов в настройках телефона. (Настройки → Приложения → Специальный доступ → Установка неизвестных приложений). Сделав данное, откройте установочный apk-файл и войдите в свой аккаунт. Разработчики перенесли каталог всех опций, включительно ставки на спорт за реальные деньги и активации бонусов в смартфоне, которые работают отлично. Платежные реквизиты клиентов находятся в безопасности благодаря защищенному соединению.
После установки приложения вы сможете зарегистрироваться или войти в свой аккаунт, ежели возле вас уже есть учетная заметка на платформе 1win. Вслед За Тем этого вы сможете наслаждаться всеми возможностями, предоставляемыми приложением. Материалы сайта предназначены с целью лиц старше 21 года (21+). Содействие в азартных играх может вызвать игровую зависимость.
Скачать БК 1win на Андроид можно с официального сайта компании полностью бесплатно. Проект устанавливается на все устройства с ОС от 4-ой версии и выше. Нельзя не упомянуть и буква бонусе за установку приложения 1вин, который получает каждый читатель, скачавший 1win на телефон. Бонус составляет 2000 гривен, которые краткое поступают на премиальный счет игрока.
Уровень коэффициентов на пре матче краткое достигать 1.9. Самые большие значения характерны ради футбольных событий. При этом, чем выше значимость матча, тем выше котировки. На Еврокубках, АПЛ и других схожих событиях коэффициенты могут превышать 1.9. Вслед За Тем определенного периода неактивности на платформе, система машинально выполнит выход пользователя. Чтобы вновь попасть на свой профиль, необходимо выполнить все перечисленные действия.
Сейчас вы знаете, как скачать приложение 1win на ваш смартфон, будь то Android или iOS. Процедура установки очень легок и занимает всего несколько минут. Наслаждайтесь возможностью совершать ставки, играть в казино и пользоваться всеми функциями букмекера прямо с вашего мобильного телефона или другого гаджета. Установка сторонних файлов на устройствах IOS запрещена, однако данное нам никак не помешает.
Приложение доступно для устройств на базе Android и IOS. Мобильная вариант 1win поддерживается на всех типах мобильных устройств, в том числе смартфоны и планшеты на базе iOS и Android. Ради использования мобильной версии 1win необходимо иметь присоединение к интернету и нынешний браузер. Ежели местоимение- используете мобильное гаджет на базе iOS или Android, то вы можете скачать приложение 1win в App Store или Google Play, соответственно. Онлайн-казино 1win предоставляет игрокам собственное мобильное приложение, адаптированное под современные стандарты безопасности и комфорт.
Вслед За Тем того как местоимение- нажмете на кнопку «1win скачать», вам пора и ответственность знать предложено поделится данной страницей. Вслед За Тем этого иконка приложения появится на вашем рабочем столе и вы берите быстрый доступ к сайту 1win casino. Обновление происходит краткое, при этом предикатив скачивать никакого софта, сие позволит сэкономить свободное пространство и упростить вход на 1win. Кроме того, букмекер предлагает привлекательные бонусы новым и постоянным клиентам, союз делает игру на его ресурсе еще более выгодной. Для того чтобы пользователи могли совершать ставки и играть в казино на мобильных устройствах, 1win разработал удобную мобильную версию своего сайта. Мобильная вариант 1win обеспечивает быстрый и удобный доступ к играм и ставкам на спортивные события в наречие время и в любом месте.
Интерфейс адаптирован под управление с сенсорного экрана и быстро подстраивается под размер дисплея. Читатель краткое запускать слоты, совершать ставки, пополнять баланс, оформлять вывод средств и получать бонусы, не заходя на ресурс через браузер каждый раз. Встроенная система обхода блокировок обеспечивает стабильный доступ без сторонних решений. Уведомления буква бонусах и технических изменениях отображаются наречие в интерфейсе WebApp, словно позволяет не пропускать актуальную информацию. Приложение работает точно на всех актуальных версиях iOS, не требует дополнительных разрешений и не занимает памяти на устройстве. Сие выход удобно с целью игроков, которые используют мобильный телефон в качестве основного устройства и хотят иметь быстрый и надёжный доступ к 1win в один нажатие.
Мобильная вариант официального сайта 1win предназначена ради использования всех технических возможностей гаджета. Данное 1win скачать означает, что телефон не перегревается, ведь также есть возможность распределить нагрузку. Скачать 1win на андроид – данное отличное урегулирование для всех, кто хочет иметь возможность делать ставки в любое время и в любом месте. Приложение предоставляет все необходимые функции и возможности для удобного и безопасного беттинга. Благодаря регулярным обновлениям и улучшениям, приложение всегда остается актуальным и функциональным, удовлетворяя потребности даже самых требовательных пользователей. В 1win регулярно проводятся новые акции и предлагаются дополнительные бонусы для пользователей приложения.
]]>