/* 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":76484,"date":"2026-05-22T22:26:54","date_gmt":"2026-05-22T22:26:54","guid":{"rendered":"https:\/\/klecet.edu.in\/alumni\/?p=76484"},"modified":"2026-05-22T22:26:55","modified_gmt":"2026-05-22T22:26:55","slug":"buscando-haber-probado-tres-metodos-sobre-pago-podemos-recomendar-especialmente-bizum","status":"publish","type":"post","link":"http:\/\/klecet.edu.in\/alumni\/buscando-haber-probado-tres-metodos-sobre-pago-podemos-recomendar-especialmente-bizum\/","title":{"rendered":"Buscando haber probado tres metodos sobre pago, podemos recomendar especialmente Bizum"},"content":{"rendered":"

Los bonos resultan complemento necesario sobre algun genial casino en internet asi\ufffd como 888 Casino lo perfectamente posee bastante actual. Es conveniente rememorar que las limites maximos sobre tanque se encuentran regulados por una reglamento espanola, joviales algun estrato sobre 160\ufffd al tanto.<\/p>\n

Las campos de apuestas sobre estos premios son de x30 ocasiones el monto obtenido desplazandolo hacia el pelo 90 dias para cumplirlos. En la plana 5Gringos<\/a> primeramente, las jugadores pueden obtener corto a las secciones mas relevantes de el lugar, igual que las juegos sobre casino, las promociones y no ha transpirado los alternativas sobre tanque asi\ufffd como jubilacion. Pero nunca ofrecen soporte telefonico, dicho aparato de apoyo es conocido por ser eficaz y no ha transpirado utensilio durante decision sobre inconvenientes.<\/p>\n

Obtener las textos para este apartado de el resena de 888casino no ha sido simple<\/h2>\n

Con el fin de inconvenientes sobra complejos, la ser descargado de la uso de 888 Casino abarca opciones de contactar directamente utilizando trabajo sobre servicio al usuario. Si precisas ayuda con tu cuenta, depositos, retiradas en el caso de que nos lo olvidemos bonos, puedes navegar con facilidad hasta las posibilidades sobre ayuda de su empleo. Si necesitas asistencia entretanto haces uso de la ser descargado de su aplicacion sobre 888 Casino, el servicio de servicio al cliente esta a unicamente unos toques de distancia.<\/p>\n

Nuestro servicio de servicio al cliente de 888casino hay los 24 muchas horas de el dia a traves de chat referente a avispado asi\ufffd como correo electronico. De retirar recursos de tu cuenta sobre 888casino, es posible usar ciertos estrategias sobre pago como monederos electronicos (PayPal, Skrill, Neteller), transferencias bancarias y no ha transpirado cartas sobre reputacion desplazandolo hacia el pelo deuda. Levante operador tiene una amplia escala sobre juegos online, que incorporan tragamonedas, juegos de caja de ahorros igual que ruleta desplazandolo hacia el pelo blackjack, tambien poker caribeno.<\/p>\n

Durante nuestro comienzo pudimos canjear rapida asi\ufffd como facilmente nuestro bono sobre audiencia falto casi nada incomodidad<\/h2>\n

La aplicacion de casino sobre 888 brinda una amplia variedad de juegos, como tragaperras, blackjack, ruleta, baccarat desplazandolo hacia el pelo juegos sobre casino referente a avispado. Lo tanto si prefiere una portabilidad de su aplicacion de 888 Casino como la prueba mejorada sobre apostar sobre cualquier computador, ambas plataformas tienen la excelente coleccion de juegos y no ha transpirado ayuda al consumidor. Tanto si os triunfan las tragaperras, las juegos sobre banco o en la barra las posibilidades sobre casino en listo, una uso facilita participar confortablemente desde cualquier otra espacio asi\ufffd como en todo segundo.<\/p>\n

No tontamente, serian algunos de los operadores online de mayor ai\ufffdejos de el sector, con el pasar del tiempo algun bagaje cual pocas marcas comerciales podran igualar. Este seri\ufffda uno de los casinos en compania de autorizacion de Espana que sobra juegos online provee en el pueblo, con mayusculos jackpots diarios asi\ufffd como progresivos incluso en importes propios y no ha transpirado particularmente. Todo la documentacion cual compartas, lo tanto a los operadores sobre servicio sobre servicio al usuario igual que referente a las formularios, estaria segura desplazandolo hacia el pelo respaldada para ciencia sobre encriptacion.<\/p>\n

Acerca de 888casino no unico hallaras juegos sobre saber modernas sobre casino en avispado como Evolution Gaming, desplazandolo hacia el pelo para los espanoles MGA, fortuna ademi?s uno de el cosecha propia. A conotinuacion le anumero uno de los juegos de casino mas utilizadas acerca de 888, con el pasar del tiempo jackpots distintos como Millionarie Genie. Si le costos las mas de 25 ruletas acerca de presto asi\ufffd como una propuesta sobre juegos sobre caja de ahorros desplazandolo hacia el pelo video poker para los cual tiene ya mismo 888 acerca de su casino, nunca os faltaran opciones a los que jugar, serian que somos hacen de predilecciones. Igualmente, 888casino te proporciona 90 las jornadas con el fin de obtener eximir el bono, algo cual esta muy por encima sobre otros operadores igual que PlayUZU casino.En definitiva, cual lo solo cenizo cual vemos es que hay cualquier club sobre observancia, pero seri\ufffda cierto que esto si no le importa hacerse amiga de la grasa abriga acerca de adorno debido a la muchos promociones para los ahora gente a su disposicion. Asi que, una vez que os registres asi\ufffd como encuentra disfrutado del bono de recibo, deberias seguir disfrutando de otras bonos conformados lanzando completo exacto tiempo en el casino.<\/p>\n

Los jugadores podrian gozar sobre una vivencia sobre entretenimiento diversa y no ha transpirado apasionante, no importa la zapatilla y el pie nivel sobre talento o en la barra preferencias. La seleccion sobre juegos seri\ufffda comodo de navegar, asi que permite encontrar corto las juegos preferidos. Con el pasar del tiempo cientos sobre valores para escoger, las jugadores podrian explorar las clasicos favoritos y reconocer recientes lanzamientos.<\/p>\n

Priorizamos operadores cual ofrecen pagos brillosos, buena habilidad smartphone, caracteristicas comprensibles y no ha transpirado la operativa fiable al siguiente usuario castellano. Dentro de los mayormente destacadas esta nuestro bono de recibo de casino online, cual deja a los nuevos individuos empezar con cesion anadida y sufrir otras clases de juego. Ganancias de el JP \ufffd Apostar nuestro bono x30 \ufffd requisitos oscilan segun entretenimiento \ufffd Bono caduca acerca de 90 dias \ufffd Aplican estrategias de pago y no ha transpirado impedimentos de poblado \ufffd Aplican Palabras<\/p>\n

Asi exacto, hay marcha sobre disparidad mediante las importes de desarrolladoras famosos como Microgaming, Yggdrasil en el caso de que nos lo olvidemos Playtech, tambien las antiguamente mencionadas. Mediante una figura de MGA en 888casino, las jugadores espanoles poseen diversas tragamonedas online basadas por personas amistades movernos iconos patrios.<\/p>\n

Acerca de confrontacion en compania de Casino Barcelona asi\ufffd como Casino Gran Madrid Online, 888casino ofrece la experiencia de mayor gratificante y accesible de los jugadores espanoles. Cosa que efectivamente deseo que seri\ufffda nuestro apoyo referente a espanol desplazandolo hacia el pelo lo facil la cual es aprovisionar en compania de PayPal. Igualmente, nuestro trabajo de ayuda al consumidor es continuamente cordial asi\ufffd como atento.<\/p>\n","protected":false},"excerpt":{"rendered":"

Los bonos resultan complemento necesario sobre algun genial casino en internet asi\ufffd como 888 Casino lo perfectamente posee bastante actual. Es conveniente rememorar que las limites maximos sobre tanque se encuentran regulados por una reglamento espanola, joviales algun estrato sobre 160\ufffd al tanto. Las campos de apuestas sobre estos premios\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-76484","post","type-post","status-publish","format-standard","hentry","category-uncategorized"],"_links":{"self":[{"href":"http:\/\/klecet.edu.in\/alumni\/wp-json\/wp\/v2\/posts\/76484","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=76484"}],"version-history":[{"count":1,"href":"http:\/\/klecet.edu.in\/alumni\/wp-json\/wp\/v2\/posts\/76484\/revisions"}],"predecessor-version":[{"id":76485,"href":"http:\/\/klecet.edu.in\/alumni\/wp-json\/wp\/v2\/posts\/76484\/revisions\/76485"}],"wp:attachment":[{"href":"http:\/\/klecet.edu.in\/alumni\/wp-json\/wp\/v2\/media?parent=76484"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"http:\/\/klecet.edu.in\/alumni\/wp-json\/wp\/v2\/categories?post=76484"},{"taxonomy":"post_tag","embeddable":true,"href":"http:\/\/klecet.edu.in\/alumni\/wp-json\/wp\/v2\/tags?post=76484"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}