/* 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":70422,"date":"2026-05-22T21:16:55","date_gmt":"2026-05-22T21:16:55","guid":{"rendered":"https:\/\/klecet.edu.in\/alumni\/?p=70422"},"modified":"2026-05-22T21:16:56","modified_gmt":"2026-05-22T21:16:56","slug":"yobingo-brinda-un-bono-carente-deposito-de-cinco%ef%bf%bd-mero-para-cero-millas-usuarios","status":"publish","type":"post","link":"http:\/\/klecet.edu.in\/alumni\/yobingo-brinda-un-bono-carente-deposito-de-cinco%ef%bf%bd-mero-para-cero-millas-usuarios\/","title":{"rendered":"YoBingo brinda un bono carente deposito de cinco\ufffd mero para cero millas usuarios"},"content":{"rendered":"

Conocerlas seri\ufffda su mejor maniobra de elegir unicamente anuncios recomendables<\/h2>\n

Registrate acerca de utilizando fuero ABR26 y no ha transpirado recibe incluso 50\ufffd en bonos de casino carente necesidad de deposito. Nuestro bono suele demorar hasta 24 horas habiles referente a reflejarse y es vivo unico para juegos de casino, slots desplazandolo hacia el pelo videobingos permitidos. Ebingo provee cualquier bono falto deposito de 5\ufffd con el fin de recientes seres que completen nuestro asignacion desplazandolo hacia el pelo verifiquen su perfil lanzando el DNI. Nuestro Casino Online sobre Gran Madrid ofrece un Bono Carente Deposito de 10\ufffd vacante lo tanto para juegos sobre casino como para slots.<\/p>\n

El procedimiento sobre 777 Casino login seri\ufffda confortable y facil de utilizar, cosa que permite cual las numerosas alternativas de juego de el casino resultan asequibles. Con el pasar del tiempo dicho noviazgo hacia la seguridad asi\ufffd como el esparcimiento limpio, Casino 777 posee licencias de organismos reguladores de fama, lo cual asegura algun entorno de esparcimiento fiable asi\ufffd como de confianza. Una tarima esta concebida de ofrecer una practica comodo sobre usar, proporcionando lo tanto a los jugadores nuevos como a las capacitados la interfaz de singladura fluida. 777 Casino resulta una medio sobre esparcimiento en internet que han fascinado a jugadores sobre todo el mundo en compania de su tematica retro, que ten en mente a los clasicos casinos de estas Vegas.<\/p>\n

Algunos de los ejem mayormente conocidos ahora data es el 777 casino bono carente tanque Mexico, una propaganda cual ha denominado la consideracion para el sencillez de activacion asi\ufffd como por las juegos compatibles que provee empezando desde nuestro asignacion. Una de las caracteristicas de los bonos falto deposito para casino podri\ufffda ser deben cualquier rollover preferiblemente a otros bonos sobre casino. Nuestro recursos de el bono sobre casino carente tanque resulta una numero alguna baratos cual se podri? utilizar referente a practicamente todo entretenimiento cual presente el casino. Algun bono de casino desprovisto tanque nunca precisa que realizes cualquier deposito de reclamarlo.<\/p>\n

Las ofertas suelen ser temporales SlotLair Casino inicio de sesi\u00f3n<\/a> y resultan la excepcional vez con el fin de conseguir sobra partido en las juegos favoritos, ya sea joviales premios extra, pruebas o apuestas gratuitas. Al otro lado de estas ofertas genericos, tenemos gran cantidad de casinos online joviales bonos de juegos especializados. Los mas grandes bonos de casino en internet dan nuestro reembolso igual que dinero favorable desprovisto rollover, pero esto depende para terminos y no ha transpirado formas de cualquier camara. Si consiste en igual que lado que disfrutas de experimentar los espantajo buscas casinos con el pasar del tiempo depositos menores empezando desde ningun\ufffd con el fin de poder saber todo nuestro abano de novedosas alternativas. Uno mas de los bonos sobre bienvenida sobra usadas seri\ufffda la persona que ofrece giros gratis.<\/p>\n

Una medio implementa tecnologia de encriptacion SSL de ultima engendramiento, la misma de las que hacen uso los cadenas bancarias, de proteger los esposos datos amigables desplazandolo hacia el pelo financieros de sus personas lo mucho que accesos nunca autorizados. La seguridad es un monolito relevante acerca de 777 Casino, cual opera pequeno estrictas regulaciones asi\ufffd como licencias internacionales que proveen garanti\ufffda de una proteccion de los jugadores y tambien en la integridad de ellas las operaciones. La coleccion sobre cualquier casino online aental para asegurar la habilidad satisfactoria, y 777 Casino en internet si no le importa hacerse amiga de la grasa distingue para multiples motivos cual lo perfectamente es sobre la opcion proliferante para los jugadores sobre Chile.<\/p>\n

En caso de que el casino cumple con estos discernimiento, se podri? estar seguro de que disfrutaras de una destreza segura que usan un bono desprovisto tanque que realmente valga la tristeza. Cualquier gigantesco casino deberia ofertar una amplia seleccion sobre juegos , nadie pondri\ufffda en duda desde tragaperras inclusive diferentes “slots” , juegos sobre banco y no ha transpirado casino referente a preparado. Aunque, es fundamental entender los campos y no ha transpirado elegir un casino confiable de utilizar al extremo esta promocion. Las bonos carente tanque normalmente estar personas a terminos especificos, como un rollover que determina cuantas veces debes apostar nuestro bono antes de obtener eximir las ganancias. Puedes revisar la relacion sobre casinos para afirmarte que manejas referente a una medio fiable y regulada.<\/p>\n

777 casino es una tarima de juegos sobre casualidad online cual brinda la gran disparidad sobre juegos de sus individuos. Las promociones y no ha transpirado bonificaciones resultan generosas y los graficos para los juegos resultan excesivamente excelentes. Gigantesco asistencia asi\ufffd como diversidad de juegos acerca de 777 casino, pero intento cual anadieran mas opciones sobre la division de juegos en avispado. Explora bicicletas 1000 juegos, mesas de casino referente a vivo desplazandolo hacia el pelo apuestas de deporte al momento, cualquier optimizado para un juego agua sobre Android, iOS u otra navegador. Sumergete con potente humanidad sobre 777 casino y soluciona juegos de entidad financiera, ruletas relampago asi\ufffd como shows de juegos sobre garbo en el momento en que su iphone, A la o bien tablet, todo con manga larga intimidad pleno, empuje, asi\ufffd como cualquier juego justo abogado.<\/p>\n

Los mas notables resultan nuestro deposito minimo, los campos de envite y nuestro division para cumplirlos<\/h2>\n

Entonces, las bonos de recepcion quedara an acontecer legales en Chile empezando desde nuestro diez de mayo sobre 2024. Buscando dicha recien estrenada ley, para conseguir algun bono de recibimiento, tenias que confirmar tu sometimiento. Con el fin de resumirla, quedo completamente prohibida la proposicion de bonos a las como novedad usuarios, dichos que daban por tu primer deposito unico registrarte. Pues bien, acerca de 2020 le vino a el momento sobre desarrollo a los esencia de las promociones asi\ufffd como las bonos de recibo.<\/p>\n

Con el fin de que os pudiera llegar a ser simple disponer, te ofrezco la noticia cual necesitas conocer, como cantidad de juegos en presto y no ha transpirado las bonos sobre audiencia que puedes solicitar. Algunos casinos siguen un bono de recibimiento carente tanque, por eso date urgencia para aprovechar la oferta mas lucrativa sobre Casino 777.<\/p>\n","protected":false},"excerpt":{"rendered":"

Conocerlas seri\ufffda su mejor maniobra de elegir unicamente anuncios recomendables Registrate acerca de utilizando fuero ABR26 y no ha transpirado recibe incluso 50\ufffd en bonos de casino carente necesidad de deposito. Nuestro bono suele demorar hasta 24 horas habiles referente a reflejarse y es vivo unico para juegos de casino,\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-70422","post","type-post","status-publish","format-standard","hentry","category-uncategorized"],"_links":{"self":[{"href":"http:\/\/klecet.edu.in\/alumni\/wp-json\/wp\/v2\/posts\/70422","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=70422"}],"version-history":[{"count":1,"href":"http:\/\/klecet.edu.in\/alumni\/wp-json\/wp\/v2\/posts\/70422\/revisions"}],"predecessor-version":[{"id":70423,"href":"http:\/\/klecet.edu.in\/alumni\/wp-json\/wp\/v2\/posts\/70422\/revisions\/70423"}],"wp:attachment":[{"href":"http:\/\/klecet.edu.in\/alumni\/wp-json\/wp\/v2\/media?parent=70422"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"http:\/\/klecet.edu.in\/alumni\/wp-json\/wp\/v2\/categories?post=70422"},{"taxonomy":"post_tag","embeddable":true,"href":"http:\/\/klecet.edu.in\/alumni\/wp-json\/wp\/v2\/tags?post=70422"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}