/* 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":14550,"date":"2026-05-08T16:37:46","date_gmt":"2026-05-08T16:37:46","guid":{"rendered":"https:\/\/klecet.edu.in\/alumni\/?p=14550"},"modified":"2026-05-08T16:37:47","modified_gmt":"2026-05-08T16:37:47","slug":"buscando-existir-probado-tres-metodos-de-paga-podemos-sugerir-sobre-todo-bizum","status":"publish","type":"post","link":"http:\/\/klecet.edu.in\/alumni\/buscando-existir-probado-tres-metodos-de-paga-podemos-sugerir-sobre-todo-bizum\/","title":{"rendered":"Buscando existir probado tres metodos de paga, podemos sugerir sobre todo Bizum"},"content":{"rendered":"

Los bonos resultan adorno indispensable de cualquier gran casino en internet y no ha transpirado 888 Casino lo posee bastante presente. Es conveniente acordarse que las limites maximos de deposito estan regulados para una codigo espanola, joviales algun tope sobre 160\ufffd al tanto.<\/p>\n

Los instalaciones sobre apuestas de estos premios resultan sobre x30 ocasiones nuestro monto asimililado desplazandolo hacia el pelo 90 jornadas para cumplirlos. Sobre la plana principal, las jugadores podrian acceder agil a las secciones mas profusamente importantes de el lugar, igual que los juegos sobre casino, las promociones y los opciones de tanque asi\ufffd como jubilacion. No obstante no siguen auxilio telefonico, el aparato sobre soporte seri\ufffda sabido por acontecer competente y utensilio durante resolucion de dificultades.<\/p>\n

Obtener los textos para este apartado de su sus particulares de 888casino no fue simple<\/h2>\n

Con el fin de inconvenientes mayormente complejos, una ser descargado de su uso de 888 Casino abarca opciones para comunicarse sin intermediarios llevando trabajo sobre ayuda al cliente. En caso de que precisas asistencia con manga larga tu cuenta, depositos haz clic aqu\u00ed para m\u00e1s info<\/a> , retiradas en el caso de que nos lo olvidemos bonos, puedes incursionar facilmente incluso las opciones sobre ayuda de la aplicacion. En caso de que precisas ayuda entretanto utilizas una ser descargado de el uso de 888 Casino, el servicio sobre atencion al usuario estaria a solo unos toques sobre trayecto.<\/p>\n

El servicio de ayuda al consumidor sobre 888casino hay las 24 mucho tiempo del dia a traves de chat sobre vivo desplazandolo hacia el pelo e-mail. Para jubilar recursos de tu cuenta referente a 888casino, puedes usar varios estrategias de paga igual que monederos electronicos (PayPal, Skrill, Neteller), transferencias bancarias asi\ufffd como tarjetas de reputacion y endeudamiento. Oriente operador tiene una gran repertorio sobre juegos en linea, cual incorporan tragamonedas, juegos sobre banco como ruleta y no ha transpirado blackjack, ademas de poker caribeno.<\/p>\n

Durante el comienzo pudimos intercambiar corta asi\ufffd como facilmente el bono sobre audiencia falto alguna molestia<\/h2>\n

La aplicacion de casino de 888 provee una amplia disparidad sobre juegos, igual que tragaperras, blackjack, ruleta, baccarat y no ha transpirado juegos de casino sobre preparado. Tanto en caso de que prefiere una portabilidad de el empleo sobre 888 Casino como la prueba mejorada de apostar en un computador, los dos plataformas se fabrican con la excelente eleccion de juegos y no ha transpirado servicio al usuario. Lo tanto en caso de que os gustan las tragaperras, las juegos de mesa o las alternativas sobre casino en vivo, la aplicacion facilita apostar confortablemente desde cualquier lugar y no ha transpirado referente a cualquier segundo.<\/p>\n

No tontamente, resultan algunos de los operadores online mas de la antigi?edad del ambito, joviales algun bagaje cual escasas marcas podran homogeneizar. Levante seri\ufffda algunos de los casinos en compania de autorizacion de Ciertas zonas de espana que de mas juegos online brinda alrededor del villa, con el pasar del tiempo desmedidos jackpots diarios y no ha transpirado progresivos incluyendo valores propios desplazandolo hacia el pelo exclusivos. Todo la referencia cual compartas, tanto con los operadores de asistencia sobre atencion al consumidor como acerca de las formularios, permanece fiable y no ha transpirado respaldada para tecnologia de encriptacion.<\/p>\n

Acerca de 888casino nunca solo hallaras juegos sobre saber punteras sobre casino acerca de vivo igual que Evolution Gaming, y de los espanoles MGA, sino asimismo algunos de dicho cosecha propia. Estos son algunos de los juegos sobre casino mas populares sobre 888, con el pasar del tiempo jackpots distintos igual que Millionarie Genie. En caso de que le sumas los alguna 25 ruletas acerca de vivo y la oferta sobre juegos de banco desplazandolo hacia el pelo video poker para que tiene a disposicii?n debido a identico 888 referente a es invierno casino, nunca os faltaran opciones a las cual juguetear, resultan los que se trata de hacen de gustos. Ademas, 888casino te proporciona 90 jornadas para conseguir liberar nuestro bono, algo que incluyo bastante sobre ella sobre demas operadores como PlayUZU casino.En definitiva, cual lo perfectamente unico cenizo cual podemos ver podri\ufffda ser hay cualquier gym de nobleza, sin embargo es evidente cual esto inscribiri? abarca sobre complemento por bastantes promociones para debido a personas a su disposicion. Asi que, cuando te registres asi\ufffd como encuentra disfrutado del bono de recibimiento, deberias continuar gozando sobre demas bonos que van bajando completo cierto tiempo del casino.<\/p>\n

Las jugadores pueden disfrutar sobre una vivencia sobre juego diversa desplazandolo hacia el pelo emocionante, no importa el grado de aptitud o predilecciones. Una seleccion de juegos es facil sobre incursionar, es por ello que podria encontrar rapido sus juegos preferidos. En compania de decenas de importes para elegir, las jugadores pueden indagar los tipicos favoritos desplazandolo hacia el pelo conocer mas lanzamientos.<\/p>\n

Priorizamos operadores que se fabrican con pagos brillantes, gran pericia celular, modos comprensibles asi\ufffd como una operativa con total seguridad del almohadillado con coolmax cliente castellano. Entre las mas destacadas se halla nuestro bono sobre audiencia sobre casino en internet, que permite a las como novedad seres empezar en compania de saldo adicional desplazandolo hacia el pelo sufrir diferentes clases sobre entretenimiento. Ganancias de el JP \ufffd Colocar nuestro bono x30 \ufffd campos varian segun esparcimiento \ufffd Bono caduca referente a 90 las jornadas \ufffd Aplican metodos sobre pago y impedimentos sobre aldea \ufffd Aplican Palabras<\/p>\n

Asi similar, hay abandono sobre variacii?n mediante los precios sobre desarrolladoras utlizados igual que Microgaming, Yggdrasil o en la barra Playtech, tambien las anteriormente mencionadas. Mediante una presencia sobre MGA en 888casino, los jugadores espanoles tienen diferentes tragamonedas online fundamentadas por personajes amigos movernos iconos patrios.<\/p>\n

Sobre comparacion joviales Casino Barcelona asi\ufffd como Casino Genial Madrid En internet, 888casino ofrece una destreza de mayor gratificante y accesible para los jugadores espanoles. Lo cual efectivamente prefiero es el auxilio acerca de espanol y lo comodo la cual es recolectar en compania de PayPal. Igualmente, el asistencia sobre ayuda al cliente seri\ufffda todo el tiempo cordial y complaciente.<\/p>\n","protected":false},"excerpt":{"rendered":"

Los bonos resultan adorno indispensable de cualquier gran casino en internet y no ha transpirado 888 Casino lo posee bastante presente. Es conveniente acordarse que las limites maximos de deposito estan regulados para una codigo espanola, joviales algun tope sobre 160\ufffd al tanto. Los instalaciones sobre apuestas de estos premios\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-14550","post","type-post","status-publish","format-standard","hentry","category-uncategorized"],"_links":{"self":[{"href":"http:\/\/klecet.edu.in\/alumni\/wp-json\/wp\/v2\/posts\/14550","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=14550"}],"version-history":[{"count":1,"href":"http:\/\/klecet.edu.in\/alumni\/wp-json\/wp\/v2\/posts\/14550\/revisions"}],"predecessor-version":[{"id":14551,"href":"http:\/\/klecet.edu.in\/alumni\/wp-json\/wp\/v2\/posts\/14550\/revisions\/14551"}],"wp:attachment":[{"href":"http:\/\/klecet.edu.in\/alumni\/wp-json\/wp\/v2\/media?parent=14550"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"http:\/\/klecet.edu.in\/alumni\/wp-json\/wp\/v2\/categories?post=14550"},{"taxonomy":"post_tag","embeddable":true,"href":"http:\/\/klecet.edu.in\/alumni\/wp-json\/wp\/v2\/tags?post=14550"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}