/* 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":142861,"date":"2026-06-12T10:13:29","date_gmt":"2026-06-12T10:13:29","guid":{"rendered":"https:\/\/klecet.edu.in\/alumni\/?p=142861"},"modified":"2026-06-12T10:13:29","modified_gmt":"2026-06-12T10:13:29","slug":"kingmaker-casino-fresh-player-promotions-in-canada","status":"publish","type":"post","link":"http:\/\/klecet.edu.in\/alumni\/kingmaker-casino-fresh-player-promotions-in-canada\/","title":{"rendered":"Kingmaker Casino Fresh Player Promotions in Canada"},"content":{"rendered":"
\n\"Kingmaker<\/p>\n

New at Kingmaker Casino? Players from Canada receive a true royal welcome here https:\/\/kingmaker-casino.eu\/en-ca\/<\/a>. We realize a good start is important, so we’ve put together a selection of initial bonuses to provide you with additional gaming time and greater enjoyment. Join and you will see true value waiting, tailored for players in Canada. Our promotions are built to be beneficial, with straightforward conditions and a substantial boost for your first games with us.<\/p>\n

Welcome Bonus Overview<\/h2>\n

The key welcome promotion is a deposit matching bonus divided among your opening three deposits. This is the center of our offer for new members. Every deposit earns a percentage matched, boosting your bankroll. You can find the specific match percentages and caps on our offers page. The principle is easy: we provide additional funds so you start with a larger balance to explore our games. It is a straightforward method to gain more opportunities to find your favorite games, and possibly get a good win at the start.<\/p>\n

\"\u0e40\u0e01\u0e21\u0e2a\u0e35<\/p>\n

To receive this introductory package, you need to be a new player living in Canada. Every bonus level demands a qualifying minimum deposit. The bonus funds has wagering requirements, all laid out in the promotion’s terms. We’re clear about this because you should know exactly how to convert bonus funds into withdrawable funds. This arrangement offers you a longer, more rewarding playing session straight away, starting off your time at Kingmaker properly.<\/p>\n

Playthrough Rules Explained<\/h2>\n

If you’re using casino bonuses, you must understand wagering requirements. This holds at Kingmaker Casino too. In short, a wagering requirement represents a value that tells you how many times you must bet the bonus amount (and sometimes the deposit) before you can withdraw your winnings. Let’s say you obtain a $10 bonus with a 30x requirement. You’d need to place $300 in total bets. We set these requirements to be fair and in line with what you will encounter at other Canadian online casinos.<\/p>\n

Not all games count the same toward these rules. Slots usually contribute 100%, but table games like blackjack or roulette often contribute less, sometimes even 0%. You’ll find the full details for each promotion in its terms and conditions. We’re not keeping secret the rules. We expect you to know them, so you can arrange your play and successfully turn bonus money into cash you can withdraw.<\/p>\n

Exclusive Offers for Canadian Players<\/h2>\n

We recognize our Canadian players enjoy their own tastes. That’s why we develop exclusive promotions tailored for you. This could include bonuses for Canadian holidays, free spins on slots with local themes, or special deposit deals that use Canadian Dollars (CAD) to skip exchange charges. We aim to give you value that actually suits, not some generic promotion made for everyone.<\/p>\n

These special offers are how we recognize our Canadian players. You might spot promos for the NHL playoffs, Canadian Thanksgiving, or Canada Day. We also adjust our payment method bonuses around options Canadians prefer, like Interac. To catch these deals, sign up for our email updates and take a regular glance at the promotions page on our site. That way, you won’t miss an offer made with you in mind.<\/p>\n

Free Bonus Deals<\/h2>\n

Want to test the casino without an initial deposit? We sometimes run no deposit bonus offers. These grant you a little bonus cash or a couple of free spins merely for signing up and verifying your account. No initial deposit is required. View it as our gratitude for joining, and a safe way to sample our games. As a Canadian player, you can utilize it to familiarize yourself with our site and the way the games operate.<\/p>\n

Bear in mind, these free offers include rules. Any winnings from a no deposit bonus will have playthrough requirements. There’s also usually a cap on how much you can withdraw from these promotions. We present these conditions transparently so you can play without surprises. Watch our promotions page and your inbox, because these handy deals for Canadian players appear for short times, often associated with holidays or special events.<\/p>\n

Complimentary Spins for New Members<\/h2>\n

If you enjoy slots, our new player free spins packages will grab your attention. They often are paired with the welcome deposit bonuses, or sometimes emerge as their own promotion. These spins usually are valid for specific, popular slot games from our collection. They’re a wonderful way to jump into slot action without dipping into your deposit balance right away. And since you can win real money from them, they add a nice dash of excitement to your first visits.<\/p>\n

How you receive the spins can differ. Sometimes they all arrive at once, other times they arrive in your account over a few days. The eligible slot games are always listed, so you can go directly to the titles we’ve selected for our Canadian players. Winnings from free spins have wagering requirements, like most bonuses. We set these terms reasonable, so the spins actually seem like a reward when you’re starting out.<\/p>\n

How to Claim Your Bonuses<\/h2>\n

Getting your welcome bonuses at Kingmaker Casino is straightforward. Initially, create an account and verify it, making sure your location is set to Canada. When you log in, you may need to actively choose the promotion in the \u2018Bonuses\u2019 area or when you make a deposit. For automatic offers, the bonus cash or spins will show up right after you make the qualifying deposit or complete the required action.<\/p>\n

For a smooth experience, just follow these steps:<\/p>\n

    \n
  1. Create for a new account with correct details.<\/li>\n
  2. Confirm your email and account when prompted.<\/li>\n
  3. Go to the cashier and check the \u2018Promotions\u2019 tab for available offers.<\/li>\n
  4. Choose to participate if needed, then make a deposit using a method that works in Canada.<\/li>\n
  5. Remember to enter a bonus code if it is required.<\/li>\n<\/ol>\n

    If you hit a snag, our customer support team can assist you sort it out and guarantee you get the bonuses you are entitled to.<\/p>\n

    Common Questions (FAQ)<\/h2>\n

    Find answers to inquiries we often get from new Canadian players about our promotions. This FAQ provides you with quick answers on the main points. For the full details, always refer to the terms on our site. If you can’t find your question here, our support team is available to assist.<\/p>\n

    Common Bonus Questions<\/h3>\n

    These answers address the essentials of how bonuses work at Kingmaker Casino, from who can claim them to how you activate them.<\/p>\n

    Who can get new player promotions?<\/h4>\n

    Generally, you need to be a new player who is based in Canada and is old enough to gamble legally in your province. Every promotion states its own full eligibility rules in its terms.<\/p>\n

    Can I use multiple bonuses at the same time?<\/h4>\n

    No, you typically can only have one active bonus on your account at a time. You need to complete the wagering requirements for your current bonus before you can claim a new one.<\/p>\n

    Technical & Claiming Issues<\/h3>\n

    This section covers practical problems you could face when trying to claim a bonus.<\/p>\n

    My bonus failed to activate after my deposit. What should I do?<\/h4>\n

    First, confirm that you opted-in if the offer required it. Check your deposit met the minimum amount and you used a payment method that counts. If everything looks correct, get in touch with our live support team. Share the details and they’ll resolve it for you.<\/p>\n

    Is there a deadline to use my bonus or free spins?<\/h4>\n

    Yes. Bonuses and any free spins that are included always have an expiry date. You generally have between 7 and 30 days to use them after they’re credited. The exact time frame is stated in the promotion’s terms and conditions.<\/p>\n<\/div>\n","protected":false},"excerpt":{"rendered":"

    New at Kingmaker Casino? Players from Canada receive a true royal welcome here https:\/\/kingmaker-casino.eu\/en-ca\/. We realize a good start is important, so we’ve put together a selection of initial bonuses to provide you with additional gaming time and greater enjoyment. Join and you will see true value waiting, tailored for\u2026<\/p>\n

    Continue reading<\/span><\/i><\/a><\/p>\n","protected":false},"author":1,"featured_media":0,"comment_status":"closed","ping_status":"open","sticky":false,"template":"","format":"standard","meta":{"footnotes":""},"categories":[1],"tags":[],"class_list":["post-142861","post","type-post","status-publish","format-standard","hentry","category-uncategorized"],"_links":{"self":[{"href":"http:\/\/klecet.edu.in\/alumni\/wp-json\/wp\/v2\/posts\/142861","targetHints":{"allow":["GET"]}}],"collection":[{"href":"http:\/\/klecet.edu.in\/alumni\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"http:\/\/klecet.edu.in\/alumni\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"http:\/\/klecet.edu.in\/alumni\/wp-json\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"http:\/\/klecet.edu.in\/alumni\/wp-json\/wp\/v2\/comments?post=142861"}],"version-history":[{"count":1,"href":"http:\/\/klecet.edu.in\/alumni\/wp-json\/wp\/v2\/posts\/142861\/revisions"}],"predecessor-version":[{"id":142862,"href":"http:\/\/klecet.edu.in\/alumni\/wp-json\/wp\/v2\/posts\/142861\/revisions\/142862"}],"wp:attachment":[{"href":"http:\/\/klecet.edu.in\/alumni\/wp-json\/wp\/v2\/media?parent=142861"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"http:\/\/klecet.edu.in\/alumni\/wp-json\/wp\/v2\/categories?post=142861"},{"taxonomy":"post_tag","embeddable":true,"href":"http:\/\/klecet.edu.in\/alumni\/wp-json\/wp\/v2\/tags?post=142861"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}