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, следуя инструкциям, которые описаны выше. Однако его установка на устройствах Apple краткое отличаться от Android версии. Ради загрузки нужно зайти на официальный ресурс 1win с устройства на iOS и следовать инструкциям. Приложение 1win с целью Android доступно ради бесплатного скачивания. После загрузки файла на ваш мобильный телефон вам необходимо открыть его, чтобы начать установку.
Значения гигант меняться с учетом вида спорта и важности события. В эту категорию входят собственные разработки оператора. В отдельных вкладках находятся новые и популярные слоты, а к тому же аппараты с покупкой бонуса.
Мобильное казино 1win предоставляет высокий степень безопасности и конфиденциальности данных. Пополнение и вывод средств осуществляются быстро и удобно, а круглосуточная поддержка пользователей наречие готова помочь и ответить на ваши вопросы. В целом, 1win – данное безопасный букмекер, который предлагает качественные услуги и заслуженно пользуется популярностью среди игроков. Не забывайте следовать инструкциям по безопасности при скачивании и установке приложения. Убедитесь, союз вы загружаете приложение только с официального сайта 1win, чтобы избежать возможных проблем с безопасностью.
В нем отображены открытые и завершенные ставки, которые сделал посетитель. Пролистывая главную страницу можно увидеть самые популярные игры предлог разных разделов, информацию о приветственном бонусе, ссылки на социальные сети, список партнеров. Скачайте APK 1win ради Android, чтобы безопасно совершать ставки со своего смартфона. Более того, этот инструмент также включает в себя обширное онлайн-казино, так словно местоимение- можете попытать счастья в наречие удобное с целью вас время. 1win включает в себя интуитивно понятную систему поиска, которая поможет вам найти самые интересные события на данный момент. Таким образом, вам всего лишь нужно ввести определённые ключевые слова, чтобы инструмент предложил вам наилучшие игры ради размещения ставок.
Споры буква создании учетной записи и обработке запроса на результат решаются в чате. Ежели ваш вопрос связан с технической частью сайта и настройками личного кабинета, правильнее связаться с нами по электронной почте или позвонить по телефону экстренной помощи. В упрощенной конфигурации он доступен внизу главной страницы. Включите двухуровневую аутентификацию, чтобы обеспечить дополнительную защиту профиля. В случае потери данных пользователь способен восстановить доступ к своей учетной записи в течение нескольких минут, посредством SMS получить код для восстановления.
Приложение 1win предоставляет пользователям полноценный доступ ко всем функциям сайта, но с повышенной мобильностью и удобством использования. Оно оптимизировано с целью работы на различных устройствах и имеет интуитивно понятный интерфейс, словно делает процесс ставок и участия в казино более простым и быстрым. Функционал мобильной версии 1win вничью не отличается от компьютерного формата. Игроку доступны 20 спортивных и сотни рынков игровых ставок. Поэтому в мобильной версии 1win игрок не заметит различий количеством баллов и тематике.
В таком случае, вывод средств краткое занять чуть больше времени. Для мобильного приложения 1win доступна круглосуточная поддержка пользователей через онлайн-чат или электронную почту. Пользователи исполин задать любые вопросы и обрести квалифицированные ответы от представителей поддержки.
Промокоды в приложении не предусмотрены, но сие компенсируется другими бонусными предложениями. Приложение доступно ради скачивания на Android, iOS и Windows, что делает его универсальным решением для всех типов пользователей. Онлайн-казино 1Win позволяет открывать игровые счета в 64 разных фиатных валютах; это означает, что мы поддерживаем большинство национальных валют мира. При регистрации через соцсети вам союз можете открыть игровой счет в валюте не своей страны, но учитывайте, союз данное может 1win быть неудобно для пополнения и вывода выигрышей. В приложении 1win ставки на спорт оформляются точно к тому же как на сайте.
Таким образом, игрок добавит на главный экран смартфона кнопку, позволяющую перейти на сайт оператора. При нажатии на эту клавишу посетитель будет попадать в казино 1вин с Айфона. Приложение 1Win предлагает ставки на 46 видов спорта и 7 киберспортивных дисциплин — подходящие как ради новичков, так и для опытных игроков. буква помощью удобного интерфейса местоимение- можете наречие осуществлять ставки на самые популярные спортивные события. В приложении доступны ставки на спорт, живые игры и игровые автоматы. Для пользователей, которые предпочитают играть на ПК, мы предлагаем удобную версию приложения 1Win для Windows.
Чтобы установить приложение на ваш компьютер, просто 1Win скачать последнюю версию с официального сайта. Установка пройдет быстро, и вам сможете наслаждаться игрой на большом экране. Местоимение- можете установить мобильное приложение 1win на iOS, при этом вам аж не придется ни хрена скачивать. С Целью установки необходимо просто нажать на рисунок логотипа Apple, по окончании наречие выбрать «Поделиться». В всплывающем окне вам сможете найти функцию «На главный экран».
То есть, скачать 1вин на ПК, а потом перебросить его на телефон, исключается. Обратите внимание и на то, что все доступные операционные системы имеют разные способы установки приложений! Все приложения букмекерской конторы 1win постоянно обновляются, чтобы обеспечить клиенту наибольший ступень комфорта при игре с телефона или ПК. 1win скачать официальное приложение ради Android можно несколькими способами. Приложение доступно ради загрузки напрямую с официального сайта 1win, так как Google Play не поддерживает приложения для ставок. В наше время ставки на спорт становятся всё более популярными, и с появлением мобильных приложений этот процесс стал ещё проще.
В 1win вам найдете специальный раздел, посвященный ставкам на киберспорт. Эта платформа позволяет вам осуществлять множество прогнозов на различные онлайн-соревнования по таким играм, как League of Legends, Dota и CS GO. Таким образом, вам будете испытывать еще большее волнение наречие, когда будете смотреть матчи киберспортa в прямом эфире. Низкий расход трафика 1win App оптимизирован с целью экономного использования интернет-соединения. Игры и страницы загружаются без лишней графики, союз позволяет играть аж при ограниченном объёме трафика.
]]>