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);
После запуска игрового клиента с рабочего стола телефона гемблер сможет пополнить баланс и играть с выводом денег. Наличие учетной записи позволяет запускать любые игры виртуального клуба в формате платной версии, вне зависимости от наличия сетевых ограничений и скорости интернета. Чтобы снять выигрыш, гемблеру необходимо подать соответствующий запрос с указанием суммы и обязательных платежных реквизитов. Если гемблер получил выигрыш с помощью бездепа, ему необходимо внести на свой баланс минимальную сумму.
Без авторизации использование большинства возможностей платформы невозможно. Здесь ценители классических слотов и продвинутых автоматов могут найти развлечение по душе. Постоянные клиенты казино Пин Ап отмечают, что администрацией площадки созданы все условия, необходимые для комфортной игры.
В Пин Ап игровые автоматы дополняет раздел игр с реальным крупье. Здесь представлены разные варианты покера, рулетки и блэкджека с удобной разбивкой развлечений на категории. Софт для лайв-казино представлен такими компаниями, как Authentic Gaming, NetEnt Live, Lucky Streak, Ezugi и Evolution Gaming.
Юзеры, желающие получить качественное обслуживание на легальных основаниях, неспроста отдают предпочтение этому сервису. Pin Up Казино официальный сайт – это не просто развлекательный ресурс, а полноценная гемблинг-платформа с обоснованным юридическим статусом. Сайт имеет все необходимые документы, подтверждающие его легальность. Казино зарегистрировано как юридическое лицо и ведет свою деятельность на основании международной лицензии, выданной авторитетным регулятором. Официальный сайт казино периодически может быть заблокирован по pin up официальный сайт самым важным причинам.
В каталоге казино представлены игры от ведущих разработчиков, таких как Pragmatic Play, NetEnt, Play’n GO, Microgaming и Amatic. Чтобы получить доступ ко всему ассортименту, достаточно скачать и установить ярлык на главный экран. Верификация требуется перед первым выводом, что обеспечивает защиту аккаунта.
Практически каждый час в Pin Up casino online разыгрываются джекпоты. Выиграть может каждый гэмблер, который ставит суммы от 10 RUB в любых игровых автоматах. За RUB, потраченных на ставки, геймерам выдается лотерейный билет для участия в беспроигрышной лотерее.
Поэтому, если нужна букмекерская контора, то сказать об этом имеет смысл сразу. Для казино и БК разработаны разные приложения, что выгодно подчеркивает онлайн игорное заведение Пин Уп среди подобных учреждений. Загруженные файлы не включают вирусы, могут быть удалены из памяти компьютера, планшета или мобильного телефона без следов. Полная версия вебсайта надежного азартного заведения Pin-Up советует информацию по разделу «Сейчас выигрывают», где представлен список реальных победителей. Здесь можно обратить внимание на самые популярные игры, просмотреть динамику, что выбирают пользователи на сегодняшнее время.
]]>Однако есть случаи, когда с клиентом не все так гладко, и этот процесс длится до двух недель. Это запрещено правилами нашего казино, но, если вы сделали это неумышленно, обратитесь в службу технической поддержки клуба. Деньги платят исправно, правда, для этого нужно пройти верификацию. Для регистрации достаточно иметь свой собственный почтовый ящик и номер телефона. Наиболее популярный способ пополнения, доступный каждому человеку. Если верить отзывам о клубе ПинУп, то он часто проводит различные турниры, раскрывающие возможность поднять реально большие средства!
Pin‑Up Bet – ставки на спорт с высокими кэфамиДля игры в букмекерской конторе скачивается особая софтина Pin Ap Bet. Поэтому, если нужна букмекерская контора, то сказать об этом стоит моментально. Для БК и казино сделаны разные приложения, что определенно подчеркивает клуб Пин Уп среди подобных заведений. Файлы не содержат вирусы, могут быть удалены из памяти компьютера, смартфона или планшета без следов. Зарегистрироваться на официальном сайте Pin Up можно с 2016 года.
Новичкам предоставляется стартовый бонус, а постоянным игрокам – бонусы за активность. Множество положительных отзывов игроков о нас подчеркивают надежность и качество услуг, делая казино Pin Up одним из лидеров в индустрии азартных развлечений. Мы принимаем игроков из России, Казахстана, Украины, Белоруссии, Азербайджана, Узбекистана, Канады, Турции, Франции и некоторых других стран. Во многих регионах с запретом на игорный бизнес онлайн официальный сайт площадки блокируют контролирующие органы. Во избежание таких препятствий воспользуйся зеркалами или VPN.
Такой способ пополнения баланса предусматривает выбор соответствующего платежного инструмента, вход в учетную запись банка и подтверждения перевода указанной денежной суммы. pin up казино официальный сайт Эта процедура является безопасной, так как платежные данные передаются через зашифрованный канал в Pin Up. Чтобы внести денежные средства на счет Pin Up, клиенту нужно кликнуть на «Пополнить», выбрать необходимый платежный сервис, указать в всплывшем окне желаемую сумму и реквизиты. Через код в смс-сообщении необходимо подтвердить денежная транзакцию, после чего происходит зачисления денег. В некоторых случаях могут позвонить сотрудники банка, чтобы подтвердить перевод.
Разнообразный выбор игр Пин Ап казино.
Удобный Pin up официальный сайт
Приветственный бонус.
Пинап Ставки на спорт.
Множество способов оплаты.
Техническая поддержка. Специалисты на русском и казахском языках готовы помочь в любое время. Да, регистрация на Pin Up официальном сайте или бесплатном мобильном приложении, а также игра на реальные деньги или в демо режиме без риска законны. Пин Ап казино предлагает эксклюзивные акции с возможностью получения бесплатных вращений, бонусов за депозит, еженедельного кэшбэка и других денежных призов.
Благодаря этим игровым автоматам вы можете понять динамику игры и узнать ее слабые стороны. Загрузка Pin Up Casino легка и проста, и его работа на мобильных устройствах идентична версии для ПК, за исключением того, что доступ к нему можно получить всего одним кликом. После запуска игрового клиента с рабочего стола телефона гемблер сможет пополнить баланс и играть с выводом денег. Наличие учетной записи позволяет запускать любые игры виртуального клуба в формате платной версии, вне зависимости от наличия сетевых ограничений и скорости интернета. Без регистрации на официальном сайте или в приложении на смартфоне Пин Ап можно покрутить определенные игровые аппараты. Демоверсии позволяют оценить игру, прощупать уровень отдачи и волатильность.
Нередко начинающие игроки путают международное онлайн казино ПинАп и казахстанскую одноименную букмекерскую конторы. Фактически это две разные компании с различными игровыми условиями, которые объединяет только схожее название.
Не забывайте следить за новыми релизами — именно они часто предлагают самые щедрые бонусы и высокую волатильность. Выбирая современные слоты, вы повышаете шансы на крупные выигрыши и получаете максимум эмоций от игрового процесса.