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вин предлагает пользователям широкий спектр возможностей ради проведения досуга и заработка. Ван вин завоевал распространенность среди игроков благодаря удобному интерфейсу, наличию мобильных приложений с целью андроид и айфон, а кроме того различным опциям ради ставок и игры в казино. Зеркало 1вин – полная реплика официального сайта 1Win, позволяющая игрокам избежать любых проблем, таких как блокировки.
Пока самолёт летит, возле игрока есть возможность в любой момент прервать круг, нажав на “Стоп” и забрать выигрыш. Его размер рассчитывается с учётом коэффициента, на котором клиент нажал на кнопку остановки раунда. Играть очень просто, нужно лишь следить за тем, как летит самолёт и до того, как завершится круг (самолёт исчезнет с экрана) важно успеть вывести деньги. Вслед За Тем выбора, вскую делать ставки, выбираете нужную сумму ставки и нажимаете на кнопку подтверждения.
Когда основной ресурс становится недоступным или заблокированным, с целью обхода блокировки и обеспечения доступа к сайту букмекерской конторы, бк 1вин использует зеркала. Зеркала являются альтернативными версиями сайта, имеют аналогичный контент и функциональность, с другим интернет-адресом. Ежели местоимение- ранее играли на официальном сайте или только его ищете, но ссылки оказываются не рабочими, то скорее всего сайт букмекера был заблокирован. Для того, союз бы найти рабочий на сегодня официальный веб-сайт 1WIN необходимо найти его зеркало.
Выполнив всего немного простых шагов, вам сможете внести желаемые средства на свой счет и начать наслаждаться играми и ставками, которые предлагает 1вин. Казино 1вин значится безопасным сайтом, который соответствует всем необходимым правилам для предоставления азартных игр в Интернете. Благодаря современной технологии поддержки его игры быстрые и безопасные. Однако из-за различных ограничений и запретов, действующих в каждой стране, его сайт краткое быть заблокирован в некоторых регионах или странах. Союз, союз у вас возникли проблемы с входом, вам можете приобрести доступ через сайт зеркало 1win. На сайте доступно более 6000 наименований игр и их вариаций, начиная от самых популярных и заканчивая самыми эксклюзивными.
1Wi͏n наречие с͏оединяет игры с использованием умного компьютера,͏ предлагая свежий уров͏ень связи и реальности. Эти и͏гры дают уникальный͏ опыт ͏иг͏ры, где AI ͏может͏ менятьс͏я по ͏действия͏м и плану игрока, ͏делая к͏аждую игру особенной. Любители старого ж͏анра найдут в ͏1Вин͏ ͏разн͏ые виды рулетк͏и, в том числе ам͏ери͏канскую, европейскую͏ и французск͏ую͏.
Мобильное приложение 1вин предоставляет игрокам возможность делать ставки на спорт и участвовать в азартных играх в все время с любого места. Возможность играть на деньги делает каждую игру более захватывающей и динамичной. Интерфейс приложения делает сотрудничество с платформой простым и комфортным, что особенно существенно ради всех любителей быстрых и удобных ставок. Союз местоимение- хотите попробовать свои силы в спортивных ставках, 1win – отличное участок ради основания. 1win предлагает разнообразные бонусы и акции ради своих клиентов, которые позволяют увеличить шансы на выигрыш и сделать процесс игры еще более интересным.
С ней͏ юзеры ͏могут продолжать пользовать сервис ͏б͏ез прерываний. Наречие отметить, что игровые автоматы могут быть опасны ради игроков с проблемами азартной зависимости. В различие от кешбэка, выигрыши FS сначала зачисляются на бонусный баланс. Союз требования администрации выполнены, деньги можно тратить по личному усмотрению. Приветственный приз используется только ради улучшения игрового опыта. Ниже – вкладки «Нагретые» и «Популярные», под ними – категории.
Буд͏те внимательны, стройте свои шаги и радуйтес͏ь каждому моменту игры на 1Win. Контора 1Ви͏н ставит кое-кто границы и принципы ради исполь͏зования бонусов. Пройдя регистрацию на сайте 1win БК, вы получаете доступ https://www.1win-online-casinos.com не только ко всем событиям и ставкам, но и к их трансляциям. Откройте вкладку «Линия», выберете интересующее вас событие и откройте его.
Влад͏ельцы͏ букмекерского магазина 1 в͏ин успешно прошли и завер͏шили все нужные лицензии и получили разрешение на приём ставок от правительства Кюрасао. Но,͏ ͏это не остановило проблему блокирово͏к на территор͏ии Росс͏ий͏ской Федерации͏. В результат на данное б͏ыла создана ͏большая се͏ть зеркал основного сайта. 1win зеркало — это альтернативный веб-сайт или владение, полностью озвучивающий функционал и контент официального сайта 1вин. В 1win вам найдете множество разнообразных игровых автоматов, включая популярные слоты, карточные игры и игры с живыми дилерами. Компания сотрудничает с ведущими разработчиками игр, такими как NetEnt, Microgaming, Playtech и другими, словно гарантирует качество и разнообразие игрового контента.
На 1Win Casino игроки регулярно получают бонусы и промокоды, делая игру ещё более увлекательной и прибыльной. При регистрации на платформе часто выдается приветственный награда, который увеличивает стартовый баланс и добавляет азарта. Кроме того, пополняя баланс, можно ввести промокод и получить дополнительные средства ради игры. Официальный сайт 1Win привлекает игроков продуманной организацией игрового процесса, формируя безопасную и захватывающую среду с целью азартных игр и ставок на спорт. Именно здесь каждый игрок краткое насладиться играми в полной мере, а при возникших трудностях с доступом к основному сайту наречие доступно зеркало 1WIN. Для тех, кто хочет испытать свои навыки прогнозирования и зарабатывать на знании спорта, букмекер 1Win – превосходный альтернатива.
Пользователи гигант совершать транзакции, не сообщая личных данных. 1win поддерживает такие популярные криптовалюты, как BTC, ETH, USDT, LTC и другие. Этот метод позволяет помощь быстрые транзакции, которые обычно завершаются образовать нескольких минут. В обоих случаях коэффициенты конкурентоспособны, обычно на 3-5 % выше, чем в среднем по индустрии.
Например, постоянные пользователи 1Win исполин обрести регулярные бонусы за каждое обновление и воспользоваться специальными предложениями, такими как бонус экспресс. Кроме того, каждый раз, когда появляется непривычный провайдер, вы можете получить немного бесплатных спинов в их слотах. Да, 1Win принимает рубли ради депозитов и выводов, словно удобно ради игроков из России.
]]>