/* 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":73788,"date":"2026-05-22T22:15:22","date_gmt":"2026-05-22T22:15:22","guid":{"rendered":"https:\/\/klecet.edu.in\/alumni\/?p=73788"},"modified":"2026-05-22T22:15:24","modified_gmt":"2026-05-22T22:15:24","slug":"el-petroleo-cae-y-no-ha-transpirado-mejoramiento-nuestro-talante-del-mercado-entretanto-avanza-la-preventa-de-liquidchain","status":"publish","type":"post","link":"http:\/\/klecet.edu.in\/alumni\/el-petroleo-cae-y-no-ha-transpirado-mejoramiento-nuestro-talante-del-mercado-entretanto-avanza-la-preventa-de-liquidchain\/","title":{"rendered":"El petroleo cae y no ha transpirado mejoramiento nuestro talante del mercado entretanto avanza la preventa de LiquidChain"},"content":{"rendered":"

La plataforma posee 35 mercados sobre apuestas zapatillas deportivas y no ha transpirado mas de 6<\/h2>\n

De todos los tecnicos esta mezcla de desmesurados promociones y multiples estrategias de paga que usan Bitcoin a la cabeza resultan una gran envite. Que usan beneficios inmediatos desplazandolo hacia el pelo comisiones bajas, Bitcoin tiene la regulacion especifica alrededor del aldea e igualmente existe 100’s sobre cajeros Bitcoin para obtener recursos.<\/p>\n

La tarima debido a asume mas de una treintena criptomonedas, inclusive tokens ERC-15 y BEP-treinta, y no ha transpirado no necesita KYC en primer lugar a competir, lo cual la torna en una posibilidad excelente con el fin de jugadores cual priorizan intimidad y no ha transpirado celeridad. 000 juegos para definitivos grados de el comercio, a los que agregar un sportsbook total desplazandolo hacia el pelo con manga larga algunas 30 deportes. De esta plataforma destacamos las Cryptorino Printers, tal que son maquinas de Bitcoin slots que nuestro casino etiqueta como \ufffdimpresoras economicos\ufffd por es invierno marcha asi\ufffd como sus elevados botes. En caso de que tendri\ufffdas criptomonedas, puedes realizar depositos joviales recursos fiat, ademas soportados durante tarima.<\/p>\n

Lanzazo sobre 2022, esta inente como un proposito de total seriedad para energy casino<\/a> los amantes de las criptomonedas cual valoran el anonimato, la marcha y tambien en la equidad sobre la patologi\ufffda del tunel carpiano habilidad sobre juego. El tremendo bono de admision del 370% incluso $3,000 de el tarima presenta algunos de los servicios de comienzo de mas generosos de la industria. Una medio respalda las generosas anuncios de bonos de casino cripto con una inimaginable motivo de juegos cual representa alguna iv,000 titulos mas profusamente de $ 60 grados premium. La medio planifica las juegos sobre secciones diversos de “cripto” desplazandolo hacia el pelo “casino”, ayudando a las jugadores a localizar facilmente los titulos tal como son elegibles de bonificaciones sobre las grados preferidos. Una interfaz fino se encuentre disenada especificamente de gente de cripto, priorizando la prestacii?n, la privacidad y la decision.<\/p>\n

Permitir a las personas usar el anonimato y tambien en la comodidad de la criptodivisa en tanto que dan cualquier mundo de decision realiza que dichos sitios resultan importantes de una amplia variedad sobre jugadores. Oriente bosquejo permite a los usuarios impedir precisar de bancos y no ha transpirado otras organizaciones financieras, mientras les da una apariencia anadida sobre anonimato. Levante casino ademi?s esta dentro de los mejores sitios de apuestas de deporte Bitcoin dentro del proveer a los usuarios acceso en juegos como Dota dos, LoL y Overwatch. Desplazandolo hacia el pelo lo que asimismo preferible, la funcionalidad de su tarima permite a los usuarios engrosar los juegos de su eleccion en la pestana sobre juegos favoritos.<\/p>\n

El preferible entretenimiento sobre Bitcoin ruleta tenemos con el pasar del tiempo experiencias sobre juegos mas profusamente grato asi\ufffd como de mayor autenticas comparada con las plataformas fiat. A traves de una sencillez del Blackjack, es algun juego ordinario jugado entre las personas Bitcoin. Es algo lo mismo los plataformas de apuestas cripto siguen. Las plataformas no separado ofrecen bonificaciones y promociones desprovisto complicarnos demasiado, varones asimismo os proporcionan el segundo sobre coger bonos excelentes y no ha transpirado superiores.<\/p>\n

Cryptorino tiene unas 5<\/h2>\n

llegan a convertirse en focos de luces perfila como unas los superiores plataformas sobre casino sobre criptomonedas joviales bitcoin, ofreciendo a las jugadores la practica de juego excelente a traves de la zapatilla y el pie gigantesco eleccion sobra de cinco.000 juegos. Despues de todo, te veras en necesidad el test para estimar asi\ufffd como escoger las mas grandes plataformas de apuestas con BTC. Lo cual quiere decir cual con el fin de situar con criptomonedas debes solicitar a casinos off-shore, debidamente regulados, que sean asequibles empezando por Espana desplazandolo hacia el pelo tengan buena credibilidad dentro de las gente europeos. 000 juegos de casino. Tambien, demasiadas plataformas lanzan bonos particularmente y promociones especificas con el fin de quienes utilizan criptomonedas, lo que representa una ventaja anadido para jugadores ti\ufffdpicos. Asimismo, siempre de mas plataformas incorporan proyectos emergentes joviales gigantesco proyeccion igual que Solana indumentarias TRON, lo cual brinda a los jugadores una mi?s grande diversidad y flexibilidad al elaborar depositos y no ha transpirado retiros.<\/p>\n

De los jugadores que priorizan el entretenimiento en compania de Bitcoin con el pasar del tiempo solidos bonos y no ha transpirado operaciones responsables, BitStarz genera la eleccion contundente del de competicii?n mercado sobre casinos de hoy por hoy.Leer una Sus particulares Completa sobre Resena de BitStarz Las genericos de confianza mantienen la solida defensa en la circunstancia curriculums sobre usuario desplazandolo hacia el pelo transacciones. Levante enfoque cordial con las criptomonedas permite que BitStarz pueda ser exclusivos belleza para amantes de las monedas digitales. Una plataforma soporta jackpots progresivos desplazandolo hacia el pelo cualquier numero importante de mesas que usan crupieres acerca de presto impulsadas para los mas importantes criterios sobre aplicacion como Evolution Gaming y no ha transpirado Pragmatic Play. El tiempo de recaudacion seri\ufffda instantaneo, lo cual es una ventaja significativa para los jugadores que demandan obtener veloz a las ganancias.<\/p>\n

BTC ademi?s se va a apoyar sobre el silli\ufffdn beneficia de una la mas superior liquidez, lo que diri\ufffda las jugadores pueden modificar las ganancias referente a efectivo u otras criptomonedas con facilidad. Las precios usualmente transportan a las jugadores en aventuras, mitologia indumentarias busquedas sobre tesoros, mientras se fabrican con propiedades innovadoras cual protegen al completo reves emocionante. Seleccionar algun lugar respaldado para grados respetados garantiza resultados justos, una jugabilidad pulida y la amplia variedad de importes de gozar. Juegos igual que Pachinko ponen mecanicas sofisticadas inspiradas en los salones recreativos japoneses, entretanto que demas incluyen bingo, sorteos de suerte desplazandolo hacia el pelo importes experimentales acerca de blockchain, ofreciendo a los jugadores mas aventureros aun de mayor diversidad.<\/p>\n","protected":false},"excerpt":{"rendered":"

La plataforma posee 35 mercados sobre apuestas zapatillas deportivas y no ha transpirado mas de 6 De todos los tecnicos esta mezcla de desmesurados promociones y multiples estrategias de paga que usan Bitcoin a la cabeza resultan una gran envite. Que usan beneficios inmediatos desplazandolo hacia el pelo comisiones bajas,\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-73788","post","type-post","status-publish","format-standard","hentry","category-uncategorized"],"_links":{"self":[{"href":"http:\/\/klecet.edu.in\/alumni\/wp-json\/wp\/v2\/posts\/73788","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=73788"}],"version-history":[{"count":1,"href":"http:\/\/klecet.edu.in\/alumni\/wp-json\/wp\/v2\/posts\/73788\/revisions"}],"predecessor-version":[{"id":73789,"href":"http:\/\/klecet.edu.in\/alumni\/wp-json\/wp\/v2\/posts\/73788\/revisions\/73789"}],"wp:attachment":[{"href":"http:\/\/klecet.edu.in\/alumni\/wp-json\/wp\/v2\/media?parent=73788"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"http:\/\/klecet.edu.in\/alumni\/wp-json\/wp\/v2\/categories?post=73788"},{"taxonomy":"post_tag","embeddable":true,"href":"http:\/\/klecet.edu.in\/alumni\/wp-json\/wp\/v2\/tags?post=73788"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}