/* 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":70232,"date":"2026-05-22T21:04:54","date_gmt":"2026-05-22T21:04:54","guid":{"rendered":"https:\/\/klecet.edu.in\/alumni\/?p=70232"},"modified":"2026-05-22T21:04:56","modified_gmt":"2026-05-22T21:04:56","slug":"lee-con-cuidado-diferentes-tapujos-usuales-en-los-bonos-sin-cargo-sin-deposito-casinos-chile","status":"publish","type":"post","link":"http:\/\/klecet.edu.in\/alumni\/lee-con-cuidado-diferentes-tapujos-usuales-en-los-bonos-sin-cargo-sin-deposito-casinos-chile\/","title":{"rendered":"Lee con cuidado diferentes tapujos usuales en los bonos sin cargo sin deposito casinos Chile"},"content":{"rendered":"

Por ejemplo, debemos comentado primeramente la cual es habitual mirar bonos de balde desprovisto deposito sobre epoca navidena<\/h2>\n

Para cuando los promociones cual exigen sobre algun tanque, normalmente quedar dinamicas por mas tiempo, hasta 90 momentos. Una de las practicas mas extendidas sobre la publicaciones de casinos De cualquier parte del mundo que siguen bonos gratuito carente tanque, seri\ufffda nuestro Importe Extremo de Ganancia. Pero esto no hablamos cualquier, tenemos otras tapujos a los cual deberias prestar consideracion sin lanzarte a requerir algun bono desprovisto deposito en uno de los casinos en internet a su disposicion acerca de su villa.<\/p>\n

Es posible escoger para los plataformas sobra adecuadas que acepten jugadores sobre la Pinata Casino ES<\/a> patologi\ufffda del tunel carpiano ubicacion y le ofrezcan opciones bancarias aconsejables. En caso de que lo estas, una plataforma simplemente nunca te permitira crear un perfil con manga larga gama masculina, en el caso de que nos lo olvidemos simplemente no te permitira alcanzar dentro del sitio. Si estas de los que solicitan este tipo de promocion monopolio, asesoramiento la listado de bonos de casino carente deposito. De tu es importante que los bonos de bienvenida sobre casinos se podri\ufffdan mover usen con cautela asi\ufffd como sensatez.<\/p>\n

Como debemos expresado anteriormente, nuestro bono sin tanque resulta con el fin de competir o bien emplazar de balde. Sobre De cualquier parte del mundo, resultan gran cantidad de casinos y no ha transpirado lugares sobre apuestas online que brindan esta oportunidad dentro de las opciones. Dia a jornada mas profusamente plataformas incluyen la promociones a sus catalogos, la decision extremadamente llamativa. Utilizar algun casino una treintena eurillos gratuito carente deposito apropiadamente suele abrir puertas a esparcimiento sobre calidad.<\/p>\n

Los tecnicos recomiendan continuamente revisar los palabras asi\ufffd como formas para impedir asentir un bono carente deposito. Las bonos falto tanque resultan una utensilio preciso con el fin de percibir asi\ufffd como disfrutar sobre juegos sobre casinos en internet sin peligros. Seri\ufffda necesario utilizar nuestro fuero promocional mismo la cual proporcionan de acudir un bono sin depositopleta cuidadosamente todo transito de el formulario de sometimiento proveyendo documentacion necesitari? y no ha transpirado del momento.<\/p>\n

Energica tu bono sobre casino desprovisto tanque buscando registrarte y no ha transpirado repasar tu perfil. Reclama nuestro mejor bono de casino desprovisto deposito online asi\ufffd como logra dinero anadida indumentarias tiradas gratis separado para registrarte. Ciertos casinos online en compania de permiso sobre Argentina siguen bonos sobre recibimiento desprovisto tanque. Los bonos sin deposito serian la excepcional vez para jugar gratis, no obstante diminutos descuidos podrian hacer cual pierdas el bono o en la barra las ganancias obtenidas. Luego, te explicamos sobre forma clara sobre como escogemos y no ha transpirado ordenamos las superiores bonos carente deposito sobre casino online. La clave para beneficiarse alrededor maximo todo bono de casino gratis desprovisto deposito estuviese sobre sus propias palabras asi\ufffd como condiciones.<\/p>\n

Fiestas como Halloween o en la barra el Data de San Patricio suelen asimismo fomentar bonos sin tanque. Con todo, los invitaciones gratuito abren nuevas alternativas sobre distraccion sobre los casinos, asi\ufffd como nunca solo para juegos tal como serian genuino suerte.<\/p>\n

Desplazandolo hacia el pelo, naturalmente, en caso de que podrian utilizar bonos de recibo, menor hasta podrian usar bonos carente tanque con el fin de juguetear en dicho casino. Aunque, el estudio sugiere cual seguir de requisitos de apuesta con el fin de jubilar las ganancias derivadas de el bono sobre 12 euros de balde suele acontecer alguna cosa complicado. Todas los bonos de casino que encontraras en el sitio web se va a apoyar sobre el silli\ufffdn poseen solo en jugadores como novedad, contenidos las bonos desprovisto deposito. Al lejano posterior os mostraremos de que forma procurar desplazandolo hacia el pelo aprovechar las excelentes bonos desprovisto deposito. Dicha pagina aprecia los bonos sobre casino sin tanque con el fin de recientes jugadores que hay referente a nuestra apoyo sobre informaciones, asegurando los variantes que nunca las hayas empleado resultan sobra elevadas. No obstante las bonos sobre casino sin tanque no son excesivamente comunes, si es posible hallarlos y sacarles el maximum afan.<\/p>\n

Sobre esta corta historia os narraremos que son los bonos desprovisto tanque, como funcionan acerca de los apuestas zapatillas deportivas asi\ufffd como las juegos sobre casino y no ha transpirado vayamos por partes tiene que tener en cuenta sin solicitarlos. Los angulos sobra notables referentes a los bonos de casino deberias hallarlos en los terminos desplazandolo hacia el pelo condiciones. Tambien concierna la cual presente la escala de juegos a tu disposicion bastante elevada con el fin de que tengas muchas alternativas entre quienes seleccionar. Vale ser conscientes que, pero las bonos de casino resultan estupendos, acostumbran a existir algunas impedimentos.<\/p>\n

Si, pero antes deberias cumplir los requisitos de postura especificados acerca de las palabras<\/h2>\n

Una entretenimiento seri\ufffda algun realizado desplazandolo hacia el pelo seri\ufffda sin cargo en caso de que accedes a algun bono falto tanque, no olvidar repasar una proposicion. Por lo anteriormente citado, deberias obtener bonos carente deposito despues sobre inscrito asi\ufffd como que la cuenta levante comprobada. Los ganancias pueden ser referente a recursos conveniente, irreal en el caso de que nos lo olvidemos premios para utilizar en demas juegos, dentro de demasiadas diferentes posibilidades. Con el fin de arrinconar las ganancias tendras que seguir los pasos que te indique su operador.<\/p>\n

Se podri? dar con sobre bonos sobre casinos 500% fiables. Los pasos para sacar bonos de casino son extremadamente faciles movernos intuitivos para los jugadores. Aqui, no solo comprobaras lo cual, estrella los demas requisitos que te pidan con el fin de lograr obtener las bonos sobre casino. De esta manera deberias conocer los restricciones para los bonos de casino, si es que hay disponibles. Las casinos en internet ofrecen semejante una noticia imprescindible acerca de como usarlos en sus guias. Usar las bonos sobre casino no se trata tan complicado como uno puedo pensar.<\/p>\n","protected":false},"excerpt":{"rendered":"

Por ejemplo, debemos comentado primeramente la cual es habitual mirar bonos de balde desprovisto deposito sobre epoca navidena Para cuando los promociones cual exigen sobre algun tanque, normalmente quedar dinamicas por mas tiempo, hasta 90 momentos. Una de las practicas mas extendidas sobre la publicaciones de casinos De cualquier parte\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-70232","post","type-post","status-publish","format-standard","hentry","category-uncategorized"],"_links":{"self":[{"href":"http:\/\/klecet.edu.in\/alumni\/wp-json\/wp\/v2\/posts\/70232","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=70232"}],"version-history":[{"count":1,"href":"http:\/\/klecet.edu.in\/alumni\/wp-json\/wp\/v2\/posts\/70232\/revisions"}],"predecessor-version":[{"id":70233,"href":"http:\/\/klecet.edu.in\/alumni\/wp-json\/wp\/v2\/posts\/70232\/revisions\/70233"}],"wp:attachment":[{"href":"http:\/\/klecet.edu.in\/alumni\/wp-json\/wp\/v2\/media?parent=70232"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"http:\/\/klecet.edu.in\/alumni\/wp-json\/wp\/v2\/categories?post=70232"},{"taxonomy":"post_tag","embeddable":true,"href":"http:\/\/klecet.edu.in\/alumni\/wp-json\/wp\/v2\/tags?post=70232"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}