/* Widget Name: Button Description: Create a custom button with flexible styling, icon support, and click tracking functionality. Author: SiteOrigin Author URI: https://siteorigin.com Documentation: https://siteorigin.com/widgets-bundle/button-widget-documentation/ Keywords: event, icon, link */ class SiteOrigin_Widget_Button_Widget extends SiteOrigin_Widget { public function __construct() { parent::__construct( 'sow-button', __( 'SiteOrigin Button', 'so-widgets-bundle' ), array( 'description' => __( 'Create a custom button with flexible styling, icon support, and click tracking functionality.', 'so-widgets-bundle' ), 'help' => 'https://siteorigin.com/widgets-bundle/button-widget-documentation/', ), array( ), false, plugin_dir_path( __FILE__ ) ); } public function get_settings_form() { return array( 'responsive_breakpoint' => array( 'type' => 'measurement', 'label' => __( 'Responsive Breakpoint', 'so-widgets-bundle' ), 'default' => '780px', 'description' => __( 'This setting controls when the Mobile Align setting will be used. The default value is 780px.', 'so-widgets-bundle' ), ), ); } public function initialize() { $this->register_frontend_styles( array( array( 'sow-button-base', plugin_dir_url( __FILE__ ) . 'css/style.css', array(), SOW_BUNDLE_VERSION, ), ) ); } public function get_widget_form() { return array( 'text' => array( 'type' => 'text', 'label' => __( 'Button Text', 'so-widgets-bundle' ), ), 'url' => array( 'type' => 'link', 'label' => __( 'Destination URL', 'so-widgets-bundle' ), 'allow_shortcode' => true, ), 'new_window' => array( 'type' => 'checkbox', 'default' => false, 'label' => __( 'Open in a new window', 'so-widgets-bundle' ), ), 'download' => array( 'type' => 'checkbox', 'default' => false, 'label' => __( 'Download', 'so-widgets-bundle' ), 'description' => __( 'The Destination URL will be downloaded when a user clicks on the button.', 'so-widgets-bundle' ), ), 'button_icon' => array( 'type' => 'section', 'label' => __( 'Icon', 'so-widgets-bundle' ), 'fields' => array( 'icon_selected' => array( 'type' => 'icon', 'label' => __( 'Icon', 'so-widgets-bundle' ), ), 'icon_color' => array( 'type' => 'color', 'label' => __( 'Icon Color', 'so-widgets-bundle' ), ), 'icon' => array( 'type' => 'media', 'label' => __( 'Image Icon', 'so-widgets-bundle' ), 'description' => __( 'Replaces the icon with your own image icon.', 'so-widgets-bundle' ), ), 'icon_placement' => array( 'type' => 'select', 'label' => __( 'Icon Placement', 'so-widgets-bundle' ), 'default' => 'left', 'options' => array( 'top' => __( 'Top', 'so-widgets-bundle' ), 'right' => __( 'Right', 'so-widgets-bundle' ), 'bottom' => __( 'Bottom', 'so-widgets-bundle' ), 'left' => __( 'Left', 'so-widgets-bundle' ), ), ), ), ), 'design' => array( 'type' => 'section', 'label' => __( 'Design and Layout', 'so-widgets-bundle' ), 'hide' => true, 'fields' => array( 'width' => array( 'type' => 'measurement', 'label' => __( 'Width', 'so-widgets-bundle' ), 'description' => __( 'Leave blank to let the button resize according to content.', 'so-widgets-bundle' ), ), 'align' => array( 'type' => 'select', 'label' => __( 'Align', 'so-widgets-bundle' ), 'default' => 'center', 'options' => array( 'left' => __( 'Left', 'so-widgets-bundle' ), 'right' => __( 'Right', 'so-widgets-bundle' ), 'center' => __( 'Center', 'so-widgets-bundle' ), 'justify' => __( 'Full Width', 'so-widgets-bundle' ), ), ), 'mobile_align' => array( 'type' => 'select', 'label' => __( 'Mobile Align', 'so-widgets-bundle' ), 'default' => 'center', 'options' => array( 'left' => __( 'Left', 'so-widgets-bundle' ), 'right' => __( 'Right', 'so-widgets-bundle' ), 'center' => __( 'Center', 'so-widgets-bundle' ), 'justify' => __( 'Full Width', 'so-widgets-bundle' ), ), ), 'theme' => array( 'type' => 'select', 'label' => __( 'Button Theme', 'so-widgets-bundle' ), 'default' => 'flat', 'options' => array( 'atom' => __( 'Atom', 'so-widgets-bundle' ), 'flat' => __( 'Flat', 'so-widgets-bundle' ), 'wire' => __( 'Wire', 'so-widgets-bundle' ), ), ), 'button_color' => array( 'type' => 'color', 'label' => __( 'Button Color', 'so-widgets-bundle' ), ), 'text_color' => array( 'type' => 'color', 'label' => __( 'Text Color', 'so-widgets-bundle' ), ), 'hover' => array( 'type' => 'checkbox', 'default' => true, 'label' => __( 'Use hover effects', 'so-widgets-bundle' ), 'state_emitter' => array( 'callback' => 'conditional', 'args' => array( 'hover[show]: val', 'hover[hide]: ! val', ), ), ), 'hover_background_color' => array( 'type' => 'color', 'label' => __( 'Hover Background Color', 'so-widgets-bundle' ), 'state_handler' => array( 'hover[show]' => array( 'show' ), 'hover[hide]' => array( 'hide' ), ), ), 'hover_text_color' => array( 'type' => 'color', 'label' => __( 'Hover Text Color', 'so-widgets-bundle' ), 'state_handler' => array( 'hover[show]' => array( 'show' ), 'hover[hide]' => array( 'hide' ), ), ), 'font' => array( 'type' => 'font', 'label' => __( 'Font', 'so-widgets-bundle' ), 'default' => 'default', ), 'font_size' => array( 'type' => 'measurement', 'label' => __( 'Font Size', 'so-widgets-bundle' ), 'default' => '1em', ), 'icon_size' => array( 'type' => 'measurement', 'label' => __( 'Icon Size', 'so-widgets-bundle' ), 'default' => '1.3em', ), 'padding' => array( 'type' => 'measurement', 'label' => __( 'Padding', 'so-widgets-bundle' ), 'default' => '1em', ), 'rounding' => array( 'type' => 'multi-measurement', 'label' => __( 'Rounding', 'so-widgets-bundle' ), 'default' => '0.25em 0.25em 0.25em 0.25em', 'measurements' => array( 'top' => array( 'label' => __( 'Top', 'so-widgets-bundle' ), ), 'right' => array( 'label' => __( 'Right', 'so-widgets-bundle' ), ), 'bottom' => array( 'label' => __( 'Bottom', 'so-widgets-bundle' ), ), 'left' => array( 'label' => __( 'Left', 'so-widgets-bundle' ), ), ), ), ), ), 'attributes' => array( 'type' => 'section', 'label' => __( 'Other Attributes and SEO', 'so-widgets-bundle' ), 'hide' => true, 'fields' => array( 'id' => array( 'type' => 'text', 'label' => __( 'Button ID', 'so-widgets-bundle' ), 'description' => __( 'An ID attribute allows you to target this button in JavaScript.', 'so-widgets-bundle' ), ), 'classes' => array( 'type' => 'text', 'label' => __( 'Button Classes', 'so-widgets-bundle' ), 'description' => __( 'Additional CSS classes added to the button link.', 'so-widgets-bundle' ), ), 'title' => array( 'type' => 'text', 'label' => __( 'Title Attribute', 'so-widgets-bundle' ), 'description' => __( 'Adds a title attribute to the button link.', 'so-widgets-bundle' ), ), 'on_click' => array( 'type' => 'text', 'label' => __( 'Onclick', 'so-widgets-bundle' ), 'description' => __( 'Run this JavaScript when the button is clicked. Ideal for tracking.', 'so-widgets-bundle' ), 'onclick' => true, ), 'rel' => array( 'type' => 'text', 'label' => __( 'Rel Attribute', 'so-widgets-bundle' ), 'description' => __( 'Adds a rel attribute to the button link.', 'so-widgets-bundle' ), ), ), ), ); } public function get_style_name( $instance ) { if ( empty( $instance['design']['theme'] ) ) { return 'atom'; } return $instance['design']['theme']; } /** * Get the variables for the Button Widget. * * @return array */ public function get_template_variables( $instance, $args ) { $button_attributes = array(); $attributes = $instance['attributes']; $classes = ! empty( $attributes['classes'] ) ? $attributes['classes'] : ''; if ( ! empty( $classes ) ) { $classes .= ' '; } $classes .= 'sowb-button ow-icon-placement-' . $instance['button_icon']['icon_placement']; if ( ! empty( $instance['design']['hover'] ) ) { $classes .= ' ow-button-hover'; } $button_attributes['class'] = implode( ' ', array_map( 'sanitize_html_class', explode( ' ', $classes ) ) ); if ( ! empty( $instance['new_window'] ) ) { $button_attributes['target'] = '_blank'; $button_attributes['rel'] = 'noopener noreferrer'; } if ( ! empty( $instance['download'] ) ) { $button_attributes['download'] = null; } if ( ! empty( $attributes['id'] ) ) { $button_attributes['id'] = $attributes['id']; } if ( ! empty( $attributes['title'] ) ) { $button_attributes['title'] = $attributes['title']; } if ( ! empty( $attributes['rel'] ) ) { if ( isset( $button_attributes['rel'] ) ) { $button_attributes['rel'] .= " $attributes[rel]"; } else { $button_attributes['rel'] = $attributes['rel']; } } $icon_image_url = ''; if ( ! empty( $instance['button_icon']['icon'] ) ) { $attachment = wp_get_attachment_image_src( $instance['button_icon']['icon'] ); if ( ! empty( $attachment ) ) { $icon_image_url = $attachment[0]; } } return array( 'button_attributes' => apply_filters( 'siteorigin_widgets_button_attributes', $button_attributes, $instance ), 'href' => ! empty( $instance['url'] ) ? $instance['url'] : '', 'on_click' => ! empty( $attributes['on_click'] ) ? $attributes['on_click'] : '', 'align' => $instance['design']['align'], 'icon_image_url' => $icon_image_url, 'icon' => $instance['button_icon']['icon_selected'], 'icon_color' => $instance['button_icon']['icon_color'], 'text' => $instance['text'], ); } /** * Get the variables that we'll be injecting into the less stylesheet. * * @return array */ public function get_less_variables( $instance ) { if ( empty( $instance ) || empty( $instance['design'] ) ) { return array(); } $text_color = isset( $instance['design']['text_color'] ) ? $instance['design']['text_color'] : ''; $button_color = isset( $instance['design']['button_color'] ) ? $instance['design']['button_color'] : ''; $less_vars = array( 'button_width' => isset( $instance['design']['width'] ) ? $instance['design']['width'] : '', 'button_color' => $button_color, 'text_color' => $text_color, 'icon_size' => ! empty( $instance['design']['icon_size'] ) ? $instance['design']['icon_size'] : '1.3em', 'hover_text_color' => ! empty( $instance['design']['hover_text_color'] ) ? $instance['design']['hover_text_color'] : $text_color, 'hover_background_color' => ! empty( $instance['design']['hover_background_color'] ) ? $instance['design']['hover_background_color'] : $button_color, 'font_size' => isset( $instance['design']['font_size'] ) ? $instance['design']['font_size'] : '', 'rounding' => isset( $instance['design']['rounding'] ) ? $instance['design']['rounding'] : '', 'padding' => isset( $instance['design']['padding'] ) ? $instance['design']['padding'] : '', 'has_text' => empty( $instance['text'] ) ? 'false' : 'true', 'responsive_breakpoint' => $this->get_global_settings( 'responsive_breakpoint' ), 'align' => ! empty( $instance['design']['align'] ) ? $instance['design']['align'] : 'center', 'mobile_align' => ! empty( $instance['design']['mobile_align'] ) ? $instance['design']['mobile_align'] : 'center', 'has_button_icon' => empty( $instance['button_icon']['icon_selected'] ) ? 'false' : 'true', ); if ( ! empty( $instance['design']['font'] ) ) { $font = siteorigin_widget_get_font( $instance['design']['font'] ); $less_vars['button_font'] = $font['family']; if ( ! empty( $font['weight'] ) ) { $less_vars['button_font_weight'] = $font['weight_raw']; $less_vars['button_font_style'] = $font['style']; } } return $less_vars; } /** * Make sure the instance is the most up to date version. * * @return mixed */ public function modify_instance( $instance ) { if ( empty( $instance ) ) { return array(); } $migrate_props = array( 'button_icon' => array( 'icon_selected', 'icon_color', 'icon', ), 'design' => array( 'align', 'theme', 'button_color', 'text_color', 'hover', 'hover_text_color', 'hover_background_color', 'font_size', 'rounding', 'padding', ), 'attributes' => array( 'id', ), ); foreach ( $migrate_props as $prop => $sub_props ) { if ( empty( $instance[ $prop ] ) ) { $instance[ $prop ] = array(); foreach ( $sub_props as $sub_prop ) { if ( isset( $instance[ $sub_prop ] ) ) { $instance[ $prop ][ $sub_prop ] = $instance[ $sub_prop ]; unset( $instance[ $sub_prop ] ); } } } } // Migrate onclick setting to prevent Wordfence flag. if ( ! empty( $instance['attributes'] ) && ! empty( $instance['attributes']['onclick'] ) ) { $instance['attributes']['on_click'] = $instance['attributes']['onclick']; } // If the mobile_align setting isn't set, set it to the same value as the align value. if ( ! empty( $instance['design'] ) && ! empty( $instance['design']['align'] ) && empty( $instance['design']['mobile_align'] ) ) { $instance['design']['mobile_align'] = $instance['design']['align']; } // Migrate predefined settings to more customizable settings. if ( ! empty( $instance['design']['font_size'] ) && is_numeric( $instance['design']['font_size'] ) ) { $instance['design']['font_size'] .= 'em'; } if ( ! empty( $instance['design']['padding'] ) && is_numeric( $instance['design']['padding'] ) ) { $instance['design']['padding'] .= 'em'; } if ( ! empty( $instance['design']['rounding'] ) && is_numeric( $instance['design']['rounding'] ) ) { $instance['design']['rounding'] = $instance['design']['rounding'] . 'em ' . $instance['design']['rounding'] . 'em ' . $instance['design']['rounding'] . 'em ' . $instance['design']['rounding'] . 'em'; } if ( empty( $instance['design']['icon_size'] ) ) { $instance['design']['icon_size'] = '1.3em'; } return $instance; } public function get_form_teaser() { if ( class_exists( 'SiteOrigin_Premium' ) ) { return false; } return array( sprintf( __( 'Add a beautiful tooltip to the Button Widget with %sSiteOrigin Premium%s', 'so-widgets-bundle' ), '', '' ), ); } } siteorigin_widget_register( 'sow-button', __FILE__, 'SiteOrigin_Widget_Button_Widget' );{"id":154158,"date":"2026-06-15T03:10:38","date_gmt":"2026-06-15T03:10:38","guid":{"rendered":"https:\/\/klecet.edu.in\/alumni\/?p=154158"},"modified":"2026-06-15T03:10:38","modified_gmt":"2026-06-15T03:10:38","slug":"la-fidelite-honoree-wintari-casino-reorganise-ses-niveaux-de-recompenses-en-belgique","status":"publish","type":"post","link":"http:\/\/klecet.edu.in\/alumni\/la-fidelite-honoree-wintari-casino-reorganise-ses-niveaux-de-recompenses-en-belgique\/","title":{"rendered":"La fid\u00e9lit\u00e9 honor\u00e9e : Wintari Casino r\u00e9organise ses niveaux de r\u00e9compenses en Belgique"},"content":{"rendered":"
\n\"Play<\/p>\n

Votre d\u00e9vouement vaut mieux qu’un simple merci wintari.eu<\/a>. Wintari Casino le appr\u00e9hende et d\u00e9voile aujourd’hui une refonte compl\u00e8te de son programme de loyaut\u00e9 pour ses joueurs belges. Cette r\u00e9organisation va bien plus loin qu’un rafra\u00eechissement esth\u00e9tique. Elle transforme la mani\u00e8re dont nous honorons votre pr\u00e9sence, pour la rendre plus enrichissante, plus lisible et bien plus int\u00e9ressante. Nous abandonnons une approche standard au profit d’une d\u00e9marche personnalis\u00e9e, o\u00f9 vos habitudes de jeu et votre assiduit\u00e9 d\u00e9terminent directement les privil\u00e8ges que vous percevez. L’objectif est \u00e9vident : que vous vous perceviez appr\u00e9ci\u00e9 \u00e0 chaque niveau, faisant de votre aventure chez Wintari un chemin o\u00f9 la constance est r\u00e9guli\u00e8rement et largement c\u00e9l\u00e9br\u00e9e.<\/p>\n

Dans quel but repenser un syst\u00e8me de fid\u00e9lit\u00e9 ?<\/h2>\n

Un programme de fid\u00e9lisation statique ne correspond plus aux joueurs d’aujourd’hui. \u00c0 l’\u00e9coute de les retours de notre communaut\u00e9 belge et examin\u00e9 les tendances du march\u00e9, une \u00e9vidence s’est impos\u00e9e. Les joueurs souhaitent une reconnaissance concr\u00e8te, des profits qu’ils peuvent utiliser sans d\u00e9lai et une progression qui a du sens. Notre ancien syst\u00e8me, acceptable mais sans personnalit\u00e9, ne r\u00e9pondait plus \u00e0 ces attentes. Nous souhaitions instaurer une plus grande justice, o\u00f9 la r\u00e9compense soit \u00e0 la hauteur de l’engagement, et proposer des avantages divers qui parlent \u00e0 tous les types de joueurs. Cette restructuration est notre r\u00e9ponse. Elle concr\u00e9tise notre volont\u00e9 de valoriser chaque mise, chaque tour de roue, chaque connexion comme un pas vers quelque chose de pris\u00e9.<\/p>\n

De nombreux principes ont guid\u00e9 cette refonte. L’acc\u00e8s doit \u00eatre simple. Les r\u00e8gles doivent \u00eatre claires. Les avantages doivent avoir une valeur r\u00e9elle. Nous avons observ\u00e9 que la complexit\u00e9 freinait l’adh\u00e9sion. D\u00e9sormais, tout est pens\u00e9 pour \u00eatre intuitif. Sur le march\u00e9 belge, contr\u00f4l\u00e9 avec rigueur, il nous paraissait essentiel d’aligner notre programme sur les standards \u00e9lev\u00e9s du jeu responsable. Nous y avons int\u00e9gr\u00e9 des m\u00e9canismes qui r\u00e9compensent le divertissement sans jamais pousser \u00e0 la surconsommation. Cette nouvelle architecture nous offre aussi une agilit\u00e9 accrue. Elle nous permettra de lancer plus facilement \u00e0 l’avenir des offres et \u00e9v\u00e9nements sp\u00e9ciaux, con\u00e7us sur mesure pour les go\u00fbts de notre public local.<\/p>\n

Les nouveaut\u00e9s majeures de la structure revisit\u00e9e<\/h2>\n

La nouvelle structure propose des changements concrets qui bouleversent en profondeur l’exp\u00e9rience de fid\u00e9lit\u00e9. Nous mettons en place d’abord une progression plus fluide et plus rapide. Accumuler des points, autrefois per\u00e7u comme une course de fond, devient un processus dynamique. Vous aurez la possibilit\u00e9 de booster votre statut gr\u00e2ce \u00e0 des \u00e9v\u00e9nements hebdomadaires ou mensuels. Ensuite, la personnalisation prend une place centrale. Vos r\u00e9compenses et vos offres sp\u00e9ciales s’ajusteront en fonction de votre historique, que votre passion aille aux machines \u00e0 sous, aux jeux de table ou au live.<\/p>\n

Un autre changement important touche les avantages eux-m\u00eames. Nous ajoutons des b\u00e9n\u00e9fices non-mon\u00e9taires et des exp\u00e9riences exclusives con\u00e7ues pour la communaut\u00e9 belge. La valeur ne se limite pas aux bonus ; elle se trouve aussi dans des moments privil\u00e9gi\u00e9s. Enfin, nous am\u00e9liorons la transparence. Vous aurezune vision parfaite et en direct de votre chemin vers le palier sup\u00e9rieur, du solde de vos points et de tous les avantages \u00e0 votre port\u00e9e. Cette clart\u00e9 totale a pour objectif \u00e0 construire une relation de confiance, o\u00f9 vous effectuez vos d\u00e9cisions en connaissance de cause.<\/p>\n

Les niveaux repens\u00e9s : de Novice \u00e0 Illustre<\/h3>\n

Notre programme revisit\u00e9 s’organise autour de quatre paliers principaux. Chaque nom \u00e9voque le prestige et l’engagement qu’il repr\u00e9sente. Le voyage commence au niveau Novice<\/strong>, con\u00e7u pour accueillir les nouveaux membres avec des premiers pas gratifiants. Vient ensuite le palier Habile<\/strong>, qui r\u00e9compense la r\u00e9gularit\u00e9 et l’exploration de notre catalogue de jeux. Le troisi\u00e8me niveau, \u00c9lite<\/strong>, est destin\u00e9 \u00e0 nos joueurs les plus assidus. Ils y trouvent des avantages significatifs et une attention particuli\u00e8re.<\/p>\n

Au sommet de notre pyramide se trouve le palier Illustre<\/strong>. Ce statut exclusif repr\u00e9sente la reconnaissance ultime de votre loyaut\u00e9. Il ouvre l’acc\u00e8s \u00e0 un service sur mesure, \u00e0 des cadeaux surprises de valeur, \u00e0 des invitations pour des \u00e9v\u00e9nements uniques et \u00e0 des taux de conversion de points exceptionnels. Chaque palier a \u00e9t\u00e9 calibr\u00e9 pour offrir un saut qualitatif bien perceptible. Monter d’un niveau doit rester un \u00e9v\u00e9nement marquant et d\u00e9sirable dans votre parcours.<\/p>\n

Avantages concrets \u00e0 chaque \u00e9tape<\/h3>\n

Que retire-t-on exactement en montant ces \u00e9chelons ? Les avantages \u00e9voluent de mani\u00e8re significative. Au d\u00e9part, vous jouissez d’un coefficient d’accumulation de points avantageux et d’bonus d’accueil am\u00e9lior\u00e9es. En montant en grade, les demandes de retrait sont trait\u00e9s en priorit\u00e9, les promotions de recharge s’am\u00e9liorent et les offres d’anniversaire gagnent en valeur. Les joueurs \u00c9lite et Illustre b\u00e9n\u00e9ficient quant \u00e0 eux d’un gestionnaire de compte attitr\u00e9, assurant d’un service hautement personnalis\u00e9.<\/p>\n

D\u00e9couvrez un tour d’horizon des avantages cl\u00e9s qui \u00e9voluent avec votre niveau :<\/p>\n