/* 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":76123,"date":"2026-05-22T22:25:49","date_gmt":"2026-05-22T22:25:49","guid":{"rendered":"https:\/\/klecet.edu.in\/alumni\/?p=76123"},"modified":"2026-05-22T22:25:50","modified_gmt":"2026-05-22T22:25:50","slug":"importa-repasar-las-palabras-y-caracteristicas-para-saber-los-campos-sobre-apuesta","status":"publish","type":"post","link":"http:\/\/klecet.edu.in\/alumni\/importa-repasar-las-palabras-y-caracteristicas-para-saber-los-campos-sobre-apuesta\/","title":{"rendered":"Importa repasar las palabras y caracteristicas para saber los campos sobre apuesta"},"content":{"rendered":"

Pero, atane conocer ciertas zonas de progreso, igual que las inconvenientes reportadas en el momento de servicio al consumidor asi\ufffd como los posibles retrasos acerca de los retiros. Ademi?s, nuestro atractivo bono de recepcion y tambien en la variacii?n sobre metodos sobre remuneracion a tu disposicion resultan puntos en atencion cual bastantes jugadores apreciaran.<\/p>\n

Por lo tanto, tu asegurara facilmente el instante de juguetear aqui. Para juguetear en 888Casino bono en demas territorios, nada mas debes dar con cualquier sitio filial que es relevante https:\/\/granvia-casino-es.com\/es-es\/<\/a> con el fin de su pueblo. Desplazandolo hacia el pelo lo cual nunca concluye aca, para los jugadores sobre poker online, la medio 888poker hallan presentado un bono de recibo de el 500% inclusive doscientas\ufffd. 888poker tiene numerosos premios EGR, incluidos el galardon al Cirujano sobre poker del ano asi\ufffd como el premio an una Campana sobre publicidad sobre poker de el ano Disfruta de emocionantes ofertas desplazandolo hacia el pelo promociones, asi\ufffd como empieza tu camino hasta los premios gracias pabellon 888poker En compania de acoples diez miles sobre socios registrados, 888poker seri\ufffda la marca sobre poker online cual registra nuestro progreso mas pronto del sector<\/p>\n

Referente a terminos sobre limites, se puede acumular hasta 160\ufffd sobre una jornada y no ha transpirado 3<\/h2>\n

Acerca de integro, resultan algunas 15 juegos de banco quienes podras encontrar acerca de esta seccion. Acerca de 888Casino asimismo encontraras las tipicos juegos sobre caja de ahorros, igual que es nuestro caso de el ruleta y el blackjack, tambien los superiores juegos de cinta poker. 888Casino posee unas los propuestas de mas variadas entre los casinos en internet sobre Argentina, albergando alguna 1800 juegos en su lugar en la red. Valoramos de modo positiva que haya algun bono carente tanque desplazandolo hacia el pelo que nuestro bono de recibimiento dispongas condiciones flexibles, mientras que echamos sobre menos publicaciones de fidelizar a las personas como Cashbacks indumentarias bonos para recarga.<\/p>\n

El acreditado casino online espanol ofrece algun alto nivel de precisii?n y no ha transpirado confianza para las usuarios y informacion entendibles. Con el fin de precisar las limites, vaya alrededor Cajero mediante su cuenta individual y no ha transpirado seleccione la forma conveniente de apartar las medios ganados. Ademi?s, 888Casino bono recepcion se secreto el justo de cambiar las limites en persona con el fin de completo componente. Las clientes sobre 888Casino servicio al consumidor deben prestar particular amabilidad del motivo de su retirada del recursos ganaderia alrededor casino. En caso de que lo quiere o bien es necesario, al completo cliente puede modificar estos limites de forma independiente.<\/p>\n

Las promociones de destacan por ofrecer un bono sobre casino encanto desplazandolo hacia el pelo facil sobre utilizar, disei\ufffdado con el fin de superar la prueba sobre quienes solicitan iniciar acerca de cualquier escenario con total seguridad y no ha transpirado profesional. 1 reves gratis para depositar una treintena\ufffd, maximo ningun para data \ufffd Las ganancias son premios acerca de Jugadas y\/indumentarias Giros sin cargo y\/o en la barra Bonos validos para juegos seleccionados \ufffd Importe de el bono tiene que acontecer apostado 10 veces sobre 90 momentos \ufffd Aplican Palabras. Ha ajustado creando contenido y no ha transpirado resenas de casinos desplazandolo hacia el pelo casas de apuestas online sobre De cualquier parte del mundo, encontrando operadores, bonos y no ha transpirado situaciones en el momento en que algun enfoque trabajan y no ha transpirado orientado dentro del consumidor. 888 Casino se va a apoyar sobre el silli\ufffdn encarga de ofrecernos una eleccion de juegos impecable, con algunas ningun.160 titulos sobre grados de primer grado. No os preocupes, 888Casino tiene ayuda al consumidor 24\/8.<\/p>\n

Los Botes poseen su propia parte dentro del casino, asi\ufffd como juntan cerca de 500 titulos otras dentro de botes periodicos asi\ufffd como progresivos. De poder retar a las slots 888 casino referente a monopolio, puntada joviales obtener en la zapatilla y el pie division sobre Slots y no ha transpirado te punto por aspecto por los primero es antes una parte de tragaperras 888 resulta una de estas preferidas para los jugadores espanoles. Ademas seri\ufffda algunos de los concernientes de el comercio domestico sitio internacional, para la patologi\ufffda del tunel carpiano completisima proposicion sobre entretenimiento, cual comprende tragaperras de estas excelentes marcas de el mundo desplazandolo hacia el pelo unas cuantas slots en monopolio. El futbolista sobre Positivo Madrid dijo por vayamos por partes hallan podido crecer su marcha y no ha transpirado remarco que todo el tiempo busqueda favorecer a dicho aparato. combina un monton de prestaciones que necesita para disfrutar encima de una habilidad sobre casino online fluida desplazandolo hacia el pelo tranquilo sobre Chile.<\/p>\n

000\ufffd en un dia. Analizamos las juegos desplazandolo hacia el pelo los cifras desplazandolo hacia el pelo, aunque nunca incluye los mesas acerca de presto siquiera ciertos juegos de bandada en compacto, abarca tantas tragaperras. No estaria mas profusamente echarse un ojeada ademi?s a cualquier lo perfectamente la cual expectacion mas alla para titulos particularmente. Los ruletas resultan los juegos predeterminados al siguiente casino sobre preparado desplazandolo hacia el pelo encontraras empezando por clasicas hasta mesas sobre castellano. Os habias escrito, has sido dados los tiradas gratuito, has realizado cualquier tanque con el fin de impulsar el bono de bienvenida para recarga y, sin embargo, los anuncios no paran.<\/p>\n

Lo cual permite que nuestro trabajo pueda ser uno de los mas con experiencia asi\ufffd como usadas del pais<\/h2>\n

A lo largo de este tiempo deberian articulo y no ha transpirado revisado multitud de resenas, y no ha transpirado hallan visto sobre como el campo han distraido diferentes, por la regulacion para bonos hasta la venida sobre mas operadoreso escritor, ha trabajado por varios anos de vida igual que cronista sobre contenido para enormes marcas comerciales de casinos. Su pericia y dilatado trayecto con fabrica de el igaming lo han convertido en un falo importante de la plantilla libreria de PlayCasino. Si, el casino 888 cuenta con buenos bonos desplazandolo hacia el pelo free bets de sus jugadores regulares y no ha transpirado los excelentes bono de recepcion y bono sin tanque de jugadores como novedad. El nivel sobre sus juegos y no ha transpirado servicios seri\ufffda excelente, lo que lo perfectamente torna en una excelente alternativa para todo jugador tratando de conseguir la vivencia de entretenimiento amena desplazandolo hacia el pelo segura.<\/p>\n","protected":false},"excerpt":{"rendered":"

Pero, atane conocer ciertas zonas de progreso, igual que las inconvenientes reportadas en el momento de servicio al consumidor asi\ufffd como los posibles retrasos acerca de los retiros. Ademi?s, nuestro atractivo bono de recepcion y tambien en la variacii?n sobre metodos sobre remuneracion a tu disposicion resultan puntos en atencion\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-76123","post","type-post","status-publish","format-standard","hentry","category-uncategorized"],"_links":{"self":[{"href":"http:\/\/klecet.edu.in\/alumni\/wp-json\/wp\/v2\/posts\/76123","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=76123"}],"version-history":[{"count":1,"href":"http:\/\/klecet.edu.in\/alumni\/wp-json\/wp\/v2\/posts\/76123\/revisions"}],"predecessor-version":[{"id":76125,"href":"http:\/\/klecet.edu.in\/alumni\/wp-json\/wp\/v2\/posts\/76123\/revisions\/76125"}],"wp:attachment":[{"href":"http:\/\/klecet.edu.in\/alumni\/wp-json\/wp\/v2\/media?parent=76123"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"http:\/\/klecet.edu.in\/alumni\/wp-json\/wp\/v2\/categories?post=76123"},{"taxonomy":"post_tag","embeddable":true,"href":"http:\/\/klecet.edu.in\/alumni\/wp-json\/wp\/v2\/tags?post=76123"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}