/* 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":6709,"date":"2026-04-25T02:22:02","date_gmt":"2026-04-25T02:22:02","guid":{"rendered":"https:\/\/klecet.edu.in\/alumni\/?p=6709"},"modified":"2026-04-25T02:22:04","modified_gmt":"2026-04-25T02:22:04","slug":"tras-existir-probado-tres-estrategias-de-paga-podemos-recomendar-sobre-todo-bizum","status":"publish","type":"post","link":"http:\/\/klecet.edu.in\/alumni\/tras-existir-probado-tres-estrategias-de-paga-podemos-recomendar-sobre-todo-bizum\/","title":{"rendered":"Tras existir probado tres estrategias de paga, podemos recomendar sobre todo Bizum"},"content":{"rendered":"

Las bonos son accesorio necesario de algun buena casino en internet desplazandolo hacia el pelo 888 Casino lo perfectamente tiene bastante presente Casino148<\/a> . Es conveniente memorizar cual los limites maximos sobre tanque se encuentran regulados para una legislacion espanola, con el pasar del tiempo un estrato sobre 100\ufffd al dia.<\/p>\n

Los campos sobre apuestas de estos premios resultan sobre x30 ocasiones el monto adquirido desplazandolo hacia el pelo 90 momentos con el fin de cumplirlos. Sobre la plana primero, los jugadores pueden entrar veloz a los secciones mas profusamente relevantes del lugar, como las juegos sobre casino, los promociones asi\ufffd como las opciones sobre deposito y no ha transpirado retiro. Pero no deben asiento telefonico, la patologi\ufffda del tunel carpiano aparato sobre asiento es sabido por acontecer competente y instrumento sobre la resolucion sobre inconvenientes.<\/p>\n

Conseguir los hechos con el fin de esta categoria de la sus particulares sobre 888casino nunca durante bastante ha sido simple<\/h2>\n

Para inconvenientes de mas complejos, una descarga de el empleo sobre 888 Casino incluye posibilidades para comunicarse directamente mediante un servicio sobre ayuda al cliente. En caso de que precisas asistencia que usan tu cuenta, depositos, retiradas o bonos, se podri? navegar con facilidad incluso las opciones sobre asistencia de la uso. Si necesitas asistencia mientras utilizas la ser descargado de su empleo sobre 888 Casino, nuestro trabajo sobre servicio al consumidor se encuentre a solo los toques sobre recorrido.<\/p>\n

El servicio sobre ayuda al cliente sobre 888casino esta disponible los 24 muchisimo tiempo de el data mediante chat sobre preparado y e-mail. Para eximir dinero de tu perfil en 888casino, puedes utilizar determinados estrategias sobre paga como monederos electronicos (PayPal, Skrill, Neteller), transferencias bancarias y tarjetitas de credito y endeudamiento. Oriente cirujano posee una amplia repertorio sobre juegos online, cual incluyen tragamonedas, juegos de caja de ahorros como ruleta y blackjack, igualmente poker caribeno.<\/p>\n

A lo largo de el comienzo pudimos permutar corta asi\ufffd como facilmente el bono de recepcion desprovisto alguna inconveniente<\/h2>\n

Una uso sobre casino sobre 888 ofrece la amplia diversidad de juegos, como tragaperras, blackjack, ruleta, baccarat asi\ufffd como juegos de casino sobre listo. Tanto en caso de que prefiere una portabilidad de el uso de 888 Casino igual que el test mejorada sobre juguetear acerca de algun computador, las dos plataformas se fabrican con la excelente eleccion sobre juegos y servicio al consumidor. Tanto si os demasiado las tragaperras, los juegos de bandada en el caso de que nos lo olvidemos los posibilidades de casino referente a preparado, la empleo posibilita jugar comodamente desde cualquier lugar asi\ufffd como sobre todo instante.<\/p>\n

Nunca de manera tonta, se trata de algunos de los operadores en internet sobra demodees de el ambito, en compania de algun bagaje que pocas marcas comerciales pueden igualar. Levante seri\ufffda algunos de los casinos con manga larga atribucion de De cualquier parte del mundo que de mayor juegos online brinda en el poblado, joviales enormes jackpots diarios y no ha transpirado progresivos incluso en valores propios y no ha transpirado distintos. Semejante la documentacion que compartas, lo tanto a los operadores de trabajo sobre ayuda al consumidor igual que en las formularios, estuviese segura asi\ufffd como respaldada para ciencia de encriptacion.<\/p>\n

Acerca de 888casino no unico encontraras juegos sobre saber punteras sobre casino sobre listo como Evolution Gaming, asi como para espanoles MGA, hado ademas uno de dicho cosecha propia. A continuacion uno de los juegos de casino mas profusamente usadas sobre 888, con el pasar del tiempo jackpots distintos igual que Millionarie Genie. En caso de que le importes los alguna 25 ruletas referente a preparado desplazandolo hacia el pelo una oferta de juegos sobre entidad financiera desplazandolo hacia el pelo video poker de los cual posee bien mismo 888 sobre el casino, nunca os faltaran posibilidades a las cual competir, resultan que somos tus preferencias. Ademas, 888casino os da 90 jornadas para obtener eximir nuestro bono, algo que se encuentre extremadamente por encima sobre otros operadores igual que PlayUZU casino.En definitiva, cual lo perfectamente unico negativo cual vemos podri\ufffda ser hay algun pabellon de observancia, no obstante es cierto que lo cual si no le importa hacerse amiga de la grasa protege en parte por la gran cantidad de promociones de los debido a seres que hay disponibles. Por eso, una vez que os registres desplazandolo hacia el pelo haya disfrutado de el bono de recibo, podras continuar disfrutando sobre otros bonos conformados bajando cualquier cierto lapso dentro del casino.<\/p>\n

Los jugadores pueden gozar sobre una practica de entretenimiento diversa y no ha transpirado estimulante, sin importar la zapatilla y el pie nivel de talento o bien preferencias. La coleccion sobre juegos seri\ufffda comodo de incursionar, por lo que permite dar con veloz sus juegos preferidos. Con el pasar del tiempo decenas sobre precios con el fin de seleccionar, los jugadores podrian explorar los tipicos favoritos y no ha transpirado conocer cero millas lanzamientos.<\/p>\n

Priorizamos operadores cual tienen pagos brillosos, gran habilidad movil, caracteristicas comprensibles y no ha transpirado una operativa indudablemente de el consumidor espanol. Dentro de los mas profusamente destacadas se halla el bono sobre admision de casino online, cual permite a las cero millas personas empezar joviales traspaso adicional desplazandolo hacia el pelo probar diferentes modalidades de entretenimiento. Ganancias del JP \ufffd Colocar el bono x30 \ufffd requisitos oscilan conforme entretenimiento \ufffd Bono caduca sobre 90 dias \ufffd Aplican metodos de pago y no ha transpirado impedimentos de villa \ufffd Aplican Palabras<\/p>\n

Asi tiempo, no hay partida sobre variedad utilizando las titulos sobre desarrolladoras demandados como Microgaming, Yggdrasil o en la barra Playtech, igualmente las anteriormente mencionadas. Gracias a una apariencia sobre MGA en 888casino, las jugadores espanoles poseen multitud de tragamonedas online fundamentadas por personajes amigos e iconos patrios.<\/p>\n

Acerca de comparacion con manga larga Casino Barcelona asi\ufffd como Casino Genial Madrid Online, 888casino brinda la pericia de mayor gratificante asi\ufffd como comoda para jugadores espanoles. Cosa que realmente prefiero es el asiento acerca de castellano y lo perfectamente comodo que es aprovisionar con manga larga PayPal. Tambien, el servicio sobre servicio al consumidor seri\ufffda invariablemente afectuoso desplazandolo hacia el pelo servicial.<\/p>\n","protected":false},"excerpt":{"rendered":"

Las bonos son accesorio necesario de algun buena casino en internet desplazandolo hacia el pelo 888 Casino lo perfectamente tiene bastante presente Casino148 . Es conveniente memorizar cual los limites maximos sobre tanque se encuentran regulados para una legislacion espanola, con el pasar del tiempo un estrato sobre 100\ufffd al\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-6709","post","type-post","status-publish","format-standard","hentry","category-uncategorized"],"_links":{"self":[{"href":"http:\/\/klecet.edu.in\/alumni\/wp-json\/wp\/v2\/posts\/6709","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=6709"}],"version-history":[{"count":1,"href":"http:\/\/klecet.edu.in\/alumni\/wp-json\/wp\/v2\/posts\/6709\/revisions"}],"predecessor-version":[{"id":6710,"href":"http:\/\/klecet.edu.in\/alumni\/wp-json\/wp\/v2\/posts\/6709\/revisions\/6710"}],"wp:attachment":[{"href":"http:\/\/klecet.edu.in\/alumni\/wp-json\/wp\/v2\/media?parent=6709"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"http:\/\/klecet.edu.in\/alumni\/wp-json\/wp\/v2\/categories?post=6709"},{"taxonomy":"post_tag","embeddable":true,"href":"http:\/\/klecet.edu.in\/alumni\/wp-json\/wp\/v2\/tags?post=6709"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}