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);
Welcome Pak за формирование личного кабинета без депозита может быть нескольких видов. Денежные призы и фриспины без депозита классифицируются, учитывая требования их выдачи. Для получения бездепов на виртуальном портале Покердом стоит выполнить одно из условий:
Открытие счета считается необходимым действием при любых условиях. Окромя вышеперечисленных условий, в игорном заведении Pokerdom применяется эксклюзивная программа лояльности. Получение очередного уровня сочетается выдачей индивидуальных подарков, вследствие этого gamers имеют возможность взять бездеп от legal веб-проекта. Предельно прибыльные подарки без пополнения баланса с адекватными вейджерами могут получать гэмблеры с VIP-статусом.
Bonus за активацию профиля, который позволяется без промедлений вывести, — это не очень частое правило для casino, ведь он совершенно невыгодный для игорного заведения. Брендовая площадка Покердом официальный сайт предоставляет поощрения для активации потока новых клиентов. Но, чтобы перестраховаться, использует альтернативные условия получения бонуса. А именно, надо пройти верификационную процедуру.
Так же можно использовать promo code, забрать поощрение на день рождения. Размер бонуса без пополнения баланса чаще всего на порядок ниже среднего уровня. Довольно часто бездеп выдается в формате бонусных вращений, которые дозволено задействовать для запуска в модифицированных аппаратах.
Кешаут имеющихся средств разрешен только после выполнения условий отыгрывания акционных денег. Частенько на bezdep устанавливается высокий коэффициент вейджера. А для отыгрыша можно пополнить баланс на определенную сумму. Это предстоит учесть накануне регистрации аккаунта.
Довольно популярными в on-line cazino служат поощрения с пополнением счета. Условиями для зачисления бонусных денег и free spins является прохождение регистрационной процедуры и первый депозит на минимальную сумму или больше. Welcome bonus есть возможность задействовать для ставок в игровых аппаратах из коллекции казино.
Коэффициент отыгрыша на бонусные средства и free spins часто отличен. Еще чаще всего усовершенствованные казино фиксируют лимиты на подборку актуальных слотмашин для запуска бонусных вращений. Объем денежного вознаграждения зависит от величины стартового пополнения. Условия к отыгрыванию в данном случае не слишком сложные, как в бездепе. Есть возможность оперативно отыграть и отправить запрос на обналичивание средств.
Довольно частенько на гемблинговой веб-площадке также предложены регулярные подарки по промокодам, кешбэк, Колесо Фортуны и остальные презенты. Накануне использования любого из специальных поощрений рекомендуется внимательно выучить сроки действия акции, требования к игроку для получения и отыгрывания.
]]>Bonus за регистрацию без депозита бывает различных форматов. Подарки за открытие счета классифицируются, ориентируясь правилами их выдачи. Для получения бездепов на игральном веб-проекте вулкан неплохо бы выполнить одно из условий:
Прохождение регистрационной процедуры является необходимым действием в любом случае. Так же в on-line kasino казино вулкан используется четырнадцатиуровневая система поощрений. Получение очередного уровня сочетается выдачей индивидуальных подарков, вследствие этого gamers имеют возможность забрать бездепозитный приз от законно работающего kazino. Предельно прибыльные подарки без пополнения баланса с нормальными вейджерами могут получать юзеры с VIP-статусом.
Стартовый презент за регистрацию, каковой разрешается без промедлений отправить на выплату, — это редчайшее явление для интернет-казино, потому что он максимально маловыгодный для игрового сервиса. Лучшая web-платформа казино онлайн предлагает приветственные бонусы для активации потока новых клиентов. Однако, чтоб перестраховаться, задействует вспомогательные условия активации бонуса. Например, рекомендуется верифицировать игровой аккаунт.
Еще можно закрепить promo code, получить поощрение на день рождения. Суммарный показатель поощрения без финансовых вложений преимущественно на порядок ниже среднего уровня. В большинстве случаев бездеп выдается в виде FS, каковые разрешается задействовать для оборотов в определенных моделях.
Вывод выигрышей позволен лишь по результатам отыгрывания акционных денег. Преимущественно на денежный подарок без внесения депозита установлен высокий коэффициент вейджера. А для отыгрыша советуется пополнить баланс на указанную величину. Это советуют принять во внимание перед созданием учетной записи.
Более распространенными в интернет-клубе считаются welcome бонусы с внесением депозита. Условиями для получения бонусов и бесплатных спинов служит прохождение регистрационной процедуры и внесение определенных сумм на собственный баланс. Стартовый пакет дозволено затрачивать для запуска спинов в слотах из подборки интернет-клуба.
Вейджер на бонусные средства и FS зачастую различается. Также иногда знаменитые kazino применяют лимиты на количество доступных слотов для прокрутки бесплатных спинов. Величина награды зависит от внесенной пользователем суммы первого депозита. Требования вейджеров тут не такие строгие, как для подарков без внесения депозита. Довольно легко оперативно отыграть и вывести средства.
Зачастую в casino еще попадаются депозитные поощрения, кешбек, Колесо Фортуны и другие награды. Накануне использования любого из специальных поощрений рекомендуется детально изучить сроки действия акции, требования к игроку для получения и отыгрывания.
]]>Бонус за создание учетной записи без депозита попадается разных типов. Первые презенты без пополнения баланса различаются, ориентируясь правилами их начисления. Для активации подарка без внесения депозита в kazino вулкан требуется соответствовать одному из требований:
Открытие счета является необходимым действием при любых условиях. Кроме этого, на виртуальном портале казино вулкан действует мультиуровневая программа лояльности. Переход на новый уровень сопрягается с начислением эксклюзивных денежных призов, во время чего посетители имеют возможность активировать денежный подарок без внесения депозита от топового сайта. Предельно лояльные бонусы без финансовых вложений с нормальными требованиями по отыгрышу получают клиенты с VIP-статусом.
Первый бонусный дар за активацию профиля, каковой дозволено моментально вывести, — это не очень частое явление для web-club, потому что он максимально нерентабельный для оператора. Законно работающая площадка казино онлайн предлагает стартовые награды для привлечения начинающих геймеров. Однако, чтобы перестраховаться, внедряет резервные требования получения Велком Пака. К примеру, разумно верифицировать игровой аккаунт.
Так же предлагается вписать промокод, получить приз ко дню рождения. Обьем подарка без депозита в большинстве случаев на порядок ниже среднего уровня. Довольно часто бездеп выдается в качестве бонусных вращений, какие разрешается использовать для прокрута в легитимных одноруких бандитах.
Вывод выигрышей дозволен только после выполнения условий отыгрыша по бонусу. Частенько на денежный подарок без внесения депозита действует высокий коэффициент вейджера. А для отыгрыша неплохо бы внести депозит на определенную сумму. Данные факторы советуется принять во внимание в процессе прохождения регистрационной процедуры.
Предельно востребованными в online casino считаются приветственные пакеты. Условиями для выдачи призовых средств и фриспинов служит создание аккаунта и внесение определенных сумм на собственный баланс. Велкам бонус позволяется задействовать для игры в автоматы из каталога сайта.
Коэффициент отыгрыша на бонусные средства и freespins может отличаться. Так же нередко развлекательные cazino используют лимиты на подборку актуальных слотов для включений freespins. Объем денежного вознаграждения зависит от внесенной пользователем суммы первого депозита. Правила отыгрыша здесь не такие суровые, как для подарков без внесения депозита. Довольно легко быстро открутить и отправить запрос на обналичивание средств.
Чаще других на игроцком онлайн-сервисе так же попадаются депозитные поощрения, cashback, Колесо Фортуны и эксклюзивные награды. Накануне использования любого из специальных поощрений неплохо бы детально просмотреть продолжительность акционного предложения, требования к игроку для получения и отыгрыша.
]]>