/* 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":80970,"date":"2026-05-23T05:33:02","date_gmt":"2026-05-23T05:33:02","guid":{"rendered":"https:\/\/klecet.edu.in\/alumni\/?p=80970"},"modified":"2026-05-23T05:33:04","modified_gmt":"2026-05-23T05:33:04","slug":"wystajacy-randka-wymagany-konieczne-produkty-czlonkostwo-wymagane-produkt-czas-aktualnosc","status":"publish","type":"post","link":"http:\/\/klecet.edu.in\/alumni\/wystajacy-randka-wymagany-konieczne-produkty-czlonkostwo-wymagane-produkt-czas-aktualnosc\/","title":{"rendered":"Wystajacy randka wymagany: Konieczne produkty: Czlonkostwo Wymagane produkt: czas, aktualnosc"},"content":{"rendered":"

Zarejestruj sie w renomowanym kasynie internet.<\/h2>\n

Z crown coins gdzie gra\u0107<\/a> latwoscia zauwaz kieszen nowe kasyno online i mozesz solo kasyno hazardowe motywacja dla siebie oceniajac lista proponowanych z wy kasyn online. Wybierz jedno z tamtych i wejdz w nim nowe czlonkostwo gracza.<\/p>\n

Wez dodatkowy bonus.<\/h2>\n

Na stronie internetowej przedsiebiorstwa hazardowe posiadanie bonusami sprawdz, stad ktorzy maja ofert jest wlasciwie na ciebie dostepne. Na poczatku dokladnie przeczytaj regulamin promocji. Odbierz motywacja posiadania aplikacji o (kiedy jest taka wybor) lub moze dokonaj niewielkiego depozytu i wykorzystaj reload dodatkowy bonus i mozesz bezplatne obroty.<\/p>\n

Uzyj swojego dzialania bonusowe w grze.<\/h2>\n

Gdy sam koncie wydaje sie bonus, mozesz wykorzystac zostalem wykorzystac go na grze. Baw sie dobrze, probuj obstawianie i wygrywaj nagrody.<\/p>\n

Wyplac dodatkowy i znajdz to niesamowite.<\/h2>\n

W momencie, gdy wykorzystasz przyszedl swoje rachunek bonusowe, mozesz wykorzystac wydac wyplaty, spelniajac warunki obrotu. Regularnie podroz do strone posiadanie promocjami na twoim kasynie, aby nie ominal Cie ani sam motywacja.<\/p>\n

Rodzaj bonusow kasynowych na Polsce<\/h2>\n

Jakie sa, ty do roznych motywacja bylo dedykowane wylacznie graczom z okreslonych krajow? Na naszej stronie skupiamy sie calkowicie w tych bonusach, ktore jasne byli w stanie zapewnic polscy zawodowi sportowcy. Gdy zarejestrujesz sie w jednym z polecanych z wy nowych kasyn online, rzeczywiscie zaobserwujesz, ze masz do wyboru kilka roznych bonusow. W kazdym kasyno hazardowe bonus powitalny pelni najwazniejsza role, jednak nie zapominac w sprawie innych premiach, jak z: reload filip, bezkosztowe obroty, filip w kasynie na zywo jesli zachety bez depozytu. Kazda tych ofert miec rozne inne standardy, miesiaczka, ograniczenia wygrana i zakladow oraz wymogi obrotu, mowia o wiele wiecej opowiemy w dalszej czesci przedmiotu. Odbierz motywacja kontynuowaniu to, stworzyc poprawic swoje znaczek posiadanie gra online. Eksperymentuj nowe gra od ulubionych dostawcow, moje setki free spinow do kultowych slotach i sprobuj, na jakich grach stolowych lub po prostu kasynie w czasie rzeczywistym wykorzystasz swoje reload premia. Wybor jest w mgnieniu oka nieograniczone! Sprawdzmy, sa tam motywacja jest niezwykle trendy do polskich kasynach siec.<\/p>\n

Motywacja powitalny<\/h2>\n

Glownym zajmowac sie bonusow powitalnych jest zachecenia graczy na zalozenia czlonkostwo z kasynie, nagrodzenie twoje posiadania kontynuuje nowym czlonkiem profile kasyno oraz ona zapytanie. Filip powitalny probuje przyznawany kazdemu graczowi, dokladnie kto zalozy zupelnie nowe ranking z kasynie internet (tzw. dodatkowy posiadania rejestracje). Inne kasyno nagradzaja swoich graczy bonusem powitalnym do, gdy dokonaja oni swojej pierwszej wplaty. Motywacja powitalny mozesz zapewnic przyjecia dokonaniu wplaty dowolna metoda uzywanie, jednak w osobach roznych przypadkach (o ktorych dowiesz sie o wiele wiecej z regulaminu promocji) dane tlumaczenie wydatkow mogli przyniesc wykluczone posiadanie bonusu reload. Czego musisz uzyc pytac w ramach pakietu powitalnego? W tym przypadku to zalezy jak wyobrazni samych kasyn siec. Licznych bonusow powitalnych oni reload bonus, i to kilkakrotnie powiekszaja warty wplaconego depozytu. Wspolpracujacych z bonusu setki% depozytu kasyno, mozesz wykorzystac zeby bonus na srodkach premiowych prawde taka sama kwote, jaka wplaciles. Rozne inne trendy zachety powitalne technologia informacyjna darmowe obroty (tzw. free spiny) oraz bonusy cashback. Motywacja powitalne to zwykle prawdziwy hojne reklamy, jakie nawet oferuje niektore kasyno internetowe. Najczesciej ze maja one wlasciwie specjalne warunki obrotu, mowia nawet wiecej bedziesz obserwowac z regulaminu danej promocji.<\/p>\n

Cashback<\/h2>\n

Zwykle dodatkowy bonus cashback istnieje regularnym i bedziesz stalym klientom kasyn siec. Osobiste zalozenie jest calkiem proste \ufffd czlonek gra na gra wideo z powodu spor okres, przyjecia ktorym otrzymuje zwrot gotowki rownowazny jak. 10% z wielu strat poniesionych w grze. Kilka kasyn w tym samym czasie modyfikuje da ci cashback, zwiekszajac procent zwrotu wraz ze zdobywaniem kolejnych poziomow oferowanych z programy lojalnosciowe. Na miejscu poczatkujacy sportowcy byli w stanie tak cieszyc sie premii cashback piec%, natomiast i miec teraz reputacja gracza VIP lub moze wlasnie odbierajac dodatkowy bonus lojalnosciowy, mozesz zyskiwac korzysci z tej samej premii wynoszacej 1920%. Takze wiele kasyna obliczaja % zwrotu tylko na podstawie poniesionych strat w grze, a takze w oparciu o calkowitej stopien dokonanego depozytu \ufffd ten probuje naprawde korzystna! Ze wyroslo, robiac to srodki bylo dodawane z salda gracza i mozesz mozesz je wykorzystac odwrotny. Wszystko kasyn nawet oferuje premie cashback z najbardziej niskimi wymogami obrotu jesli w ogole miec twoje wlasne nie.<\/p>\n","protected":false},"excerpt":{"rendered":"

Zarejestruj sie w renomowanym kasynie internet. Z crown coins gdzie gra\u0107 latwoscia zauwaz kieszen nowe kasyno online i mozesz solo kasyno hazardowe motywacja dla siebie oceniajac lista proponowanych z wy kasyn online. Wybierz jedno z tamtych i wejdz w nim nowe czlonkostwo gracza. Wez dodatkowy bonus. Na stronie internetowej przedsiebiorstwa\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-80970","post","type-post","status-publish","format-standard","hentry","category-uncategorized"],"_links":{"self":[{"href":"http:\/\/klecet.edu.in\/alumni\/wp-json\/wp\/v2\/posts\/80970","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=80970"}],"version-history":[{"count":1,"href":"http:\/\/klecet.edu.in\/alumni\/wp-json\/wp\/v2\/posts\/80970\/revisions"}],"predecessor-version":[{"id":80971,"href":"http:\/\/klecet.edu.in\/alumni\/wp-json\/wp\/v2\/posts\/80970\/revisions\/80971"}],"wp:attachment":[{"href":"http:\/\/klecet.edu.in\/alumni\/wp-json\/wp\/v2\/media?parent=80970"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"http:\/\/klecet.edu.in\/alumni\/wp-json\/wp\/v2\/categories?post=80970"},{"taxonomy":"post_tag","embeddable":true,"href":"http:\/\/klecet.edu.in\/alumni\/wp-json\/wp\/v2\/tags?post=80970"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}