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);
Pour choisir le meilleur casino en ligne, il est primordial de considérer un certain nombre de critères. Ces critères vous aideront à évaluer les différentes options disponibles sur le marché et à déterminer celui qui correspond le mieux à vos attentes. Parmi les aspects les plus souvent considérés figure la réputation du casino.
La réputation d’un casino en ligne est un indicateur de sa fiabilité. Un casino qui a fait ses preuves auprès des joueurs et a une bonne réputation aura généralement reçu des licences de jeux d’autorités reconnues. Cela garantit que le casino opère légalement et suit des règles strictes.
Un des critères majeurs à prendre en compte est la variété des jeux proposés. Le meilleur casino en ligne vous offrira une gamme complète de jeux allant des machines à sous aux jeux de table comme le poker, la roulette, et le blackjack. Cela vous permet de profiter de plusieurs thèmes et mécaniques de jeux.
Les casinos en ligne attirent souvent de nouveaux joueurs avec des bonus alléchants. Ces promotions peuvent inclure des bonus de bienvenue, des tours gratuits, et des programmes de fidélité. Il est important de lire les conditions de mise pour comprendre comment ces bonus peuvent réellement bénéficier à votre expérience de jeu.
Les casinos en ligne présentent plusieurs avantages qui les rendent de plus en plus populaires parmi les joueurs. L’un des principaux atouts est la commodité qu’ils offrent. Avec un casino en ligne, vous pouvez jouer à vos jeux préférés à tout moment, sans avoir à vous déplacer.
Le premier avantage des casinos en ligne est leur accessibilité. Que vous soyez à la maison, en voyage, ou même pendant votre pause déjeuner au travail, vous pouvez accéder à vos jeux préférés via votre ordinateur ou appareil mobile. Cela rend le jeu plus flexible et agréable.
Les casinos en ligne proposent généralement une variété d’options de paiement pour les dépôts et les retraits. Vous pouvez utiliser des cartes de crédit, des portefeuilles électroniques ou même des cryptomonnaies. Cela vous permet de choisir la méthode qui vous convient le mieux.
Les meilleurs casinos en ligne investissent dans des mesures de sécurité avancées pour protéger vos informations personnelles et financières. Grâce à des technologies de cryptage, vous pouvez jouer en toute tranquillité, sachant que vos données sont en sécurité.
Il existe plusieurs caractéristiques qui définissent le meilleur casino en ligne. Pour être à la hauteur de son nom, un casino en ligne doit offrir non seulement des jeux variés mais aussi une plateforme sécurisée et un excellent service à la clientèle.
| Caractéristique | Description |
|---|---|
| Licences | Licences d’autorités reconnues pour garantir la légalité. |
| Support Client 24/7 | Assistance disponible à toute heure pour répondre aux questions. |
| Promotions et Bonus | Offres attractives pour les nouveaux joueurs et les joueurs réguliers. |
| Logiciels de Jeu | Partenariats avec les meilleurs développeurs pour des jeux de qualité. |
S’inscrire dans un casino en ligne est généralement un processus simple et rapide. De nombreux casinos proposent des formulaires d’inscription faciles à remplir. Voici les étapes pour vous inscrire:
Les casinos en ligne offrent une multitude de jeux pour satisfaire tous les types de joueurs. Les machines à sous, les jeux de table, et les jeux en direct sont parmi les plus populaires.
Les machines à sous sont sans doute les jeux les plus emblématiques des casinos en ligne. Avec une vaste gamme de thèmes et de jackpots progressifs, elles attirent une énorme base de joueurs. Leurs graphismes engageants et leurs fonctionnalités bonus rendent chaque partie excitante.
Les jeux de table comme le blackjack, la roulette et le baccarat restent des choix favoris parmi les joueurs. Ces jeux nécessitent à la fois de la stratégie et de la chance, offrant une expérience immersive et engageante.
Pour ceux qui recherchent l’authenticité, les jeux en direct sont une excellente option. Vous pouvez interagir avec de vrais croupiers et d’autres joueurs, ce qui vous permet de vivre l’excitation d’un casino physique tout en restant chez vous.
Jouer dans un casino en ligne peut être très divertissant, mais il est également crucial d’adopter des stratégies gagnantes. Une bonne stratégie peut augmenter vos chances de gagner véritablement.
La gestion de bankroll est l’une des clés pour réussir au casino. Il est important de définir un budget fixe pour parier et s’y tenir, pour éviter les pertes excessives. Cela vous aide à garder le contrôle de vos mises et à prolonger votre temps de jeu.
Avant de commencer à jouer, il est essentiel de bien connaître les règles des jeux. Qu’il s’agisse d’une machine à sous ou d’un jeu de table, comprendre les mécaniques et les stratégies de jeu vous donnera un avantage. De nombreux casinos en ligne proposent des versions gratuites de jeux pour que vous puissiez vous entraîner.
Rien ne vaut les bonus. Assurez-vous de profiter des offres promotionnelles et des bonus disponibles dans votre casino en ligne choisi. Cela peut être un excellent moyen d’augmenter vos fonds disponibles et d’explorer davantage de jeux sans trop de risque.
Le jeu responsable est un aspect crucial de l’expérience dans un casino en ligne. Il est important de jouer de manière responsable pour éviter les problèmes de dépendance et les pertes financières.
Il est conseillé de fixer des limites de temps et d’argent avant de commencer à jouer. Cela vous aide à garder le contrôle de votre expérience de jeu et à éviter les excès. Notez la durée de votre session de jeu et soyez conscient des seuils de pertes que vous vous êtes fixés.
Prendre des pauses régulières est essentiel lorsque vous jouez en ligne. Cela vous permet de garder un esprit frais et d’éviter de prendre des décisions impulsives. Quand vous sentez que vous perdez le contrôle, faites une pause.
Il est essentiel de ne pas hésiter à demander de l’aide si vous pensez que votre comportement de jeu devient problématique. De nombreux casinos en ligne offrent des ressources et des contacts pour les joueurs qui ont besoin d’assistance.
En résumé, le meilleur casino en ligne est une plateforme qui combine des jeux, des promotions et une sécurité de premier ordre. Il offre aux joueurs la possibilité de vivre l’excitation du jeu tout en restant en sécurité. Avec la multitude d’options disponibles, il est important de faire des recherches approfondies et de choisir un casino qui répond à vos besoins.
En prenant en considération les critères de sélection, les caractéristiques, et les meilleures pratiques de jeu responsable, vous pouvez maximiser votre expérience de jeu en ligne. Profitez de l’excitation et des avantages que les casinos en ligne ont à offrir, tout en jouant de manière réfléchie et responsable.
Un casino en ligne est une plateforme numérique où les joueurs peuvent jouer à des jeux de casino comme les machines à sous, le poker, et la roulette sur Internet.
Pour choisir un bon casino en ligne, vérifiez sa licence, sa réputation, la variété de ses jeux, et ses options de paiement et de retrait.
Oui, tant qu’ils sont licenciés et réglementés par des autorités compétentes qui garantissent la sécurité et la protection des joueurs.
Oui, il est possible de gagner de l’argent dans un casino en ligne, mais cela dépend de la chance et de votre stratégie de jeu.
Vous pouvez trouver une variété de jeux, notamment des machines à sous, des jeux de table comme le blackjack et la roulette, et des jeux en direct.
La légalité de jouer dans un casino en ligne dépend de la législation de votre pays ou région. Il est important de vérifier la réglementation qui s’applique à vous.
Les casinos en ligne proposent différentes méthodes de retrait. Vérifiez les options disponibles sur le site et choisissez celle qui vous convient le mieux.
Oui, la plupart des casinos en ligne imposent des limites de dépôt et de retrait. Ces limites varient d’un Meilleur casino en ligne établissement à l’autre.
]]>