/* 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":157475,"date":"2026-06-16T07:05:30","date_gmt":"2026-06-16T07:05:30","guid":{"rendered":"https:\/\/klecet.edu.in\/alumni\/?p=157475"},"modified":"2026-06-16T07:05:30","modified_gmt":"2026-06-16T07:05:30","slug":"azurslot-casino-juega-descansa-y-gana-experiencias-memorables-en-espana","status":"publish","type":"post","link":"http:\/\/klecet.edu.in\/alumni\/azurslot-casino-juega-descansa-y-gana-experiencias-memorables-en-espana\/","title":{"rendered":"Azurslot Casino \u2013 Juega, descansa y gana experiencias memorables en Espa\u00f1a"},"content":{"rendered":"
\n

Azurslot Casino se presenta como un lugar atractivo para los jugadores espa\u00f1oles que desean tanto relajaci\u00f3n como la adrenalina de potenciales ganancias https:\/\/azurslot-casino.net\/es-es\/<\/a>. Con una amplia selecci\u00f3n de slots y juegos de mesa tradicionales, los jugadores descubrir\u00e1n algo que se ajuste a su estilo. La interfaz intuitiva del casino mejora la experiencia, facilitando la navegaci\u00f3n. Sin embargo, el verdadero encanto se encuentra en c\u00f3mo los participantes pueden utilizar las ofertas y estrategias para optimizar su juego. \u00bfQu\u00e9 novedades les esperan?<\/p>\n

\u00bfPor qu\u00e9 elegir Azurslot Casino para tu experiencia de juego?<\/h2>\n

Al evaluar d\u00f3nde gozar de los juegos en l\u00ednea, los jugadores tienden a encontrar que Azurslot Casino destaca por su excepcional oferta. Una de las fundamentales razones de esta diferencia es su dedicaci\u00f3n con una atenci\u00f3n al cliente de primer nivel. Los jugadores aprecian el servicio de asistencia accesible las 24 horas, los 7 d\u00edas de la semana, que garantiza que cualquier pregunta o duda se solucione con prontitud. Esto facilita una vivencia de juego sin interrupciones que hace que los jugadores regresen. Adem\u00e1s, Azurslot proporciona una gama de opciones de pago convenientes, lo que facilita los ingresos y retiros. Con m\u00e9todos confiables que van desde tarjetas de cr\u00e9dito hasta billeteras digitales, los jugadores tienen flexibilidad y tranquilidad. Al priorizar tanto la asistencia al usuario como las variadas opciones de transacci\u00f3n, Azurslot Casino crea con \u00e9xito un ambiente agradable y libre de problemas para los jugadores que desean adentrarse en los juegos en l\u00ednea.<\/p>\n

Sugerencias para maximizar tus ganancias en el casino Azurslot<\/h2>\n

Para aumentar tus posibilidades de ganar en Azurslot Casino, los jugadores deben tener en cuenta algunas t\u00e1cticas clave. Primero, una administraci\u00f3n eficaz del presupuesto es fundamental; te permite a evitar desembolsos innecesarios y a gozar de los juegos durante m\u00e1s tiempo. Segundo, tener con una estrategia de juego firme puede mejorar significativamente tus chances; elige juegos con un RTP (retorno al jugador) elevado y entiende bien las normas. Por \u00faltimo, aprovecha las promociones y bonos que proporciona Azurslot; estos te ofrecen oportunidades adicionales de triunfar sin arriesgar m\u00e1s fondos.<\/p>\n

    \n
  1. Fija un presupuesto y c\u00famplelo.<\/li>\n
  2. Investiga los juegos y sus estrategias.<\/li>\n<\/ol>\n
  3. Aprovecha las promociones para optimizar el per\u00edodo de juego.<\/li>\n

    Descuentos y bonos para impulsar tu juego.<\/h2>\n

    Si bien muchos casinos proporcionan ofertas, Azurslot Casino se distingue por su extensa gama de incentivos creados para mejorar la sensaci\u00f3n de los jugadores. Su oferta abarca interesantes recompensas de entrada y premios por lealtad que marcan la diferencia. A continuaci\u00f3n, presentamos algunos de los aspectos m\u00e1s relevantes de las promociones de Azurslot:<\/p>\n

      \n
    1. Bonos de bienvenida<\/strong><\/li>\n
    2. Premios por lealtad<\/strong><\/li>\n
    3. Descuentos temporales<\/strong><\/li>\n<\/ol>\n

      Estas ofertas garantizan que los jugadores aumenten su entretenimiento al tiempo que incrementan sus posibilidades de obtener grandes premios en Azurslot Casino.<\/p>\n

      Plataforma f\u00e1cil de usar para todos los jugadores.<\/h2>\n

      Aunque muchos casinos en l\u00ednea pueden ser intimidantes para los novatos, Azurslot Casino proporciona una interfaz f\u00e1cil de navegar dise\u00f1ada para jugadores de todos los niveles. Gracias a su dise\u00f1o amigable, los usuarios comprenden r\u00e1pidamente la estructura y localizan f\u00e1cilmente sus juegos y caracter\u00edsticas preferidas. El sitio garantiza una exploraci\u00f3n sin problemas, facilitando a los jugadores navegar entre secciones sin complicaciones. Los gr\u00e1ficos son claros y llamativos, mejorando la experiencia general sin comprometer la operatividad. Tanto para veteranos como para principiantes, Azurslot Casino prioriza la accesibilidad y la conveniencia. La data se presenta de forma clara, ayudando a los jugadores a tomar decisiones informadas. Ya sea en un computadora o en un dispositivo m\u00f3vil, la interfaz es simple, lo que garantiza que todos los jugadores gocen de su experiencia de juego sin problemas. Azurslot Casino se ajusta a cualquiera.<\/p>\n

      Una emocionante selecci\u00f3n de juegos: slots, juegos de mesa y otros entretenimientos.<\/h2>\n

      En Azurslot Casino, la emoci\u00f3n del juego cobra vida con una impresionante selecci\u00f3n de m\u00e1quinas tragamonedas, juegos de cartas y mucho m\u00e1s. Los jugadores pueden involucrarse en una gran variedad de tragamonedas que comprende desde las cl\u00e1sicas de tres rodillos hasta las \u00faltimas video slots con emocionantes tem\u00e1ticas y mec\u00e1nicas de juego creativas. Cada slot ofrece funciones singulares, proporcionando entretenimiento inagotable para todo tipo de jugador. La categor\u00eda de juegos de mesa tambi\u00e9n es destacable, mostrando alternativas conocidas como veintiuno, ruleta y p\u00f3ker, todas concebidas para ofrecer una experiencia de juego veros\u00edmil. Ya sea que te guste hacer girar los tambores o mejorar las t\u00e9cnicas en las mesas, Azurslot Casino ofrece una experiencia de juego activa que se ajusta a todos los intereses, convirti\u00e9ndolo en una de las m\u00e1s destacadas alternativas para los aficionados en Espa\u00f1a.<\/p>\n

      Conclusi\u00f3n<\/h2>\n

      En s\u00edntesis, Azurslot Casino se sobresale como una sobresaliente alternativa para los usuarios en Espa\u00f1a que buscan tanto descanso como entretenimiento. Con su diversa gama de opciones de juego, seductoras ofertas y una plataforma amigable, los apostadores pueden involucrarse f\u00e1cilmente en un escenario de juego emocionante. El soporte al cliente 24\/7 y las m\u00e9todos de pago seguras mejoran a\u00fan m\u00e1s la interacci\u00f3n, brindando tranquilidad mientras aprovechan de la chance de ganar grandes premios. Para quienes buscan elevar su vivencia de juego, Azurslot Casino es el destino perfecto.<\/p>\n<\/div>\n","protected":false},"excerpt":{"rendered":"

      Azurslot Casino se presenta como un lugar atractivo para los jugadores espa\u00f1oles que desean tanto relajaci\u00f3n como la adrenalina de potenciales ganancias https:\/\/azurslot-casino.net\/es-es\/. Con una amplia selecci\u00f3n de slots y juegos de mesa tradicionales, los jugadores descubrir\u00e1n algo que se ajuste a su estilo. La interfaz intuitiva del casino mejora\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-157475","post","type-post","status-publish","format-standard","hentry","category-uncategorized"],"_links":{"self":[{"href":"http:\/\/klecet.edu.in\/alumni\/wp-json\/wp\/v2\/posts\/157475","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=157475"}],"version-history":[{"count":1,"href":"http:\/\/klecet.edu.in\/alumni\/wp-json\/wp\/v2\/posts\/157475\/revisions"}],"predecessor-version":[{"id":157476,"href":"http:\/\/klecet.edu.in\/alumni\/wp-json\/wp\/v2\/posts\/157475\/revisions\/157476"}],"wp:attachment":[{"href":"http:\/\/klecet.edu.in\/alumni\/wp-json\/wp\/v2\/media?parent=157475"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"http:\/\/klecet.edu.in\/alumni\/wp-json\/wp\/v2\/categories?post=157475"},{"taxonomy":"post_tag","embeddable":true,"href":"http:\/\/klecet.edu.in\/alumni\/wp-json\/wp\/v2\/tags?post=157475"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}