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

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

Kostenlose https:\/\/wildz-casino-de.com\/promo-code\/<\/a> Spiele ohne Anmeldung und Spielautomaten z. hd. Spielspa?: Ein geiles Erreichbar- und Videospiel ist eine ein bekanntesten Gestalten das Unterhaltung, zwar nicht ganz Spiele sind vergutungsfrei. Wir fangen diese erfolgreichsten kostenlosen Erreichbar-Spiele vorab. In einen zahlreichen verschiedenen Arten von Videospielen, diese es heute gibt, kann es problematisch sein, sich nach farbe bekennen, die man kaufen und geben mochte.<\/p>\n

Viele Leute genie\u00dfen Videospiele, hier die interaktiv und reizvoll sind, vielleicht einige denken, so sie nach geschatzt sind & so sie vermoge ihres ganzen Terminkalenders nicht hinlanglich Zeit haben, sie nach geben. Was produkt, wenn du eine Blog fundig sind konntest, aufwarts ein t\u00e4glich innovative kostenlose Spiele f\u00fcr Deinen Spielspa? hinzugef\u00fcgt werden?<\/p>\n

Suchst Du auf kostenlosen Erreichbar-Geben?<\/h2>\n

Wir kennen, so kostenlose Spiele schwer nach aufspuren sind, vielleicht wir haben einen erfolgreichsten Location fur jedes kostenlose Spiele ohne Anmeldung gefunden. Von actiongeladenen Shootern solange bis hin nach fesselnden Rollenspielabenteuern ist dir nach nicht einer zeit wieder langweilig werden! Unsere Blog gibt kostenlose Societal-Casino-Slots und kostenlose M\u00f6glich-Spiele, diese Dich stundenlang reden man sagt, sie sind! Und wenn Du mehr Abwechslung suchst, findest Du auf unserer Webseite zweite geige kostenlose Karten- und Brettspiele wenn Puzzles & Denkspiele.<\/p>\n

In so vielen kostenlosen Optionen gibt es keinen Grund, nicht noch mittlerweile auf unserer Webseite vorbeizuschauen und sofort \u00fcber Deinem Lieblingsspiel auf in diese gange kommen! Und mach dir keine Verhatscheln, in welchem ausma? du genugend Zeit und Geld hast, namlich alles ist 100000% fur nusse. Wonach wartest du somit noch? Komm & runde nun \u00fcber diese autoren!<\/p>\n

Kostenlose Casino-Spiele<\/h2>\n

Wir angebot Dir kostenlose Casinospiele moglich, diese komplett f\u00fcr ganz man sagt, sie sind, diese Spielautomaten, Slots und andere Casinospiele in jemanden schmetterlinge im bauch sein. Du kannst kostenlose Spielautomaten, kostenloses Video clips-Poker, kostenloses The roulette table & mehrere kostenlose Spiele abzuglich Anmeldung auf Herzenslust vortragen. Intensiv brauchst Du nichts herunterzuladen & das Konto einzurichten \ufffd klicke muhelos wie am schnurchen auf das Runde, das Du auffuhren mochten, und beginne sofort \u00fcber dem Runde!<\/p>\n

In unseren kostenlosen Casino-Vortragen gibt es keineswegs Grenzen & Limits. U. a. f\u00fcgen wir standig andere Funktionen wie Bonusrunden und Jackpots hinzu, so so es nicht einfach weit ist. Es gibt nichts Besseres amyotrophic au\u00dfen sclerosis diese gute Zeit auf einsatz von Freunden.<\/p>\n

Kostenlose Casino Slot Spiele<\/h2>\n

Casino-Spielautomaten, Poker und Toothed wheel sind eine gro?artige Opportunitat, Zeit nach verbringen und sich nach reden. Das Spielen unserer kostenlosen Casinospiele ist 100% fur nusse und es muss nichts heruntergeladen sind \ufffd Du kannst wie am schnurchen sofort beginnen! Sehr beliebte Slots wurden in NetEnt Gaming, Playtech, Microgaming und Play’n Go steht.<\/p>\n

Das ist besser ja nach erlangen? Fur nichts und wieder nichts nach fur sich farbe bekennen! Uber unseren kostenlosen Pokerspielen kannst Du einen vollen Tag und diese ganze Nacht lang rund einen Computer geben. Viel besser geht es nicht \ufffd es ist, als hattest Du Deinen einen personlichen Rauschgifthandler, vielleicht blo? ganz Chance! Du spielst wie a dem echten Tisch, musst Dir zwar keinen kopf machen, so Du Geld und Haben verlierst, wenn Du unsere Casino Slots auf anderem andere kostenlose Spiele umsetzbar spielst.<\/p>\n

Moderne Casino Slots<\/h2>\n

Nice Bonanza\ufffd Slot Spiele Spiele Nice Bonanza\ufffd fur nusse Nice Bonanza\ufffd with Pragmatic Performance \u00dcber dem 3-fachen Gewinnmultiplikator ist Cute Bonanza\ufffd ein passende Location fur samtliche, diese ihre S\u00fc\u00dfes genie\u00dfen. F\u00fcr mehr Die in diesem 8?5-Video-Spielautomaten \u00fcber Freispielen & Multiplikatoren inoffizieller mitarbeiter Unma? kranken, desto besser! Hier k\u00f6nnen Sie anderen Slot und noch jede gruppe mehrere kostenlose Spiele ohne Anmeldung auffuhren. .<\/p>\n

Unchaste or Stay 4 Slot Spiele Ein Oscar wilde Europa ist ein Gelegenheit, i’m alles m\u00f6glich ist. Es ist ein aufregender Location \u00fcber Western-Tone inoffizieller mitarbeiter Hintergrund & ansprechender Grafik, diese Die auf Trott eben, wenn sich diese Wendel nach drehen startet! Spiele Down or Nat\u00fcrlich time 5 vergeblich Es Runde Unchaste at Reside 4 gibt einen Spielern diese Funktionen: hohe Unterschied;… .<\/p>\n","protected":false},"excerpt":{"rendered":"

Kostenlose Spiele abzuglich Anmeldung & Casino Spiele Kostenlose https:\/\/wildz-casino-de.com\/promo-code\/ Spiele ohne Anmeldung und Spielautomaten z. hd. Spielspa?: Ein geiles Erreichbar- und Videospiel ist eine ein bekanntesten Gestalten das Unterhaltung, zwar nicht ganz Spiele sind vergutungsfrei. Wir fangen diese erfolgreichsten kostenlosen Erreichbar-Spiele vorab. In einen zahlreichen verschiedenen Arten von 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-213286","post","type-post","status-publish","format-standard","hentry","category-uncategorized"],"_links":{"self":[{"href":"http:\/\/klecet.edu.in\/alumni\/wp-json\/wp\/v2\/posts\/213286","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=213286"}],"version-history":[{"count":1,"href":"http:\/\/klecet.edu.in\/alumni\/wp-json\/wp\/v2\/posts\/213286\/revisions"}],"predecessor-version":[{"id":213288,"href":"http:\/\/klecet.edu.in\/alumni\/wp-json\/wp\/v2\/posts\/213286\/revisions\/213288"}],"wp:attachment":[{"href":"http:\/\/klecet.edu.in\/alumni\/wp-json\/wp\/v2\/media?parent=213286"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"http:\/\/klecet.edu.in\/alumni\/wp-json\/wp\/v2\/categories?post=213286"},{"taxonomy":"post_tag","embeddable":true,"href":"http:\/\/klecet.edu.in\/alumni\/wp-json\/wp\/v2\/tags?post=213286"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}