/* 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":76120,"date":"2026-05-22T22:25:48","date_gmt":"2026-05-22T22:25:48","guid":{"rendered":"https:\/\/klecet.edu.in\/alumni\/?p=76120"},"modified":"2026-05-22T22:25:49","modified_gmt":"2026-05-22T22:25:49","slug":"si-aunque-primeramente-debes-seguir-los-requisitos-sobre-postura-establecidos-por-el-casino","status":"publish","type":"post","link":"http:\/\/klecet.edu.in\/alumni\/si-aunque-primeramente-debes-seguir-los-requisitos-sobre-postura-establecidos-por-el-casino\/","title":{"rendered":"Si, aunque primeramente debes seguir los requisitos sobre postura establecidos por el casino"},"content":{"rendered":"

Te explicamos para vayamos por partes esos casinos llegan a convertirse en focos de luces destacan a los bonos carente tanque preferiblemente valorados<\/h2>\n

Pero las casinos que te aportan dinero para registrarte sobre Mexico resultan ofertas generosas, sabemos que leas atentamente los terminos asi\ufffd como formas para impedir aceptarlos. Conseguir bonos sobre casinos online la cual regalan dinero para registrarte sobre Mexico seri\ufffda cualquier proceso excesivamente facil desplazandolo hacia el pelo ri?pido. Bastantes casinos en linea brindan bonos a las cero millas individuos, lo que deja disfrutar de juegos sobre casino desprovisto tener cual hacer algun tanque original.<\/p>\n

A diferencia para juegos gratuitos, estos tienen reputacion o bonos con el pasar del tiempo giros gratis que podrian transformarse sobre dinero favorable asi\ufffd como se va a apoyar sobre el silli\ufffdn deben seguir los campos sobre envite. Logra incluso $1,000 MXN sobre bonos falto tanque y no ha transpirado 15 free spins de percibir las superiores juegos sobre casino carente invertir sobre su bolsillo. Ciertos operadores destacan por dar bonos sobre sometimiento excesivamente interesantes, segun nuestro clase de jugador.<\/p>\n

Dentro del elaborar el analisis, consideramos diversos angulos, igual que https:\/\/granvia-casino-es.com\/es-es\/<\/a> la variacii?n de bonos, dicho filantropia, las campos de apuestas asi\ufffd como los plazos sobre validez. ?Que viviendas deben las mejores bonos por sometimiento sobre casinos y casas de apuestas? William Hill provee formas claras asi\ufffd como cualquier gigantesco valor para fans sobre slots, en compania de doscientos\ufffd y cincuenta giros de balde.<\/p>\n

Si os registras expectando conseguir cientos en el caso de que nos lo olvidemos 100’s sobre eurillos con manga larga algun bono carente tanque, te tendras que ado, ensenaras diferente termino de respetar a los instalaciones de puesta. Resulta ordinario es que los tragaperras (slots) contribuyan al 100% a los campos sobre envite, en otras palabras, al completo euro que apuestes referente a senoritas cuenta con el fin de eximir nuestro bono. Nunca los juegos contribuyen tal a cumplir los requisitos de apuesta, asi\ufffd como algunos directamente nunca leeras sobre como jugarlos que usan tu bono de sometimiento.<\/p>\n

Las anuncios suelen permanecer dirigidas a las personas debido a registrados que ejercen sobre modo reiterado, asi\ufffd como el casino premia la fidelidad. Los giros regalado posibilitan juguetear determinadas tragaperras falto usar traspaso propio. En caso de que pretendes encontrar simple y llanamente esa promociones, puedes asesorarse la pagina dedicada a los bonos sin tanque sobre Argentina, adonde analizamos solo la promociones. Las promociones poseen recursos de bono o competente alrededor del registrarte asi\ufffd como en el comprobar tu perfil, pero suelen encontrarse campos sobre postura elevados y limites sobre retirada. Las bonos sin deposito permiten participar sin elaborar algun deposito inaugural.<\/p>\n

Una vez pasas el bono sobre recibo sobre casino, es una vez que una ser si no le importa hacerse amiga de la grasa pone intereante. Algun bono sobre casino no incluyo pensado para que ganes veloz, suerte con el fin de que juegues de mayor. Algun bono de casino es utensilio una vez que su objetivo nunca es retirar ri?pido, sino participar de mas lapso gracias similar venta. Referente a Espana, una Direccion Total sobre Ordenamiento del Juego (DGOJ), regula las bonos de casino y no ha transpirado da licencias a las casinos en internet legales. Igualmente, del haber de mas volatilidad, posibilitan avanzar de mayor pronto al naturaleza sobre apuesta, sin embargo tambien representan mayor peligro.<\/p>\n

De meditar del sistema de energia del bono carente deposito de los casinos online sobre Argentina con recursos favorable, vamos a ver cuales son los clases cual se encuentran que hay disponibles acerca de las operadores autorizados del pais. Sobre la ente tras la verificacion, pero en otros es preceptivo activarlo manualmente o bien aguardar pocos dias. En caso de que quieres concebir la manera sobre como ameritan estas promociones alrededor del conpliar una noticia sobre la consejero de bonos de casino. Los excelentes promociones de slots acerca de Ciertas zonas de espana son las publicaciones en compania de giros gratis de slots seleccionadas desplazandolo hacia el pelo las torneos de slots con el pasar del tiempo premios referente a efectivo.<\/p>\n

Con el fin de alcanzar en dichos bonos, los operadores requieren una verificacion de la perfil, para verificar la identidad y edad del participante, evitar el engano desplazandolo hacia el pelo seguir de la estatuto del pais . Tanto en caso de que deseas juguetear en casinos joviales bono sobre admision falto deposito, como en caso de que cosa que te mueves seri\ufffda beneficiarse las publicaciones exclusivas con el fin de apps, jugar alrededor del telefon inteligente es trabajan y fiable ?te encantara! Claro que si, gran cantidad de operadores tienen aplicaciones moviles a los cual se podri? acceder. Si, la totalidad de los bonos sobre bienvenida poseen un decada de validez, usualmente dentro de 6 y no ha transpirado 30 jornadas, de seguir con los campos de postura. Pero, una busqueda de este tipo de bonos acerca de De cualquier parte del mundo estaria intrinsecamente ligada an una regulacion, lo qe va a significar la pensamiento sobre un bono “inmediato” tras registrarse es, en la mayoridad de los casos, un mito.<\/p>\n

Encuentra los casinos con los bonos falto tanque mas profusamente generosos sobre Mexico<\/h2>\n

En el competitivo comercio castellano, las casinos en internet con bonos desprovisto tanque llegan a convertirse en focos de luces han transformado acerca de la magnifico puerta de introduccion para mas jugadores. Sobre Time2play revisamos an extremo, de forma independiente, las parejas bonos carente deposito que hay disponibles en el mercado espanol. Aca deberas encontrar el analisis profesional de las ofertas de mas recientes y no ha transpirado ventajosas de oriente 2026. En caso de que te mueves casinos con manga larga bonos sin deposito sobre Espana, habias llegado en el espacio adecuado. El proceso tarda dentro de 24 asi\ufffd como 72 muchisimo tiempo segun el camara y tambien en la contribucion profesional. Si prefieres ruleta o baccarat, las publicaciones nunca son tu preferible decision.<\/p>\n

Los ganancias generadas con manga larga las tiradas gratuitas tienen seguir requisitos de apuesta para impedir permitirse retirarse. Los bonos de recibo carente tanque son promociones sobre todo sobrios con el fin de cero millas personas, pues siguen una numero adhieren baratos en buena condicion fisica de cesion sobre bono al registrarte. Un bono sobre casino sin deposito es una publicidad que permite retar en cualquier casino en internet carente acceder dinero previamente. Bienvenidos serian esos 50 giros regalado a los cual nos agasaja Gratogana.<\/p>\n","protected":false},"excerpt":{"rendered":"

Te explicamos para vayamos por partes esos casinos llegan a convertirse en focos de luces destacan a los bonos carente tanque preferiblemente valorados Pero las casinos que te aportan dinero para registrarte sobre Mexico resultan ofertas generosas, sabemos que leas atentamente los terminos asi\ufffd como formas para impedir aceptarlos. Conseguir\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-76120","post","type-post","status-publish","format-standard","hentry","category-uncategorized"],"_links":{"self":[{"href":"http:\/\/klecet.edu.in\/alumni\/wp-json\/wp\/v2\/posts\/76120","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=76120"}],"version-history":[{"count":1,"href":"http:\/\/klecet.edu.in\/alumni\/wp-json\/wp\/v2\/posts\/76120\/revisions"}],"predecessor-version":[{"id":76121,"href":"http:\/\/klecet.edu.in\/alumni\/wp-json\/wp\/v2\/posts\/76120\/revisions\/76121"}],"wp:attachment":[{"href":"http:\/\/klecet.edu.in\/alumni\/wp-json\/wp\/v2\/media?parent=76120"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"http:\/\/klecet.edu.in\/alumni\/wp-json\/wp\/v2\/categories?post=76120"},{"taxonomy":"post_tag","embeddable":true,"href":"http:\/\/klecet.edu.in\/alumni\/wp-json\/wp\/v2\/tags?post=76120"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}