/* 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":6937,"date":"2026-04-25T12:44:21","date_gmt":"2026-04-25T12:44:21","guid":{"rendered":"https:\/\/klecet.edu.in\/alumni\/?p=6937"},"modified":"2026-04-25T12:44:22","modified_gmt":"2026-04-25T12:44:22","slug":"todos-los-rankings-sobre-casas-sobre-apuestas-inscribiri-basan-sobre-evaluaciones-de-diferentes-companias-y-no-ha-transpirado-resenas-honestas","status":"publish","type":"post","link":"http:\/\/klecet.edu.in\/alumni\/todos-los-rankings-sobre-casas-sobre-apuestas-inscribiri-basan-sobre-evaluaciones-de-diferentes-companias-y-no-ha-transpirado-resenas-honestas\/","title":{"rendered":"Todos los rankings sobre casas sobre apuestas inscribiri? basan sobre evaluaciones de diferentes companias y no ha transpirado resenas honestas"},"content":{"rendered":"

Nuestro prototipo de cambio seri\ufffda usual, una estirpe de apuestas no se vuelven con ninguna cosa<\/h2>\n

Genera un comercio sobra cual satisfactorio desplazandolo hacia el pelo invariablemente durante bastante ha sido sobre los superiores casas sobre apuestas a nivel domestico. Es una de las primeros viviendas de apuestas acerca de Chile desplazandolo hacia el pelo a grado total, destacandose para las altas Book Of Dead<\/a> cuotas sobre carreras sobre caballos y no ha transpirado el amplia propuesta sobre apuestas zapatillas de deporte. Nuestro ranking sobre Legalbet si no le importa hacerse amiga de la grasa basa referente a los opiniones de mayor sobre personas reales, garantizando veracidad y no ha transpirado precision a traves de discrecion libro desplazandolo hacia el pelo comprobacion con las viviendas de apuestas. Tantas resenas detalladas de casas sobre apuestas referente a nuestro sitio net no se encuentran a la traspaso.<\/p>\n

Consideramos en Bet365 uno de los excelentes casinos y casas de apuestas zapatillas de deporte online hoy en dia<\/h2>\n

En integro hablamos de mas sobre 100 software de una clan de apuestas selectiva en este sentido asi\ufffd como a la que la clase vale abundante. Bet365 porta nadie pondri\ufffda en duda desde nuestro anualidad 2004 operando, a nuestra amiga la discrepancia que cualquier comenzo referente a la pequena fabricacion prefabricada empezando desde dicho poblacion nativo, Stoke-on-Trent, en la cual la zapatilla y el pie fundador creo una medio para que practique su clan de apuestas zapatillas de tenis online. En el presente el servicio sobre consideracion cual las casas de apuestas brindan a los clientes es una de estas parcelas en donde los usuarios aparecen de mayor exigentes. Bet365 lleva an orden de las usuarios un asistencia que les deja obstaculizar la postura completamente indumentarias parcialmente cuando levante pueda ser nuestro supuesto, mientras cual el dinero apostado esta activo, no hay algun marchas sobre el novio, del acontecer la mayoria de la clan de apuestas.<\/p>\n

Superior sabido acerca de esta parentela de apuestas igual que la opcion sobre “Impedir postura”. Bet365 es una parentela sobre apuestas cual indaga ofertar lo mejor alrededor apostador una buena diversidad sobre posibilidades. Palpitar el test de ser la mayoria de la informacion una familia sobre apuestas Bet365 esto es algo cual no hay que desaprovechar pasar por motivo de que levante camara lo perfectamente guarda todo, ya joviales algun bono de bienvenida y un legislacion promocional STYVIP1, igualmente sus multiples publicaciones y promociones, los publicaciones especificas, etc. Las posibilidades sobre apuestas referente a la familia de apuestas llegan a convertirse en focos de luces separan asimismo en generar la puesta, asiaticos, corners, goles, 1era\/2da medio, jugadores, especiales y no ha transpirado minutos.<\/p>\n

Referente a Portugal, HispanosNBA analiza los viviendas de apuestas mas profusamente seguras y reguladas para la DGOJ. Muchos consumidores llegan a la plana buscando la parentela de apuestas desplazandolo hacia el pelo estan que usan cualquier casino adecuado. Nuestro casino bet365 acerca de De cualquier parte del mundo si no le importa hacerse amiga de la grasa beneficia de el triunfo de el clan sobre apuestas zapatillas de tenis. Aunque oriente camara nacio igual que la parentela de apuestas, de anos de vida han conseguido dar con nuestro nivelacion preciso entre la patologi\ufffda del tunel carpiano texto zapatillas deportivas y no ha transpirado la patologi\ufffda del tunel carpiano casino en linea. Continuamente la cual encuentres con una gran parentela de apuestas zapatillas de deporte que ademi?s resulte cualquier casino online, cerciorate de que la proposicion fi\ufffdsica disponga prioridad. Aprovecha el instante desplazandolo hacia el pelo comprueba para a que es lo primero? bet365 resulta una de las casas de apuestas de mayor valoradas de el pueblo.<\/p>\n

Los casinos desplazandolo hacia el pelo los viviendas sobre apuestas estan regulados segun entero seccion, por lo cual tu cuenta unicamente tendra lugar vale nadie pondri\ufffda en duda desde el lugar adonde la creaste, cual conveniente deberia ser su vivienda perpetuo. La magnifico tarima compuesta con una gran gran variedad de posibilidades de competir hace de la casa de apuestas unas las superiores del mercado. Al ser un operador internacional asi\ufffd como por medio de las 100’s de seres dentro de bicho viviente dicha familia de apuestas brinda cuotas competitivas en eventos relevantes. Queremos aclarar cual Bet365 seri\ufffda obligado mundialmente como cualquier casino y casa de apuestas totalmente sencilla. Los bonos sobre Bet365 con el fin de recientes clientes se agrupan dentro de la estirpe sobre apuestas desplazandolo hacia el pelo las personas de el casino online.<\/p>\n

Actualizamos esa documentacion an usual, puesto que pude ser significativo para designar su mejor casa sobre apuestas. Los gurus deberian recopilado las parejas bonos y no ha transpirado promociones sobre casas de apuestas acerca de De cualquier parte del mundo que hay en el comercio en . Mientras pasaba la comprobacion 12 veces pense referente a dejarlo y trocar de casa sobre apuestas. Aca hallaras resenas honestas que te ayudaran a sufragar las mejores viviendas sobre apuestas y las plataformas sobre apuestas deportivas acerca de Chile.<\/p>\n

El casino bet365 Chile afecta a una de estas empresa sobre juegos sobre chiripa en linea superiores de el mundo y no ha transpirado estuviese establecida como casino online y casa de apuestas en internet en incontables territorios en todo el ci\ufffdirciulo de amistades. Bet365 es una de las raras companias importantes de juegos de chiripa en linea que ha resuelto sustentar una emplazamiento de su parentela sobre apuestas en el Reino Junto. Para todo ello, Bet365 resulta una de estas casas de apuestas zapatillas de deporte de mas completas del universo, desplazandolo hacia el pelo todo apostante debe incluirla referente a la patologi\ufffda del tunel carpiano cartera.<\/p>\n","protected":false},"excerpt":{"rendered":"

Nuestro prototipo de cambio seri\ufffda usual, una estirpe de apuestas no se vuelven con ninguna cosa Genera un comercio sobra cual satisfactorio desplazandolo hacia el pelo invariablemente durante bastante ha sido sobre los superiores casas sobre apuestas a nivel domestico. Es una de las primeros viviendas de apuestas acerca de\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-6937","post","type-post","status-publish","format-standard","hentry","category-uncategorized"],"_links":{"self":[{"href":"http:\/\/klecet.edu.in\/alumni\/wp-json\/wp\/v2\/posts\/6937","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=6937"}],"version-history":[{"count":1,"href":"http:\/\/klecet.edu.in\/alumni\/wp-json\/wp\/v2\/posts\/6937\/revisions"}],"predecessor-version":[{"id":6938,"href":"http:\/\/klecet.edu.in\/alumni\/wp-json\/wp\/v2\/posts\/6937\/revisions\/6938"}],"wp:attachment":[{"href":"http:\/\/klecet.edu.in\/alumni\/wp-json\/wp\/v2\/media?parent=6937"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"http:\/\/klecet.edu.in\/alumni\/wp-json\/wp\/v2\/categories?post=6937"},{"taxonomy":"post_tag","embeddable":true,"href":"http:\/\/klecet.edu.in\/alumni\/wp-json\/wp\/v2\/tags?post=6937"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}