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);
These People provide a large range regarding sports in addition to gambling market segments, competing odds, in addition to great design. Their Particular M-PESA incorporation will be a significant plus, in add-on to typically the client help is usually high quality. Any Time it will come in order to bookmakers masking the marketplaces across European countries, sports activities wagering will take amount 1. Typically The large selection of sports, institutions and occasions makes it achievable regarding everyone together with any interests to end upward being in a position to take enjoyment in inserting wagers on their own favorite teams in add-on to players. 188BET offers typically the most flexible banking options within typically the industry, guaranteeing 188BET speedy and secure debris and withdrawals. Whether Or Not a person choose traditional banking procedures or on the internet payment systems, we’ve got an individual covered.
Link Vào Bet188, 188bet Link Không Bị Chặn188BET is usually a name identifiable along with development plus stability in typically the world associated with online gambling plus sports wagering. 188Bet money out there will be simply available upon some regarding the sports activities and occasions. Consequently, an individual should not really take into account it in order to end upward being at palm regarding each bet a person decide to place. Partial cashouts only occur whenever a lowest product stake remains about possibly side regarding typically the shown selection. Furthermore, typically the unique indicator you observe about events that help this characteristic exhibits typically the last sum that will results to your bank account if you funds out.
An Individual can expect appealing gives on 188Bet that will motivate a person in buy to employ the particular program as your ultimate gambling selection. Whether you have got a credit card or employ other platforms just like Neteller or Skrill, 188Bet will completely help a person. The Particular lowest deposit quantity is usually £1.00, and a person won’t end up being recharged any fees with respect to funds deposits.
Apart through soccer complements, an individual can pick other sports activities for example Golf Ball, Golf, Horse Riding, Baseball, Glaciers Dance Shoes, Playing Golf, and so forth. Typically The 188Bet delightful bonus alternatives usually are just available to end upward being in a position to customers coming from particular nations around the world. It consists of a 100% reward regarding upwards to become in a position to £50, plus you should downpayment at the very least £10. Unlike several additional betting platforms, this added bonus is cashable in inclusion to requires gambling of 30 occasions. Keep In Mind that will the 188Bet chances you make use of in buy to obtain qualified for this specific offer you should not be less than two. A Person could swiftly exchange money in order to your lender account applying typically the exact same transaction methods with respect to build up, cheques, and financial institution exchanges.
Typically The panel up-dates in real moment plus offers you together with all typically the details you require for every complement. 188Bet new customer offer you items alter on a normal basis, ensuring of which these sorts of alternatives adapt to various occasions in inclusion to periods. Presently There are usually particular things available with regard to different sporting activities alongside poker in add-on to on line casino bonus deals. Presently There are usually plenty regarding special offers at 188Bet, which often displays the particular great interest regarding this particular bookmaker to additional bonuses.
The 188Bet site helps a dynamic survive gambling function inside which often a person could nearly usually notice a great ongoing occasion. You could make use of soccer matches through diverse institutions and tennis and hockey complements. Sports is by simply much the many well-liked product on the particular checklist regarding sporting activities gambling websites. 188Bet sportsbook testimonials indicate that will it thoroughly covers football.
The primary food selection consists of different options, such as Race, Sports Activities, On Collection Casino, and Esports. The provided panel about the left side makes routing in between activities much more straightforward plus cozy. Experience the particular excitement of online casino games through your own chair or your bed.
Inside the 188Bet overview, we all identified this specific bookmaker as a single regarding typically the modern plus many thorough gambling websites. 188Bet gives a good variety of online games together with fascinating odds and allows you employ high restrictions for your own wages. We think of which bettors won’t have got any sort of dull times utilizing this particular program. Typically The web site claims in order to possess 20% better costs than some other wagering trades. The high quantity regarding reinforced football institutions tends to make Bet188 sports gambling a popular bookmaker with respect to these kinds of matches. The Bet188 sporting activities betting site has a good engaging and fresh appearance that permits site visitors to become able to choose through various colour styles.
In some other words, the particular buy-ins will usually not really become considered appropriate following typically the scheduled time. Typically The exact same circumstances utilize if typically the number regarding models differs coming from exactly what had been currently planned and announced. Following choosing 188Bet as your current secure system to place wagers, a person can indication upwards regarding a fresh account in merely several moments. The Particular “Sign up” plus “Login” buttons usually are situated at the screen’s top-right nook. Typically The enrollment process requires you with respect to basic info for example your current name, money, plus email address. It furthermore requires an individual for a unique user name and an optional pass word.
Given That 2006, 188BET offers turn out to be one regarding the the vast majority of respectable brand names in online wagering. Regardless Of Whether a person usually are a experienced gambler or simply starting out, we all offer a risk-free, secure in addition to fun environment in buy to take satisfaction in many gambling alternatives. Numerous 188Bet testimonials have got popular this particular system function, and all of us think it’s a great resource regarding those fascinated in reside betting. Being In A Position To Access the particular 188Bet reside wagering section is as simple as pie. All a person want in order to carry out will be simply click on the particular “IN-PLAY” case, notice typically the most recent reside occasions, plus 188bet link filter the results as per your choices.
Dive right into a large variety regarding games which includes Black jack, Baccarat, Different Roulette Games, Poker, and high-payout Slot Video Games. Our impressive on the internet casino knowledge is created in buy to bring the best associated with Vegas to you, 24/7. From football plus hockey to golf, tennis, cricket, and even more, 188BET includes more than some,500 competitions plus gives 12,000+ events each and every 30 days. The system offers a person accessibility to several associated with the particular world’s most fascinating sporting activities institutions plus fits, making sure an individual never ever overlook out there on typically the action.
Appreciate unlimited cashback upon Casino plus Lotto areas, plus possibilities to be able to win upwards to one eighty eight thousand VND along with combo bets. We provide a range of attractive special offers designed to improve your encounter in addition to boost your own winnings. We’re not really merely your go-to location for heart-racing on line casino video games… In addition, 188Bet gives a devoted online poker platform powered by simply Microgaming Poker Community. You could locate totally free tournaments in inclusion to additional types along with reduced in inclusion to high buy-ins. Maintain within mind these varieties of gambling bets will acquire emptiness in case typically the match up starts off before typically the planned period, except regarding in-play kinds.
Luckily, there’s a good large quantity regarding gambling alternatives plus occasions to employ at 188Bet. Allow it become real sporting activities events that attention an individual or virtual online games; typically the huge accessible range will meet your anticipation. We All take great pride in ourself about giving a good unequaled assortment of online games plus events. Whether Or Not you’re excited regarding sports, casino video games, or esports, you’ll discover endless options to become able to perform and win. I attempted 188Bet plus I enjoyed the selection regarding options it provides. I will be pleased along with 188Bet and I suggest it to be able to other online gambling fans.
Whether Or Not a person are usually a experienced gambler or even a everyday gamer seeking regarding some enjoyable, 188bet vui has some thing to be capable to offer you with respect to every person. As esports grows globally, 188BET keeps ahead by providing a extensive variety regarding esports gambling options. You could bet about famous video games such as Dota a couple of, CSGO, in addition to Group regarding Tales whilst experiencing added titles like P2P video games in addition to Seafood Shooting. As a Kenyan sports activities lover, I’ve already been caring my encounter along with 188Bet.
At 188BET, we all mix over 10 yrs regarding knowledge along with most recent technology to end upwards being capable to offer a person a trouble free in add-on to pleasant gambling experience. Our Own international brand name presence assures that will a person could play along with assurance, understanding you’re gambling along with a reliable plus financially solid bookmaker. The 188Bet sporting activities betting site offers a wide variety associated with products some other as in comparison to sports activities also. There’s an on the internet online casino along with more than 800 video games through popular application companies such as BetSoft in inclusion to Microgaming. If you’re interested inside the particular survive casino, it’s likewise accessible about the 188Bet site.
]]>