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. Зеркало 1вин – полная копия официального сайта 1Win, позволяющая игрокам избежать любых проблем, таких как блокировки. Среди представленного на официальном сайте ассортимента развлечений лицензионные игровые автоматы занимают первенство.
Большие суммы требуют проверки со стороны администрации игрового заведения. Внести депозит местоимение- сможете во вкладке «Пополнить», расположенной в верхней части сайта. Выберите подходящий вам платежный инструмент, укажите сумму пополнения, оплатите вклад по реквизитам с карты или электронного кошелька. Кнопочка «Вход» традиционно расположена в правом верхнем углу сайта 1 Вин казино. С Целью авторизации в аккаунте нажмите на нее, укажите свой пароль и логин, иначе авторизуйтесь через соцсети.
По этому рекомендуем установить приложение на Андроид или Айфон с целью более быстрого и удобного пользование казино. Многие пользователи предпочитают крутить барабаны слотов и делать ставки на спорт со своих телефонов. Мобильная разновидность 1Win пора и честь знать краткое работать на iOS и на Android, вы просто сможете насладиться игрой как со смартфона, так и с планшета. Mobile casino 1 Вин в действительности не отличается от оригинальной, неужто союз главное меню не выведено на ведущий экран, а спрятано. Найти его вам сможете в правом верхнем углу офф сайта казино 1 Win.
Среди них настольные игры, такие как покер, рулетка, блэкджек, баккара, а к тому же онлайн-игры, такие как слоты, видеопокер, лотереи, бинго и кено. 1Win предлагает отличное разнообразие поставщиков программного обеспечения, среди которых NetEnt, Pragmatic Play и Microgaming. П͏рогра͏мма one win͏ дает юзер͏у много разных вариантов ͏ставок, включая легкие ставки, экспресс-ставки и системные.
Условия по вейджеру пользователям портала нужно выполнить образовать нескольких недель с момента получения приветственного бонуса. Оригинальное и работающее зеркало 1Win – сие один изо самых эффективных способов обхода блокировки. Активное и доступное зеркало является точную копию главного официального сайта букмекера, которое имеет только другой IP-адрес. Основное на сегодня рабочее зеркало 1Вин казино вместе с главным веб-ресурсом подключено к одной базе данных, которая сохраняется на внешнем носителе. Именно благодаря этому гэмблеру не требуется бис создавать профиль вместе с игровым счетом.
Затем возле посетителей игрового портала появляется возможность зайти в аккаунт и начать играть в выбранные игровые автоматы онлайн или же осуществлять ставки. Plinko от BGaming – популярный игровой калашников, пользующийся спросом среди посетителей официального сайта 1Вин casino. Клиентам виртуальной игровой площадки предлагается совершать ставки на восьми активных линиях. К Данному Слову Пока Нет Синонимов… особенность слота Plinko в том, словно игрок собственнолично способен изменять здесь уровень дисперсии – от низкой к высокой. Особенно достаточно отметить приветственный награда – отличная возможность начать свой путь с дополнительными средствами. Сие своеобразная поддержка от 1win ради тех, кто только начинает своё ознакомление с платформой.
Доступна на разных платформах – стационарном компьютере, ноутбуке, смартфоне. Необходимо выполнить определенные требования и состояние, указанные на официальном сайте казино 1вин. С Целью получения некоторых бонусов может потребоваться промокод, который можно обрести на сайте или на сайтах-партнерах. Найдите всю необходимую информацию на сайте 1Win и не упустите возможность воспользоваться их замечательными бонусами и акциями.
По собственному опыту можем сказать, что 1win slots – это один предлог самых продуманных и удобных сайтов с целью пользователей, все сделано с целью людей. Словно касается каких союз недостатков казино один вин, то наречие их или тяжело найти или же их вовсе шалишь, связано это с единица словно данний сервис еще молодой. Вход с компьютера иначе удобен как игра на телефоне или планшете.
1Win TV выделяется среди других сервисов своим прос͏тым интерфейсом, отличным качеством картинки͏ и звука, а т͏акже возможно͏стью подстраиваться под ͏лич͏ные вкусы пользователя. Ещё сервис дает специ͏альные автомотошоу и сериалы, до͏ступные ͏только ͏на 1Вин TV. Кэшб͏ек — данное вид награды, при котором игрок͏ам во͏звращаю͏т часть пот͏ерянных ͏денег.
Помните словно бонусы — это не только лишние ден͏ьги с целью 1win ставок но и шанс улучшить свои воз͏мо͏жности на вы͏игрыш. Буд͏те внимательны, стройте свои шаги и радуйтес͏ь каждому моменту игры на 1Win. Чт͏обы увел͏ичит͏ь пользу от ͏бонусов на One Win, достаточно придумать͏ план их исп͏ользования.
Новые участник͏и ͏в 1Вин могут взять п͏одар͏ок, который часто включает увеличение первого͏ депозита. ͏Эта проект даёт хороши͏й старт и у͏ве͏личивает шансы на выигр͏ыш. Чтобы обрести награда, нужно зарег͏и͏стрироваться и пополнить счёт, следуя условиям.
Время, необходимое ради получения банкнот, может варьироваться в зависимости от выбранного вами способа оплаты. В некоторых случаях вывод средств осуществляется мгновенно, в других – краткое занять ряд часов или аж дни. Вот шаги, которые необходимо выполнить, чтобы вывести средства вслед за тем того, как эта опция пора и совесть знать доступна для вашего аккаунта. Минимальная сумма депозита составляет 1 евро или эквивалентная сумма в другой валюте. 1Win использует извещение по SMS для подтверждения платежа, поскольку взнос зачисляется на ваш счет образовать 1-3 минут.
Шалишь, такая возможность не имеется в связи с единица, словно для игровых автоматов не предусмотрены демо-версии. Ради обхода блокировки лучше всего использовать актуальное зеркало 1Win casino. К Тому Же в к данному слову пока нет синонимов… целях краткое использоваться мобильное приложение, VPN, TOR-браузер или анонимайзеры. Казино 1Вин рекомендуется скачивать только с официального сайта развлекательного заведения. Это позволит загрузить качественную программу без вредоносного ПО, которое может навредить работе мобильного устройства.
Союз, союз наречие вас возникли проблемы с входом, местоимение- можете обрести доступ через ресурс зеркало 1win. Чтобы перейти в раздел ставок на спорт, нажмите на к данному слову пока нет синонимов… меню Спорт или Live, любой изо них приведет вас на страницу с интересными ставками. Там вы можете выбрать спортивное событие, на которое хотите сделать ставку.
]]>