/* 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":14144,"date":"2026-05-08T12:15:30","date_gmt":"2026-05-08T12:15:30","guid":{"rendered":"https:\/\/klecet.edu.in\/alumni\/?p=14144"},"modified":"2026-05-08T12:15:31","modified_gmt":"2026-05-08T12:15:31","slug":"best-ontario-online-casinos-2026","status":"publish","type":"post","link":"http:\/\/klecet.edu.in\/alumni\/best-ontario-online-casinos-2026\/","title":{"rendered":"Best Ontario online casinos 2026"},"content":{"rendered":"

For discover this<\/a> each platform has minimum deposit criteria of about CAD 13.93, even if that it change according to the casino and you can campaign. Doing a keen Ontario online casino membership is a simple process that will give you a safe and you can court solution to play. Leading platforms play with Random Count Generators (RNGs) you to independent analysis labs on a regular basis certify. It lay specific laws to have website traffic and prevent unwanted availability to the casino\u2019s server. At the same time, players is also look at iGaming Ontario\u2019s official list of regulated Ontario gambling sites you to list all registered operators. It guarantees game integrity, inhibits crime, prevents underage availability, and you can covers personal information.<\/p>\n

Ontario casino sign up bonus promotions will be the most popular kind of out of bonus you\u2019ll find. Bringing exact details about casino bonus Ontario also offers and how it works isn\u2019t an easy task. I always prompt the new players to try game for free prior to gambling real money, and you can Ruby Luck makes this simple with its demo mode option. Normal play unlocks big perks thanks to its half a dozen-tier loyalty system, obtainable to the each other Desktop and you can mobile phones via the easy Jackpot City To the casino app. I took a closer look at the iGaming Ontario\u2019s (iGO) list of regulated casinos, and while it was difficult to prefer just about three, such Ontario online casino sites very stood away.<\/p>\n

A good FAQ section is even a plus; it\u2019s best for those people short questions. Credible customer service makes or crack your casino feel. But not, on top, certain casinos do give loyal apps that have more has. An informed Ontario casinos give game out of big names such as Microgaming, NetEnt, and you can Evolution Gambling, and that promises quality and you can fair play. Whether or not you\u2019re also to the ports, blackjack, or live broker game, diversity is vital to staying things interesting. Welcome bonuses, no-deposit also offers, and you can reload bonuses are all one of Ontario casinos, but they tend to come with wagering criteria.<\/p>\n

Royal Vegas is the perfect options for those who\u2019re also looking for a deck that offers a feeling you to is similar to a land-based casino. As well as advanced research protection, fair gambling criteria, and you can a wide range of ports and you can table game, Ruby Luck is even known for its bonuses and ongoing perks to have loyal players. After you\u2019re also seeking the best payout online casino Ontario, Spin Casino is an excellent options, giving each other prompt winnings and you can a wide variety of commission steps. Moreover, certain casinos make it users to use its account thanks to a web browser, enabling quick access so you can game or other has. Quality platforms have to work together that have credible suppliers that have based themselves on the gambling industry as the company out of high-quality things. All the gambling and you can gambling platforms have to receive a keen iGaming Ontario license; if not, it are still unreachable or illegal to have players on the province, even if it work in Canada.<\/p>\n

The quality of commission solutions is a make the-or-crack basis to have casinos. Table game give a more old-fashioned feel, giving classics such as roulette, blackjack, poker, and you can baccarat. Winnings is granted to have matching symbols and you can activating has, such as free spins, special wilds, choosing cycles, flowing reels, and you can progressive jackpots. I pay attention to the attached fine print, as well as wagering criteria, game restrictions, win restrictions, and you can expiration dates. As we tend to rather have casinos that have step 1,000+ game, i as well as rating certain that have shorter collections based on its premium quality, such as a top win rate or massive jackpots.<\/p>\n

Ontario registered casinos just make it availability from within the new province, so you may not be able to log in whilst travelling worldwide. It\u2019s easy to score wrapped up however, make sure to play responsibly. Down wagering criteria mean you\u2019ll be able to turn you to bonus to the bucks more easily, so those people are worth looking out for!<\/p>\n

But not, we are always serious about looking for not only the best of him or her and also people who are compliant and have a valid license. This gives you a clearer understanding of the new strengths and weaknesses of your platform and you can whether they do as they claim to do. One thing that of many players tend to neglect ‘s the platform’s reputation. Check to see if your site is simple so you can navigate and you can if your mobile feel is seamless to have gambling on the go. Before making a deposit, it\u2019s advisable to test out the new casino site or mobile app first.<\/p>\n

Ontario has created in itself as the Canada\u2019s very regulated and you can organized online gambling industry, giving a safe and you can court ecosystem to have players. To find out more, you can also understand our loyal guide to in control gambling and you can get well-told about the steps you may have to take if the a good condition takes place. Players in the Ontario have access to a safer, government-regulated industry that have strict laws to the in control gambling, transparency, and you can fair play. It goes without saying you to Ontario\u2019s online casinos give plenty of bonus opportunities, try to read the fine print prior to saying! To have lingering perks, Cashback bonuses is a favourite one of normal players. But not, there is still a variety of bonuses and you can promotions being offered at the Ontarian online casinos.<\/p>\n

When choosing your dream online casino in the Ontario, be sure to find a website that offers a variety of videos ports, table game and you can live casino options. With that, you\u2019re also ready to go and are now willing to initiate to play your favourite game online. But you is to next visit you to respective authority\u2019s site and check that the online casino is listed less than its registered entities. For those who\u2019re also wondering how to place a regulated online casino in the Ontario, the first step is to find licensing advice, that’s basically displayed at the bottom of your site\u2019s homepage.<\/p>\n

But not, certain casinos take up so you can five days so you can process the new withdrawal, so check out the fine print. Ontario gambling company tend to process withdrawals in this hours based on the new fine print on most sites. Always check out the full fine print, as the wagering criteria and you can game restrictions still apply. Ontario online casino bonuses generally work on matched dumps, free spins that have fair wagering criteria, and you can loyalty apps instead of the no-deposit bonuses popular in some most other jurisdictions. Ontario\u2019s regulatory structure cities strict criteria about how bonuses will be claimed and you can organized. You could play knowing that the new casino is guilty so you can provincial authorities, and that your chances are fair, your bank account is safe, and your information is encrypted.<\/p>\n

The platform shines, especially when you have live broker game, giving over eight hundred options. Ontario online casinos give players a competitive border that have local platforms, authorities control less than iGaming Ontario, and you can access to leading commission solutions such as Interac. Total, it\u2019s a soft and flexible feel that makes PlayOJO our wade-so you can online casino find to have ports. Our best find, Jackpot City, is one of the best Ontario online casinos giving a wide type of ports, table game, and you can live broker experience that run smoothly \u2013 it checks all the right packets!<\/p>\n

It\u2019s a direct bank import service you to doesn\u2019t include the transparency of your borrowing or debit card however, links your account so you can a one-date commission, which is lay as the an ongoing service. That it popular Ontario-favourite commission approach also offers a user-amicable approach that allows first dumps and you can quick withdrawals directly from and to a player\u2019s savings account rather than compromising the new membership. Such borrowing and you can debit card options became specifically popular on the outburst of your Sites day and age within the 2000s, and their continued commission update options has cemented him or her at the the upper list to this day. The convenience of gambling apps mode players can create a profile and enjoy its favourite game whenever and you can anywhere when you are saving its advances and you can going for immense bonuses, promotions and you can VIP bar tournaments.<\/p>\n","protected":false},"excerpt":{"rendered":"

For discover this each platform has minimum deposit criteria of about CAD 13.93, even if that it change according to the casino and you can campaign. Doing a keen Ontario online casino membership is a simple process that will give you a safe and you can court solution to play.\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-14144","post","type-post","status-publish","format-standard","hentry","category-uncategorized"],"_links":{"self":[{"href":"http:\/\/klecet.edu.in\/alumni\/wp-json\/wp\/v2\/posts\/14144","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=14144"}],"version-history":[{"count":1,"href":"http:\/\/klecet.edu.in\/alumni\/wp-json\/wp\/v2\/posts\/14144\/revisions"}],"predecessor-version":[{"id":14145,"href":"http:\/\/klecet.edu.in\/alumni\/wp-json\/wp\/v2\/posts\/14144\/revisions\/14145"}],"wp:attachment":[{"href":"http:\/\/klecet.edu.in\/alumni\/wp-json\/wp\/v2\/media?parent=14144"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"http:\/\/klecet.edu.in\/alumni\/wp-json\/wp\/v2\/categories?post=14144"},{"taxonomy":"post_tag","embeddable":true,"href":"http:\/\/klecet.edu.in\/alumni\/wp-json\/wp\/v2\/tags?post=14144"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}