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);
Quanto também conquistas você obtiver, mais será o teu standing, levando-o a servir recompensado zero MostBet jackpot com bônus também lucrativos. As apostas combinadas envolvem o aproveitamento de bónus e incentivos dados paisas viviendas de apostas para fazer apostas a benefit e enemistad o mesmo acontecimiento. Uma expresamente tem 1 custo, sony ericsson as probabilidades de um esfuerzo pagarem significativamente cependant perform que verdaderamente deveriam. Alguma expresamente de custo não pressupõe o qual possa ser uma receita infalível e infalível para o sucesso. Zero entanto, encontrar (e compreender) as apostas certas é apenas alguma parte carry out trabalho. Para demandar seu código de promoção MostBet, a primeira coisa que você necessita produzir é conseguir uma conta na trampolín.
A seção de FAQ é particularmente útil afin de principar dúvidas e preocupações comuns, enquanto a squadra de suporte técnico está disponível pra auxiliar apresentando quaisquer problemas que possam surtir. O Mostbet País e carry out mundo oferece uma ampla seleção de jogos de desenvolvedores de software program www.mostbet-brsl.com líderes, tais como EvoPlay, Matter-of-fact Play, PLAYSON, Gamzix, AviatriX e bem cependant. Aproveite caça-níqueis clássicos, vídeo caça-níqueis, jogos de direccion, games apresentando retailers ao palpitante e outras opções divertidas.
O aplicativo de uma Mostbet é uma mecanismo essencial pra quem pretende arriesgar de qualquer lugar. Compatível possuindo dispositivos Android os e iOS, o app oferece muchas as características disponíveis na versão pc, mas de manera otimizada para telas menores. Problema o usuário não cumpra o prazo especificado pelas regras, todas as promoções serão canceladas.
Apresentando uma ampla gama de games, bônus generosos e uma trampolín holistica, o Mostbet País e conduct mundo é seu acaso resolutorio para cassino on-line e apostas esportivas. Você está procurando maximizar tua experiência de cassino e apostas zero Mostbet? Ao usar o código promocional RESTART777 por o inspección, você pode desobstruir um globo de bônus e benefícios exclusivos.
Caso você possua feito o depósito 30 min depois de efetuar o padrón, a porcentagem carry out bônus é de 150%. A quantia mínima permitida pra você asignar é de R$ two a se tornar depositado enel carry out prazo de sete dias – contados a hacer la cusqui da realização carry out cadastro. A operadora pede o qual operating-system teus usuários enviam arquivos pra a comprovação de identidade logo depois que o cadastro é concluído. Embora o padrón no site seja o cependant discretos e amigável possível, erros técnicos tem a possibilidade de acontecer de sucesión em assim que.
Nosso compromisso com a excelência ze reflete em cada aspecto de uma experiência perform usuário, desde o momento carry out registro até o tiro 2 lucro. Oferecemos probabilities competitivas em mais de 36 modalidades esportivas, incluindo futebol, basquete, tênis, vôlei e muitos diferentes esportes buscados dentre operating system brasileiros. Descobrir operating system código promocional mostbet certos pode desatascar uma variedade de benefícios personalizados para aprimorar sua experiência simply no mostbet casino login. O bônus search engine optimization depósito da Mostbet accede la cual recém-lan?ados usuários apostem et joguem no cassino search powerplant marketing admitir fundos, oferecendo a chance de testar o web site e ganhar dinheiro actual. É essencial visitar os requisitos necessários pra reivindicar e aproveitar ao máximo tal bônus. Para atrair recém-lan?ados jogadores, a Mostbet oferece um bônus de registro sportivo.
Além dos caça-níqueis, há roleta e games de cartas (bacará, pôquer, blackjack) e games ao festón possuindo crupiês ao palpitante. Não é necessária autorização, a odaie de apostas como também o casino estão localizados no ainda site. Nossa plataforma Mostbet oferece diversos mercados de apostas, incluindo placar last, handicap, acima/abaixo e mercados especiais afin de eventos específicos por o jogo. Estes mercados são atualizados regularmente com foundation nas últimas tendências e informações, proporcionando aos jogadores as melhores opções de apostas on the internet. As opções para chegar ao suporte ao usuario são acessíveis usando um browser de direccion. Contudo, deve-se conocer que o suporte por conversation ao vivo não está disponível usando o aplicativo MostBet.
Na realidade, a Mostbet é uma organização séria e excelente para operating system clientes que querem realizar diversos tipos de apostas e até mesmo apetecer a caso em games de cassino. Também é reconhecida durante seu Mostbet cassino ao festón, la cual oferece além de apostas esportivas. Embora a Mostbet On Collection Casino possa te proporcionar o bônus distinct afin de seu depósito preliminar, a variedade de jogos oferecidos é infrecuente. O Mostbet está comprometido possuindo a promoção perform game responsável e oferece muitas ferramentas afin de ajudar os usuários a sustentar fiscalização em relação à suas atividades de apostas.
Mostbet Cassino é 1 dos estabelecimentos de games de azar também populares perform mundo. Uma dasjenige principais vantagens do Mostbet é tua capacidade multimoeda e multilíngue, tornando-o acessível a jogadores de en absoluto o mundo. Todos operating-system dados são protegidos por protocolos modernos – SSL e TLS, o o qual evita o risco de phishing e diferentes violações.
O Mostbet Brasil garante altas chances nas apostas, permitindo la cual você obtenha cependant beneficio com previsões bem-sucedidas. Além disto, o Mostbet atualiza regularmente seu catálogo, adicionando novos games e temas inovadores. Possa Ser você fã de estratégia et sorte, encontrará opções que combinam com teu peculiaridad de game. Se a revisão falhar, você receberá alguma mensagem zero seu endereço de e-mail informando o razon. Edite teus dados et forneça operating-system documentos necessários e tente novamente. Para se deliberar, groupe zero botão zero canto superior direito, insira seus dados de contato, complete a verificação durante TEXT MESSAGE e grasa operating system termos da proyecto.
O Mostbet é um de internet casinos on-line também conocidos em Portugal e no País e conduct mundo. Oferecemos alguma numerosa gama de jogos e bónus exclusivos afin de todos os nossos utilizadores. La Cual é alguma grande oportunidade de economizar dinheiro na TELEVISION via satélite se você estiver pronto afin de seguir ao game sem comentários zero teu expresión nativo. Total operating system casinos, como operating system casinos ao vivo usam recurso financeiro e bónus weil conta main afin de arriesgar. Na grande parte dieses partidas, você só tem a possibilidade de apostar na vitória de um squadra. Você tem a possibilidade de decir apresentando uma importante seleção de posições apenas em illustres competições e jogos principales.
O MostBet também proporciona um bônus search powerplant marketing depósito de 5 apostas grátis em Aviator systems rodadas grátis apresentando cadastros de recém-lan?ados jogadores. Uma ampla gama de informações, incluindo pontos em relação à eventos e resultados anteriores, está disponível zero web site na seção de estatísticas. Essas estatísticas incluem pontos em relação à vitórias, derrotas, gols, adversários e diferentes ocasiões total afin de jogadores privados quanto para equipes inteiras. Tudo isto é feito afin de armar você possuindo o conhecimento necessário pra realizar apostas também bem sucedidas. A seção de cassinos ao festón na Mostbet é bastante grande, com uma seleção de twenty four fornecedores de application, tais como Development Gambling, Skywind Survive, LuckyStreak, Authentic Video gaming, TVBet, e vários outros!
A software Mostbet é a melhor forma de baquetear o on line casino em qualquer espaço, possuindo uma interface rápida e acesso instantâneo a slot equipment games e apostas. A app Mostbet é perfect para quem deseja o online casino zero fiacco, em Android et iOS. Rápida e fluida, ela fascículo slots, apostas ao vivo e accident online games asi como Aviator possuindo desempenho top, search powerplant marketing travamentos.
]]>