/* 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":163632,"date":"2026-06-22T12:04:33","date_gmt":"2026-06-22T12:04:33","guid":{"rendered":"https:\/\/klecet.edu.in\/alumni\/?p=163632"},"modified":"2026-06-22T12:04:33","modified_gmt":"2026-06-22T12:04:33","slug":"hier-findest-du-ganz-arten-in-kostenlosen-videospielen-und-spielautomaten-7","status":"publish","type":"post","link":"http:\/\/klecet.edu.in\/alumni\/hier-findest-du-ganz-arten-in-kostenlosen-videospielen-und-spielautomaten-7\/","title":{"rendered":"Hier findest Du ganz Arten in kostenlosen Videospielen und Spielautomaten"},"content":{"rendered":"

Kostenlose Spiele ohne Anmeldung & Casino Spiele<\/h2>\n

Kostenlose https:\/\/www.kinbet-de.com\/promo-code<\/a> Spiele ohne Anmeldung und Spielautomaten fur Spielspa?: Ein geiles Gemeinsam- und Videospiel ist eine ein beliebtesten Pragen ein Unterhaltung, zwar nicht ganz Spiele sind kostenlos. Wir fangen diese erfolgreichsten kostenlosen Erreichbar-Spiele im voraus. In einen einigen individuelle Arten in Videospielen, diese es heute gibt, kann es problematisch sein, sich nach farbe bekennen, die man kaufen und spielen mochte.<\/p>\n

Sehr Leute gefallen Videospiele, hier sie interaktiv und reizvoll sind, zwar viele uberlegen, so die nach geliebt sind und so diese sintemal ihres vollen Terminkalenders nicht genugend Zeit haben, die auf spielen. Was produkt, wenn du eine Seite fundig sind konntest, auf ein tag fur tag andere kostenlose Spiele fur jedes Deinen Spielspa? hinzugefugt sind?<\/p>\n

Suchst Du auf kostenlosen Umsetzbar-Vortragen?<\/h2>\n

Wir uberblicken, so kostenlose Spiele schwer nach aufstobern sind, vielleicht wir haben einen besten Location nach handen kostenlose Spiele blo? Anmeldung gefunden. Von actiongeladenen Shootern solange bis hin nach fesselnden Rollenspielabenteuern ist dir nicht einfach wieder langweilig werden! Unsere Blog bietet kostenlose Cultural-Casino-Slots & kostenlose Umsetzbar-Spiele, diese Dich stundenlang reden man sagt, sie sind! Und wenn Du mehr Vielfaltigkeit suchst, findest Du aufwarts unserer Webseite auch kostenlose Karten- und Brettspiele wenn Puzzles & Denkspiele.<\/p>\n

In so sehr vielen kostenlosen Optionen gibt es keinen Grund, nicht noch heute in unserer Blog vorbeizuschauen und sofort uber Deinem Lieblingsspiel nach in diese gange kommen! & mach dir gar keine Betutern, in wie weit du genug Zeit und Geld hast, ja alles ist 100% kostenfrei. Wonach wartest du dann noch? Komm und runde nun auf zuhilfenahme von unnilseptium!<\/p>\n

Kostenlose Casino-Spiele<\/h2>\n

Wir angebot Dir kostenlose Casinospiele m\u00f6glich, diese komplett z. hd. samtliche sind, diese Spielautomaten, Slots et al. Casinospiele genie\u00dfen. Du kannst kostenlose Spielautomaten, kostenloses Clips-Poker, kostenloses Line roulette und mehr kostenlose Spiele ohne Anmeldung auf Herzenslust zum besten geben. Intensiv brauchst Du nichts herunterzuladen und ein Konto einzurichten \ufffd klicke reibungslos reibungslos aufs Runde, es Du geben mochten, und beginne sofort \u00fcber dem Runde!<\/p>\n

In unseren kostenlosen Casino-Spielen gibt es keineswegs Ansto?en und Limits. Auch annehmen wir oft andere Funktionen wie Bonusrunden auf anderem Jackpots hinzu, so so es nie geraume zeit andauernd ist. Es gibt nichts Besseres wie eine gute Zeit \u00fcber Freunden.<\/p>\n

Kostenlose Casino Slot Spiele<\/h2>\n

Casino-Spielautomaten, Poker und Live roulette man sagt, sie sind eine gro?artige Moglichkeit, Zeit nach verbringen und sich nach bespa?en. Es Spielen unserer kostenlosen Casinospiele ist 100% vergutungsfrei und es soll nichts heruntergeladen sind \ufffd Du kannst reibungslos sofort beginnen! Mehrere beliebte Slots wurden von NetEnt Gaming, Playtech, Microgaming und Play’n Go programmiert.<\/p>\n

Was ist ausgetuftelt als nach das rennen machen? Vergeblich nach erlangen! Uber unseren kostenlosen Pokerspielen kannst Du einen vollen Tag und diese ganze Nacht lang rund einen Computer zum besten geben. Inoffizieller mitarbeiter uberfluss besser geht es gar nicht \ufffd es ist, ja hattest Du Deinen einen personlichen Drogenhandler, zwar ohne ganz Chance! Du spielst wie a dem echten Tisch, musst Dir zwar keinen kopf machen, so Du Geld und Gutschrift verlierst, wenn Du unsere Casino Slots und zusatzliche kostenlose Spiele m\u00f6glich spielst.<\/p>\n

Moderne Casino Slots<\/h2>\n

Nice Bonanza\ufffd Slot Spiele Spiele Nice Bonanza\ufffd gebuhrenfrei Nice Bonanza\ufffd through Pragmatic Drama \u00dcber dem four-fachen Gewinnmultiplikator ist Pleasing Bonanza\ufffd das gute Location fur ganz, diese ihre S\u00fc\u00dfes genie\u00dfen. Fur mehr Sie in diesem eight?5-Video-Spielautomaten uber Freispielen und Multiplikatoren inoffizieller mitarbeiter Uberfluss treffen, desto besser! Hier k\u00f6nnen Diese anderen Slot und noch mehrere mehr kostenlose Spiele ohne Anmeldung auffuhren. .<\/p>\n

Down or Reside three Slot Spiele Ein Oscar wilde Europa ist ein Gelegenheit, internet vermarktung alles moglich ist und bleibt. Es ist ein aufregender Location \u00fcber Western-Musik inoffizieller mitarbeiter Hintergrund und ansprechender Layout, diese Sie auf Trott eben, wenn sich eine Trommel auf drehen startet! Spiele Dead at Stay 5 gebuhrenfrei Das Runde Dropped at Reside four bietet einen Spielern diese Funktionen: hohe Fluktuation;… .<\/p>\n","protected":false},"excerpt":{"rendered":"

Kostenlose Spiele ohne Anmeldung & Casino Spiele Kostenlose https:\/\/www.kinbet-de.com\/promo-code Spiele ohne Anmeldung und Spielautomaten fur Spielspa?: Ein geiles Gemeinsam- und Videospiel ist eine ein beliebtesten Pragen ein Unterhaltung, zwar nicht ganz Spiele sind kostenlos. Wir fangen diese erfolgreichsten kostenlosen Erreichbar-Spiele im voraus. In einen einigen individuelle Arten in Videospielen, diese\u2026<\/p>\n

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