/* 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":1612,"date":"2025-10-01T08:45:55","date_gmt":"2025-10-01T08:45:55","guid":{"rendered":"https:\/\/klecet.edu.in\/alumni\/?p=1612"},"modified":"2026-03-29T22:41:56","modified_gmt":"2026-03-29T22:41:56","slug":"fortune-gems-juega-gratis-donde-jugar-por-dinero-5","status":"publish","type":"post","link":"https:\/\/klecet.edu.in\/alumni\/fortune-gems-juega-gratis-donde-jugar-por-dinero-5\/","title":{"rendered":"Fortune Gems Juega gratis + D\u00f3nde jugar por dinero"},"content":{"rendered":"
El juego se inspira en la rica herencia azteca, presentando s\u00edmbolos y elementos que evocan esta fascinante civilizaci\u00f3n. Como experto en casinos online, puedo decir que esta tragaperras es una gran elecci\u00f3n para aquellos que buscan una experiencia de juego rica y visualmente atractiva. Con su \u00e9nfasis en dise\u00f1os m\u00f3viles primero y jugabilidad innovadora, TaDa Gaming r\u00e1pidamente se est\u00e1 estableciendo como un nombre de confianza en la industria global de los juegos. Sus juegos se caracterizan por tener visuales vibrantes y temas que van desde misiones m\u00edticas hasta elementos ex\u00f3ticos de juego. Casino Pearls es compatible con el juego m\u00f3vil sin problemas, al igual que la mayor\u00eda de los casinos en l\u00ednea cl\u00e1sicos, por lo que la tragaperras es de f\u00e1cil acceso tanto en tel\u00e9fonos como en tabletas.<\/p>\n
La inclusi\u00f3n de un premio tan alto es un gran atractivo para aquellos que buscan maximizar sus ganancias potenciales mientras disfrutan de una experiencia de juego visualmente impresionante y culturalmente rica. Este sistema no solo aumenta la emoci\u00f3n de cada giro, sino que tambi\u00e9n ofrece a los jugadores la posibilidad de obtener recompensas significativas. La disposici\u00f3n clara y las instrucciones f\u00e1ciles de seguir aseguran que los jugadores puedan concentrarse en la emoci\u00f3n del juego en lugar de perderse en men\u00fas complicados. El juego se caracteriza por su interfaz intuitiva, permitiendo que tanto novatos como expertos disfruten sin complicaciones.<\/p>\n
Puedes jugar en sitios como Pin-Up, 1xBet M\u00e9xico y Betway, todos con versi\u00f3n demo y juego por dinero real. Si a\u00fan dudas, recomendamos probar la versi\u00f3n demo Fortune Gems 2 antes de jugar con dinero real. Su mec\u00e1nica r\u00e1pida, s\u00edmbolos apilados y compatibilidad m\u00f3vil lo convierten en una opci\u00f3n s\u00f3lida tanto para novatos como para jugadores que buscan sesiones de juego ligeras. Todos estos juegos est\u00e1n pensados para quienes valoran la simplicidad, la est\u00e9tica pulida y las recompensas inmediatas.<\/p>\n
Cada jugada podr\u00eda ser ese golpe de suerte, haciendo de Fortune Gems 2 el tema del momento tanto para los viejos fan\u00e1ticos como para los nuevos que buscan emociones. En conjunto, Fortune Gems 2 puede resultar una opci\u00f3n interesante para quienes buscan un slot visual, directo y sencillo de entender. Tambi\u00e9n es importante tener en cuenta que algunos par\u00e1metros, como el RTP o la volatilidad, pueden mostrarse de forma distinta seg\u00fan la plataforma.<\/p>\n
Para obtener m\u00e1s informaci\u00f3n, visita nuestra p\u00e1gina sobre las m\u00e1quinas tragaperras que mejor pagan. En M\u00e9xico los casinos en l\u00ednea s\u00ed necesitan licencia, pero la ley todav\u00eda no est\u00e1 del todo actualizada para el mundo digital.La autoridad que regula todo esto es la Secretar\u00eda de Gobernaci\u00f3n (SEGOB), a trav\u00e9s de la Direcci\u00f3n General de Juegos y Sorteos. TaDa Gaming mantuvo el mismo concepto visual y la estructura de 3\u00d73 carretes con 5 l\u00edneas de pago, pero incorpor\u00f3 un cuarto carrete con multiplicadores de hasta \u00d7500, lo que modifica sustancialmente la distribuci\u00f3n de los premios. Gracias a su dise\u00f1o optimizado para dispositivos m\u00f3viles y a sus mec\u00e1nicas claras, Fortune Gems 4 es una opci\u00f3n atractiva para quienes buscan un slot sencillo dentro de la saga Fortune Gems, pero con acceso a multiplicadores y jackpots que incrementan el potencial de premio. El juego utiliza una cuadr\u00edcula cl\u00e1sica de 3\u00d73 con 5 l\u00edneas de pago fijas, lo que permite entender su funcionamiento desde los primeros giros.<\/p>\n
Fundada con el objetivo de ofrecer experiencias de juego innovadoras y de alta calidad, TaDa Gaming se ha destacado por sus tragamonedas con gr\u00e1ficos atractivos y mec\u00e1nicas de juego din\u00e1micas. Esta configuraci\u00f3n cl\u00e1sica se combina con caracter\u00edsticas modernas para ofrecer una experiencia de juego equilibrada y emocionante. Ambientado en un entorno de jungla misteriosa, el juego presenta una est\u00e9tica visual atractiva con s\u00edmbolos de gemas brillantes y una atm\u00f3sfera que evoca aventuras en busca de tesoros perdidos. Esta nueva entrega mantiene la esencia del original pero introduce mejoras significativas que elevan la experiencia de juego. Lo \u00fanico recomendable es jugar informado, ajustar tu apuesta, aprovechar bien las funciones del juego y mantener siempre control sobre tu presupuesto. S\u00ed, muchos operadores y sitios de rese\u00f1as ofrecen la demo gratis accesible tambi\u00e9n para usuarios en M\u00e9xico.<\/p>\n
Dependiendo del proveedor, el RTP puede variar seg\u00fan la plataforma. En el vasto mundo de los casinos online en M\u00e9xico, una plataforma que ha ido ganando popularidad recentementes es MEXBOSS \u00bfTe gustar\u00eda disfrutar de la emoci\u00f3n del casino sin arriesgar tu dinero? O bien, reg\u00edstrate para jugar con dinero real y recibe un bono del 100% en Mexboss. La plataforma de MEXBOSS es tu punto de entrada ideal para disfrutar de Fortune Gems 2. Esto eleva tus posibilidades de golpe de suerte y a\u00f1ade un punto extra de suspenso.<\/p>\n
El juego presume un generoso RTP del 97% y volatilidad media, ideal tanto para novatos como para jugadores con mayor presupuesto. En conjunto, estas ventajas lo convierten en una excelente opci\u00f3n para quienes buscan un juego sencillo pero confiable. Este tipo de funciones mantienen la emoci\u00f3n constante, especialmente en sesiones cortas desde un dispositivo m\u00f3vil. Tiene un dise\u00f1o 3\u00d71 s\u00faper directo, un fondo inspirado en la riqueza oriental y s\u00edmbolos que parecen sacados de una tienda de amuletos de la suerte. Seg\u00fan mi informaci\u00f3n, las caracter\u00edsticas como los multiplicadores y el bono de Rueda de la Fortuna son aspectos que realmente destacan y pueden ofrecer recompensas significativas.<\/p>\n
Para ganar, tienes que conseguir tres s\u00edmbolos iguales en una de estas l\u00edneas de pago. El tema combina elementos de templos antiguos y jardines serenos, dando a la tragaperras una atm\u00f3sfera m\u00edstica y tranquila a la vez. Junto a los rodillos hay una gran rueda de bonificaci\u00f3n que a\u00f1ade emoci\u00f3n a cada ronda. Fortune Gems 2 gratis presenta gr\u00e1ficos id\u00e9nticos al juego original, con gemas brillantes que danzan en pantalla mediante animaciones fluidas.<\/p>\n
Los multiplicadores pueden variar desde x1 hasta x15, lo que a\u00f1ade una capa adicional de estrategia y emoci\u00f3n a cada partida. Esta estructura permite a los jugadores experimentar una din\u00e1mica de juego diferente, manteniendo el inter\u00e9s y la emoci\u00f3n en cada giro. Fortune Gems presenta una configuraci\u00f3n de 4 carretes y 3 filas con 5 l\u00edneas de pago, lo que es relativamente inusual y a\u00f1ade un toque de frescura al juego.<\/p>\n
Este art\u00edculo ha sido elaborado por nuestro equipo especializado en rese\u00f1as de mejores casinos en l\u00ednea M\u00e9xico 2025 para ofrecerte informaci\u00f3n precisa y actualizada. Si te gustan t\u00edtulos de mejores casinos en l\u00ednea M\u00e9xico 2025 como Book of Dead o Starburst, Fortune Gems 2 te resultar\u00e1 familiar en est\u00e9tica pero m\u00e1s generosa en funciones. Si vas a jugar, elige plataformas con licencia visible y reputaci\u00f3n comprobada. La interfaz mantiene una est\u00e9tica limpia que facilita la navegaci\u00f3n incluso para principiantes. El juego presenta una cuadr\u00edcula de 3 carretes por 1 fila y 5 l\u00edneas de pago, ofreciendo una experiencia cl\u00e1sica pero optimizada con gr\u00e1ficos n\u00edtidos y animaciones fluidas. Inspirado en el lujo asi\u00e1tico, este t\u00edtulo es perfecto para jugadores que buscan una experiencia de juego simple pero emocionante.<\/p>\n