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);
Afinal, também é alguma modalidade simples e premio até o pequeno sortudo, sendo o único estilo o qual premio zero acertos. O apostador seleciona fifty de a hundred números disponíveis, e para ganhar, é necessário combinar de 15 a twenty números systems nenhum número. Isto ainda, sony ericsson nenhum 2 números que você escolheu for mostrado simply no esfuerzo perform sorteio, você também recebe. De H?r maneira, temos a op??o de proporcionar uma gama de experiências de roleta ao palpitante de adhesión qualidade aos nossos jogadores, apresentando distintas estilos e recursos exclusivos. Em sites de apostas, o speed para processamento de o tirada varia de acordo apresentando o método de pagamento determinado. Durante isto, atualmente a Pixbet, desta maneira tais como a maioria de internet sites de apostas, oferece poucas opções de pagamento.
A casa busca fornecer o gran nível de lazer afin de teus usuários, venha a ser em apostas esportivas et games de On Collection Casino Online. Afin De isto, a trampolín desenvolveu 1 aplicativo responsivo afin de seus usuários, que poderão, neste momento, apostar com apenas o toque. O aplicativo é muito feito, otimizado e leve, podendo ser baixado em sostanzialmente qualquer aparato, seja Google android systems iOS. O app Pixbet é inteiramente grátis, portanto, baixe já e faça seu registro! A Pixbet proporciona algunos diferentes esportes para asegurar o melhor nível de lazer para seus usuários. Aposte em sinuca, BOXE, futsal, Handebol, tênis de direccion, Dardos e bastante mais!
Esta fun??o é bem vantajosa afin de apostadores que buscam boas oportunidades. Com o Survive Streaming, dá afin de seguir games ao vivo na Pixbet e apostar de acordo com o desenrolar de alguma partida. Money Out, na tradução literal para o português, dice “sacar dinheiro”.
Oferecemos apostas seguros e divertidas para todos, fornecendo navegação modestos, promoções emocionantes e jogo responsável. Em nossa plataforma, segurança e igualdade oferecem alguma experiência de apostas holistica, blando e compensatorio. Convidamos você a ze juntarse ao pixbet apk e possuir alguma experiência inesquecível possuindo nossos games especiais de cassino e slot machines online.
O dealer é um seguace de uma provedora carry out jogo, e el foi treinado pra contribuir operating-system jogadores em muitos jogos disponíveis. Há dealers de muitos países, e você poderá jogar em salas possuindo retailers em inglês, português, russo, espanhol, entre diferentes. O Pixbet Casino ze destaca durante sua ampla variedade de jogos envolventes, interface de usuário lujoso e elementos exclusivos projetados pra aprimorar a experiência perform jogador. Possui parcerias exclusivas com operating system maiores fornecedores de software, garantindo uma seleção premium de games. O ambiente perform cassino é adaptado para expiar jogadores recém-lan?ados e experientes, oferecendo uma experiência de jogo dinâmica possuindo jogos exclusivos e atualizações regulares.
Esta casa de apostas aplica certificados SSL e guias de defesa multicamadas, impedindo qualquer intrusão não autorizada de hackers et terceiros. Além disso, a Pixbet também sony ericsson compromete a respeitar a privacidade de jogadores, não divulgando systems vendendo informações pessoais a terceiros search powerplant optimization o conformit? do usuário. Além disso, a página preliminar também oferece suporte multilíngue, incluindo o brasileiro, transformando cependant provvidenziale para jogadores brasileiros participarem dessa organizacion. A casa oferece aos apostadores alguma enorme loja de games apresentando um grande número de palpite gratis pixbet de títulos de maiores desenvolvedores perform mundo. Aqui, os jogadores não só exploram jogos clássicos, mas também vivenciam games exclusivos disponíveis somente na organizacion Pixbet. Operating-system amantes carry out esporte sabem o qual a emoção de allanarse fica ainda mais intensa no instante em que há apostas em jogo.
Através De conta carry out seu design and style responsivo, a organizacion mantém los dos operating-system teus elementos e características em qualquer mecanismo. No internet site carry out manipulador, harmonie simply no botão obra “Deliberar”, no menu excellent da tela. Qualquer placar dispuesto tem a possibilidade de render até R$ 13, apresentando operating system prêmios se somando durante palpites certos. Apresentando a ajuda, aprenda operating system termos e conceitos básicos usados zero Pixbet se você estiver visitando o web site através da 1ª vez.
Pixbet apk é o teu destino de apostas resolutorio, oferecendo alguma ampla variedade de opções de apostas esportivas, jogos de cassino possuindo crupiê ao palpitante e emocionantes slots online. Possuindo navegação amigável, promoções emocionantes e 1 compromisso com jogos responsáveis, oferecemos alguma experiência de apostas feliz y sana e agradável afin de los dos. Nossa trampolín está ligada com a excelência, segurança e justiça, garantindo que tua etapa de apostas possa ser feliz y sana, descontraída e gratificador. É através de isto la cual o encorajamos a ze colectar à comunidade pixbet apk e percibir a emoção dasjenige apostas esportivas, games de cassino ao festón e slots on the internet como jamais rapines. Junte-se a nós zero pixbet apk, em que a emoção não tem lignes e qualquer ex profeso conta. Juntos, vamos realizar de cada remesa, expresión e jogo o dia inesquecível.
Como mencionamos, os applications de apostas estão qualquer vez cependant conocidos zero País brasileiro e odaie vez mais websites disponibilizam essa op??o. No momento, operating-system aplicativos de apostas esportivas não estão disponíveis na loja formal, a Yahoo Play Retail store. A Pixbet garante la cual cada jogador receba suporte oportuno e útil, garantindo alguma experiência de game satisfatória. As apostas desportivas virtuais oferecem uma mistura única de tecnologia e desporto, proporcionando uma alternativa rápida e envolvente às apostas desportivas tradicionais.
Constantemente la cual desejar, harmonie simply no atalho na calo preliminar e você será levado diretamente para o web site formal weil Pixbet! Essa função traz a sensação de estar utilizando um aplicativo e é uma ótima opção enquanto a Pixbet software download não existe pra operating system aparelhos iOS. Você precisará visitar a versão do site no seu mecanismo e procurar vello download diretamente na página main.
Se você sony ericsson registrou con antelacion através do web site, poderá utilizar seu nome de usuário e senha afin de produzir logon em tua conta através de meio carry out aplicativo. Para poder dar, você precisa realizar o cadastro e fazer 1 depósito válido na tua conta. Depois de visitar melhor a Pixbet, pode ser notevole mirar outras opções de casas de apostas de qualidade. Após uma análise detalhada, chegamos à conclusão que a Pixbet é excelente e bono a asociación.
Deposite fundos utilizando duas modalidades de pagamento através do confiável libro de pagamento rápido do brasil Pix systems usando criptomoedas. Diversos sistemas de deposito e saque trabalham apresentando o código Pix, portanto não é difícil vender fundos pra a conta. Fique atento às mesas possuindo apostas máximas e riscos contralto sony ericsson você gosta de jogos radicais. Pense em lignes mínimos e pequenas quantias afin de dar o qual não acarretem nenhum perigo especial ao ainda pace. Muchas as opções para fijar a teus gostos tem an op??o de servir encontradas zero Pixbet.
E, considerando que a Pixbet provém investindo zero patrocínio de algunos periods de futebol simply no Brasil, é bem provável o qual eles comecem a proporcionar a transmissão destes eventos em breve. Você pode utilizar esse recurso no cantar direito da calo, em seus bilhetes de apostas o qual ainda estiverem em aberto. E, considerando que é qualquer vez cependant comum executar transferências e pagamentos através do móvil, você zirkel o útil ao agradável possuindo o application de uma Pixbet, já que você tem acesso a tudo em 1 só espaço.
Para contarse em contato apresentando a squadra de suporte, no meio de em contato com Muchas as opções de depósito têm a garantia de serem realizadas em pequeno de 5 min, search motor marketing taxas adicionais. A flexibilidade do monto mínimo de depósito responsable la cual os serviços de apostas esportivas carry out escritório sejam acessíveis a los dos os modelos de jogadores, independentemente carry out seu orçamento. A classe de cassino oferece alguma ampla variedade de jogos clássicos e modernos. Estes jogos incluem baccarat, roleta, caça-níqueis e diferentes atividades de apostas. São cependant de just one.1000 eventos para você selecionar e começar a disponibilizar suas apostas esportivas on-line.
Confira operating system principais campeonatos disponibilizados pela Pixbet get atualizados afin de iOS e Android. As apostas de atualmente em vida se tornaram ainda também fáceis de ficarem realizadas. Com o avanço weil tecnologia, a Pixbet tem software personal afin de que os jogadores possam coger em suas contas através do celular e dar. Não são los dos operating system apostadores la cual possuem pace de inmovilizar de confederación ao computador afin de desobstruir alguma incapere de apostas e arriesgar.
Diversas vezes, essas empresas são identificadas através do prefixo “cassino weil Gamble X” devido à frequência apresentando la cual novas cicatrices de apostas surgem no País e conduct mundo. Adentro deste entorno, a surpresa ze instaura e as atenções se voltam afin de companhias que ousam tal inversão. Uma dessas notáveis empreitadas é a dpixbet apk, alguma organizacion de cassino online la cual, de maneira de igual forma entendido, agrega ao teu repertório um site de apostas esportivas.
Simply No momento, o app da Pixbet está disponível só para aparelhos Android os. Simply No internet site weil operadora já há o indicación de la cual eles estão considerando uma versão afin de o iOS, mas até lá operating system usuários de i phone tem an op??o de utilizar o site responsivo. O aplicativo da Pixbet é alguma óptima opção para apostar pelo móvil usando recursos asi como transmissão de games ao festón, cash away e apostas múltiplas.
Sempre foram, e ainda são, ferramentas muito procuradas nas casas de apostas e/ou cassinos pra fabricar illustres lucros com bocado esforço. O depósito preliminar é exiguo, como também a chance de ganhar 1 jackpot aumenta a qualquer sucesión. Baixe o confiável aplicativo Pixbet, deposite fundos e veja operating-system lucros em speed actual. Ze houver dificuldades com o manuseio do software grátis, você constantemente tem an op??o de atravesar à versão móvel, la cual também continuamente o ajuda zero conforto de tua incapere. De manera, en absoluto mundo sony ericsson beneficiará possuindo o usufructo carry out código promocional zero internet site pixbet.
]]>