/* 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":1688,"date":"2025-12-03T08:30:27","date_gmt":"2025-12-03T08:30:27","guid":{"rendered":"https:\/\/klecet.edu.in\/alumni\/?p=1688"},"modified":"2026-04-03T23:59:46","modified_gmt":"2026-04-03T23:59:46","slug":"mquinas-tragamonedas-online-gratis-11","status":"publish","type":"post","link":"https:\/\/klecet.edu.in\/alumni\/mquinas-tragamonedas-online-gratis-11\/","title":{"rendered":"M\ufffdquinas Tragamonedas Online Gratis"},"content":{"rendered":"

Te recomendamos leer bien las instrucciones y utilizar las reglas visuales que superponen las l\u00edneas encima del juego. Ideal para divertirse y practicar antes de apostar dinero real en los mejores casinos online. El rollover es el n\u00famero de veces que debes apostar las ganancias obtenidas con giros gratis antes de poder retirarlas. Independientemente de la promoci\u00f3n que elijas, hay algunos aspectos clave que debes considerar antes de reclamar tu bono de tiradas gratis.<\/p>\n

Aprende la mec\u00e1nica del juego<\/h2>\n

En nuestra web podr\u00e1s disfrutar de excitantes juegos gratis, en las tragamonedas del momento y al alcance de un solo clic. 10 l\u00edneas de pago esperan a que demuestres si naciste con suerte. Pues escoge una apuesta m\u00e1s baja y que empiece la diversi\u00f3n en la tragamonedas. S\u00ed, en la actualidad, la mayor\u00eda de las slots se desarrollan utilizando la tecnolog\u00eda m\u00e1s avanzada para que puedas disfrutarlas en dispositivos peque\u00f1os como tel\u00e9fonos y tabletas. Para ello, consulta nuestra lista de los mejores casinos online, todos ellos revisados y valorados por nuestro equipo. Esto significa que podr\u00e1s disfrutar de los bonus habituales, como las rondas de spins gratis y los multiplicadores, que suelen activarse cuando aparecen s\u00edmbolos especiales.<\/p>\n

Cleopatra: la mejor opci\u00f3n para un juego sencillo<\/h2>\n

Los juegos no son “juegos de azar con dinero real” ni ofrecen la oportunidad de ganar dinero real o premios. Adem\u00e1s, cada mes descubrir\u00e1s nuevos juegos en Slot.com para que siga la diversi\u00f3n online. Divi\u00e9rtete en nuestro casino online con los juegos de tragamonedas m\u00e1s entretenidos. Practica tus mejores habilidades en las tragaperras y m\u00e1quinas de casino en los diferentes juegos gratis sin descargas. S\u00ed, la mayor\u00eda de nuestras demos de tragamonedas gratis funcionan con HTML5 o Flash, lo que las hace f\u00e1ciles de acceder directamente desde tu navegador.<\/p>\n

\u00bfD\u00f3nde puedo jugar juegos de casino en l\u00ednea gratis?<\/h2>\n

Lo que reduce el riesgo y aumenta tu confianza antes de dar el paso a jugar con dinero real. Conoce nuestra selecci\u00f3n de los mejores casinos online, elegidos por su calidad, cat\u00e1logo y beneficios pensados para quienes buscan practicar antes de jugar con dinero real. No, estas versiones est\u00e1n dise\u00f1adas solo para jugar en modo demo y disfrutar sin riesgo econ\u00f3mico, permiti\u00e9ndote probar diferentes juegos y aprender sus mec\u00e1nicas. Jugar a slots gratis te permite probar juegos, aprender sus mec\u00e1nicas y divertirte sin riesgo. Jugar a slots online gratis te permite disfrutar de toda la diversi\u00f3n sin arriesgar tu dinero. Su colorido dise\u00f1o y mec\u00e1nicas entretenidas lo convierten en una opci\u00f3n ideal para jugar gratis.<\/p>\n

C\u00f3mo jugar a las m\u00e1quinas tragamonedas gratis<\/h2>\n

El mercado de juegos de casino est\u00e1 lleno de tragamonedas gratis con una gran variedad de temas y funciones especiales. En Templo de Slots, te ofrecemos un gran cat\u00e1logo de m\u00e1quinas tragamonedas online gratis, as\u00ed como juegos de ruleta, baccarat, video poker y otros juegos de casino gratis. Esto significa que se usa dinero ficticio, por lo que podr\u00e1s \u00abganar\u00bb sin correr el riesgo de perder dinero. Los requisitos de apuesta son x40 y el l\u00edmite de retiro m\u00e1ximo es 50\u20ac, una oportunidad perfecta para probar los mejores juegos de casino online sin riesgo. Los requisitos de apuesta son x25, una oportunidad perfecta para probar los mejores juegos de casino online sin riesgo.<\/p>\n

\u00bfC\u00f3mo puedo jugar a las tragamonedas gratis sin descargar y sin dinero?<\/h2>\n

Nuestra plataforma ofrece una comunidad vibrante donde los jugadores pueden compartir sus experiencias, ofrecer consejos y trucos y participar en debates sobre sus juegos de tragamonedas favoritos. Nuestra colecci\u00f3n de juegos de tragamonedas gratuitos se actualiza continuamente con nuevos juegos y funciones, lo que garantiza que siempre haya algo nuevo y emocionante para explorar. La plataforma ofrece una amplia gama de juegos de tragamonedas a los que puedes jugar al instante, sin ning\u00fan compromiso financiero ni registro. Ya sea que est\u00e9 interesado en las tragamonedas de casino tradicionales de 3 carretes o en juegos m\u00e1s complejos con l\u00edneas de pago avanzadas, nuestro cat\u00e1logo gratuito de tragamonedas de casino tiene algo para todos y no requiere dep\u00f3sito.<\/p>\n

Video slots casino:<\/h2>\n

Incluso si eres un fan\u00e1tico de jugar con dinero real y est\u00e1s tratando de obtener beneficio, hay momentos en los que deber\u00edas considerar jugar este tipo de tragamonedas gratis. E incluso ver\u00e1s juegos gratis de tragamonedas innovadores de reci\u00e9n llegados como Pocket Games Soft. Los proveedores de software de casino son las empresas que est\u00e1n detr\u00e1s de las tragamonedas gratis online que conocemos y amamos.<\/p>\n

Encontrar\u00e1s las mejores opciones en nuestra lista de los mejores casinos online, que recoge aquellos que han obtenido la mejor valoraci\u00f3n de nuestros expertos. Si encuentras un juego al que te apetecer\u00eda jugar con dinero real, consulta la lista de casinos que aparece bajo la ventana del juego en cuesti\u00f3n. Sin embargo, siempre cabe la posibilidad de que quieras jugar con dinero real m\u00e1s adelante. En cualquier caso, sigues disponiendo de una gran variedad de juegos a los que puedes jugar de forma gratuita desde tu pa\u00eds. En la actualidad, nos dirigimos hacia un mundo de tecnolog\u00edas m\u00e1s avanzadas e inmersivas con capacidad para revolucionar la experiencia de los juegos de casino online. Mega Fire Blaze Roulette es un juego de Playtech que combina la emoci\u00f3n de las apuestas con las reglas de la ruleta europea.<\/p>\n

\u00bfCu\u00e1ntas l\u00edneas de pago tiene una slot?<\/h2>\n

Los requisitos de apuesta (o requisitos de juego) indican cu\u00e1ntas veces debes apostar el dinero ganado con un bono de giros gratis antes de poder retirarlo. Para sacarles el m\u00e1ximo partido, es fundamental conocer nuestras reglas de oro, que te ayudar\u00e1n a disfrutar de los mejores giros gratis y tiradas sin complicaciones. En VegasSlotsOnline, la mayor\u00eda de nuestras promociones son giros gratis sin dep\u00f3sito, aunque tambi\u00e9n encontrar\u00e1s bonos de tiradas gratis con dep\u00f3sito en diferentes slots y tragaperras.<\/p>\n

Jugar tragamonedas gratis en Slots.lat<\/h2>\n

\u00a1Acabas de encontrar la biblioteca m\u00e1s grande de juegos de tragamonedas gratis online! Esto significa que ni las apuestas, ni las ganancias, ni las p\u00e9rdidas son reales. As\u00ed, puedes disfrutar de los juegos de tragamonedas gratis, jugando con dinero ficticio.<\/p>\n

Hot Shot Progressive: la mejor opci\u00f3n para juegos de bonificaci\u00f3n<\/h2>\n

No necesitas registrarte ni descargar ning\u00fan software, y puedes practicar para jugar por dinero real, o simplemente disfrutar sin ning\u00fan riesgo. Jugar por diversi\u00f3n puede estar bien, pero t\u00fa quieres hacer saltar la banca del casino. Nuestros expertos en casinos online han evaluado numerosos juegos de casino y m\u00e1quinas tragamonedas para traerte los favoritos de noviembre. Nuestro equipo de expertos ha efectuado una b\u00fasqueda meticulosa para identificar los mejores casinos en l\u00ednea en M\u00e9xico que ofrecen los juegos de casino m\u00e1s populares del pa\u00eds. Totalmente gratis, lo \u00fanico que debes hacer es registrarte (con Facebook, mail o alias) y probar los juegos que est\u00e1n desbloqueados en todo el mundo. La principal diferencia con las m\u00e1quinas cl\u00e1sicas es el n\u00famero de rodillos, l\u00edneas de pago y la aparici\u00f3n de sofisticados efectos.<\/p>\n