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);
Чуть реже проводятся специальные акции, в которых разыгрываются ценные призы. Читатели сайта CasBet могут поделиться своим мнением об Фанспорте в разделе «Комментарии». При регистрации будущему клиенту предлагается на альтернатива более 130 валют. Игроки предлог Украины чаще всего останавливаются на гривне. Ассортимент маркетов – от стандартных основных исходов, фор, тоталов нота fansbet odds индивидуальных и нишевых. Опция «поиск по рынкам» не позволит потеряться при выборе.
Для Андроид нужно загрузить установочный файл формата апк на свой телефон. Скачать его можно в разделе «Приложения ради смартфонов», по окончании этого нужно запустить загруженный файл, далее проект установится краткое. Впечатляет и глубина росписи – игроки могут поставить не только на победу команд, но и на многочисленные форы, тоталы и статистику. И все данное относится и к нишевым чемпионатам, в то время как другие БК на подобные события дают максимум результат и основные тоталы и форы.
Придерживайтесь правил (принципов) ответственной игры. Букмекерская контора ФанСпорт создает идеальные состояние с целью игры. Линия по каждой спортивной дисциплине заключает все актуальные турниры.
Этим обусловлена и широкая партнёрская программа, которую букмекер предлагает практически любому желающему. С Целью того, чтобы стать партнёром FanSport, достаточно заполнить форму на сайте и дождаться ответа компании. Партнёр Fan Sport получает доход с каждого приведённого им игрока. Более подробно буква партнёрской программе – на сайте букмекера (вход – через личный кабинет). Вариант FanSport с целью мобильных устройств доступна без дополнительного скачивания и установки.
Этот шаг откроет полноценный спектр возможностей Fan Sport. Букмекер принимает клиентов со всего СНГ, так союз поехали – разберём процедура регистрации в полном объёме. Чтобы такому молодому букмекеру, как Fansport, привлекать к себе клиентов, нужно давать не просто хорошие условия с целью ставок. Требуется делать состояние действительно привлекательными.
На данной странице доступны ставки на живые игры. Букмекер предлагает заключить спор на мини-лотереи, карточные игры, кено, нарды в режиме лайв-трансляции. Кроме ординаров, букмекер принимает и ставки формата экспресс. Чтобы собрать экспресс, достаточно открыть линию (в прематч или лайв) и кликнуть по интересующим коэффициентам.
Букмекерская компания ФанСпорт образовалась в Украине в 2016 году. Девчонка функционирует как в формате наземных пунктов приема ставок (сейчас их вокруг 50 по всей стране), так и в режиме онлайн. Для того, чтобы легально принимать ставки в сети, контора заполучила лицензию от правительства Кюрасао. На сегодняшний день БК ФанСпорт еще не краткое считаться лучшей в регионе. Но упорный труд представителей конторы наверняка сможет вывести ее на уровень выше. Несмотря на международный статус, игроки ряда стран не могут воспользоваться функционалом БК Фанспорт.
Регистрация на FanSport занимает всего ряд минут. В ее ходе необходимо указать личные данные ради дальнейшей верификации счета. Только после этого пора и ответственность знать доступен вход в личный кабинет. Пополнять баланс игрового аккаунта здесь можно лишь в украинских гривнах- такие же возможности предоставляет и 1xbet официальный веб-сайт рабочий.
Ради печатных изданий указание Sport.ua обязательно. Использование фотоматериалов сайта без письменного разрешения редакции запрещено. Редакция проекта способен не разделять мнение авторов и не вешает ответственности за авторские материалы. Ради того, чтобы приобрести приветственный награда, нужно заполнить полную информацию об игроке в личном кабинете — данное представляет собой обязательным условием.
Для Андроид нужно загрузить установочный файл формата апк на свой телефон.Женщина позволяет игрокам всегда быть в курсе всех спортивных событий. Ради этого необходимо иметь под рукой современное портативное гаджет, а также стабильный доступ к интернету. Отзывы буква БК Fan sport преимущественно положительные. Кроме спортивных дисциплин, бетторам предлагается размещение ставок на события в области политики, культуры и шоу-бизнеса. Киберспорт и виртуальный спорт выделены в отдельные блоки. Все материалы сайта доступны по лицензии Creative Commons Attribution 4.0 International.
А кое-кто предлог них аж доступны к просмотру в формате видео-трансляций. Раздел казино разбит букмекером на несколько независимых подразделов. К каждому предлог них трансформация расположен в верхнем горизонтальном меню. Подбор бонусов есть, но всё-таки в ограниченном формате. Огромный недочёт – полное отсутствие программы лояльности. Кстати, чтобы не упустить мгновение, Fan Sport предлагает оставить с целью связи E-mail, союз номер телефона.
Регистрации достаточно с целью доступа ко всем функциям платформы. Однако в отдельных случаях букмекер краткое запросить дополнительную проверку – идентификацию к данному слову пока нет синонимов…. Компания оставляет за собою право уточнить предоставленные данные (паспорт, прописка, регистрация) и/или организовать видеоконференцию. Мобильная версия сайта FanSport представляет собой отличной альтернативой ее декстопному аналогу.
Ради удобства пользователей FanSport собрал немалую статистическую базу. Здесь содержатся исходы последних матчей, статистика личных встреч, турнирные таблицы чемпионатов предлог разных видов спорта. Объём велик, так что поиск по названию приходится весьма кстати. Трансформация на мобильный ресурс возможен и с основного ресурса.
Ради полного счастья конторе капля в море только качественной раскрутки. А пока словно БК ФанСпорт продолжает постепенно зарабатывать себя хорошую репутацию и работать над ошибками. В этом плане контора значительно уступает своим европейским коллегам. Да и на постсоветском пространстве найдется бессчетно букмекеров, в которых котировки значительно выше, чем на ФанСпорт. Официальный веб-сайт букмекера выполнен в зеленых, черных и белых тонах. Главное то, союз здесь очень удобная навигация, с которой справится даже новичок.
Беттеры исполин воспользоваться частичной или полной страховкой спор. Росписи Фанспорт поражает глубиной и разнообразием. На матч-открытие Евро 2020 доступны порядка 1500 ставочных опций, на поединок второго японского дивизиона – более 1250.
Помимо этого, доступна сортировка маркетов в горизонтальном меню матча и в выпадающем списке. Такие опции, как скретч-карты, лотереи, биржа криптовалют, игры представлены в разделе «Дополнительно». Материалы сайта предназначены с целью лиц старее 21 года (21+). Содействие в азартных играх может вызвать игровую взаимозависимость.
Союз был выбран способ регистрации через электронную почту, то анкету можно считать заполненной. Это же касается и коэффициентов – букмекер Fansport дает как можно больше возможные коэффициенты на спортивные события. Например, на прошедший заключительный аккорд Мера Америка маржа составляла не более 55 — это очень мало, многие крупные БК давали более низкие коэффициенты.
]]>