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); 1xBet Malaysia Plinko offers an exciting blend of chance and strategy in a game that has captivated players worldwide. 1xBet Malaysia Plinko 1xbet plinko malaysia is a modern adaptation of the classic Plinko game, originally popularized by game shows. In this article, we will explore the rules, strategies, and the reasons behind the game’s exploding popularity in Malaysia. Plinko is a vertical board game where players release a token from the top and watch it bounce off a series of pegs before landing in a slot at the bottom. Each slot has a different payout, making every drop an exciting gamble. The unpredictability of where the token will land adds to the thrill, creating an engaging experience for players. In the online version offered by 1xBet, this game has been reimagined with vibrant graphics and an inviting interface, allowing players to enjoy Plinko from the comfort of their homes. Getting started with 1xBet Malaysia Plinko is easy. Follow these simple steps: One of the appealing aspects of 1xBet Malaysia Plinko is the variety of betting options available. Players can choose their bet amount, which allows for both low-risk and high-risk gaming strategies. The board contains multiple slots, each assigned different payout values ranging from low to high. It’s essential to understand the board layout to make informed betting decisions. Betting on higher slots can yield bigger returns, but the risk of losing increases as well.Exploring the Thrills of 1xBet Malaysia Plinko
Understanding Plinko
How to Play 1xBet Malaysia Plinko
The Betting Options
While Plinko is primarily a game of chance, certain strategies can enhance your gameplay and potentially improve your winning odds. Here are some tips to consider:

Several factors contribute to the growing popularity of 1xBet Malaysia Plinko:
1xBet Malaysia Plinko blends chance with strategy, creating an electrifying experience for players. With its simple mechanics, varied betting options, and potential for big wins, it’s no wonder that many are drawn to this exciting game. Whether you’re seeking casual fun or aiming for substantial payouts, 1xBet Malaysia Plinko is an excellent choice for both novice and experienced players. Embrace the thrill of the drop and discover what makes this game a favorite in the online gaming landscape.
]]>
1xBet Malaysia Plinko offers an exciting blend of chance and strategy in a game that has captivated players worldwide. 1xBet Malaysia Plinko 1xbet plinko malaysia is a modern adaptation of the classic Plinko game, originally popularized by game shows. In this article, we will explore the rules, strategies, and the reasons behind the game’s exploding popularity in Malaysia.
Plinko is a vertical board game where players release a token from the top and watch it bounce off a series of pegs before landing in a slot at the bottom. Each slot has a different payout, making every drop an exciting gamble. The unpredictability of where the token will land adds to the thrill, creating an engaging experience for players. In the online version offered by 1xBet, this game has been reimagined with vibrant graphics and an inviting interface, allowing players to enjoy Plinko from the comfort of their homes.

Getting started with 1xBet Malaysia Plinko is easy. Follow these simple steps:
One of the appealing aspects of 1xBet Malaysia Plinko is the variety of betting options available. Players can choose their bet amount, which allows for both low-risk and high-risk gaming strategies. The board contains multiple slots, each assigned different payout values ranging from low to high. It’s essential to understand the board layout to make informed betting decisions. Betting on higher slots can yield bigger returns, but the risk of losing increases as well.
While Plinko is primarily a game of chance, certain strategies can enhance your gameplay and potentially improve your winning odds. Here are some tips to consider:

Several factors contribute to the growing popularity of 1xBet Malaysia Plinko:
1xBet Malaysia Plinko blends chance with strategy, creating an electrifying experience for players. With its simple mechanics, varied betting options, and potential for big wins, it’s no wonder that many are drawn to this exciting game. Whether you’re seeking casual fun or aiming for substantial payouts, 1xBet Malaysia Plinko is an excellent choice for both novice and experienced players. Embrace the thrill of the drop and discover what makes this game a favorite in the online gaming landscape.
]]>
In recent years, the world of gambling has undergone a remarkable transformation with the advent of technology. The rise of casino online 1xbet plinko and various online casino platforms has made it possible for players to enjoy their favorite games from the comfort of their homes. In this article, we will explore the captivating universe of online casinos, the different games you can play, the benefits of participating in online gambling, and tips for enhancing your gaming experience.
The beginning of online casinos dates back to the mid-1990s when the first platforms were launched. These early sites offered a limited selection of games, primarily focusing on slot machines and classic table games like blackjack and roulette. However, as technology advanced, so did the variety and quality of games available online.
Today, players can access thousands of games, ranging from traditional casino favorites to innovative new options incorporating cutting-edge graphics and features. Online casinos have also adapted to meet the demands of a global audience, offering multiple languages and currencies, as well as tailored promotions and bonuses.
One of the main attractions of online casinos is the extensive variety of games available. Here’s a closer look at some of the categories you can explore:
Online slots are undoubtedly the most popular game category. With countless themes, styles, and features, players can find everything from classic fruit machines to modern video slots with immersive storylines. Most slots also come with exciting bonus features, including free spins and mini-games, which can significantly increase your winnings.
Table games like blackjack, poker, roulette, and baccarat have long been staples of the casino experience. Online versions of these games maintain the same strategic elements and excitement found in brick-and-mortar establishments. Many online casinos also offer live dealer games, which provide an interactive experience, allowing players to engage with real dealers through video streaming.
Online casinos often extend beyond traditional casino games to include sports betting. Players can wager on a variety of sports events, from football and basketball to horse racing and esports. This additional element of gambling appeals to a broader audience and enhances the overall experience for many players.
Specialty games such as bingo, keno, and scratch cards offer unique and entertaining alternatives to traditional casino games. These games are generally easy to play and can be a fun way to pass the time while potentially winning prizes.
Besides the vast selection of games, online casinos offer several benefits that contribute to their growing popularity:

The most significant advantage of online casinos is the convenience they offer. Players can enjoy their favorite games at any time and from anywhere as long as they have an internet connection. This flexibility allows players to fit gaming into their busy schedules without having to travel to a physical casino.
Online casinos are known for their generous bonuses and promotions. New players are often welcomed with enticing signup bonuses, while existing players can enjoy loyalty programs, cashback offers, and seasonal promotions. These bonuses provide players with extra funds to explore new games and increase their winning potential.
As mentioned earlier, online casinos offer an extensive range of games compared to their land-based counterparts. Players can easily explore new games and discover new favorites without the limitations of physical space.
Online casinos provide a variety of payment options for deposits and withdrawals. Whether you prefer credit cards, e-wallets, or cryptocurrencies, you can find a payment method that works for you. This accessibility makes it easy for players to manage their funds and ensures a secure transaction process.
While playing at online casinos can be a thrilling experience, it is essential to approach gambling responsibly. Here are some tips to help you enjoy your time and increase your chances of success:
Before you start playing, establish a budget that you are comfortable with and stick to it. Setting limits can help you avoid overspending and ensure that you are gambling within your means.
Always do your research before registering at an online casino. Look for sites that are licensed, regulated, and have positive reviews from players. This information will help you choose a reputable platform that prioritizes fairness and security.
Take the time to learn the rules and strategies associated with the games you want to play. Many online casinos offer free play options, allowing you to practice and improve your skills without risking real money.
Gambling should be a fun and entertaining activity. If you ever feel that it is becoming a source of stress or anxiety, take a break and reassess your approach. Remember, it’s essential to maintain a healthy balance between gaming and other aspects of your life.
The online casino experience has revolutionized the way players engage with their favorite games. With a wide variety of options and the convenience of accessing these platforms from home, it’s no wonder that online gambling is increasingly popular. By understanding the types of games available, the benefits of playing online, and the importance of responsible gambling, players can enjoy a thrilling and rewarding gaming experience. So, if you’re ready to dive into the world of casino online, don your lucky charm, set your budget, and get ready for an exhilarating adventure!
]]>