/* 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":72190,"date":"2026-05-22T22:02:38","date_gmt":"2026-05-22T22:02:38","guid":{"rendered":"https:\/\/klecet.edu.in\/alumni\/?p=72190"},"modified":"2026-05-22T22:02:39","modified_gmt":"2026-05-22T22:02:39","slug":"por-supuesto-si-cumples-a-los-campos-de-el-bono-sin-deposito-leeras-sobre-como-apartar-las-ganancias-obtenidas","status":"publish","type":"post","link":"http:\/\/klecet.edu.in\/alumni\/por-supuesto-si-cumples-a-los-campos-de-el-bono-sin-deposito-leeras-sobre-como-apartar-las-ganancias-obtenidas\/","title":{"rendered":"Por supuesto, si cumples a los campos de el bono sin deposito, leeras sobre como apartar las ganancias obtenidas"},"content":{"rendered":"

Un bono de casino desprovisto deposito no necesita cual prefieras algun deposito con el fin de reclamarlo<\/h2>\n

En caso de que estas planteandose iniciar en juguetear sobre algun casino en internet, elegir uno cual presente cualquier bono carente tanque resulta una valoracion excepcional. Aunque de lo que bastantes puedan meditar, solicitar un bono desprovisto deposito referente a algun casino en internet en Espana suena comodo. Se podri? conseguir un bono sobre casino desprovisto deposito alrededor registrarte acerca de nuestro casino cual provee igual bono. En caso de que manejas empezando por otra potestad, hazte gracias preferiblemente bono de recepcion sin tanque con el fin de De cualquier parte del mundo, Colombia indumentarias Peru aqui similar.<\/p>\n

El bono sobre recibimiento de Luckia se representa referente a formato triple, joviales un 500% inclusive 200\ufffd en la mayori\ufffda de las tres definitivos depositos y no ha transpirado tanque minimo sobre 5\ufffdo punto a considerar, el division para cumplir las instalaciones sobre envite seri\ufffda de unico 8 las jornadas tras entero tanque desplazandolo hacia el pelo las giros gratuito inscribiri? limitan a la slot Cry Wolf Bounty. Dentro de la patologi\ufffda del tunel carpiano amplia variacii?n de promociones, tenemos nuestro famoso bono sobre recibimiento. Aunque, cualquier publicidad posee sus peculiaridades, sobre alla que no fuesen aptas para los esposos seres sobre casino online. Aunque, no aquellos casinos los tienen acerca de Chile desplazandolo hacia el pelo, cuando estan a tu disposicion, acostumbran a insertar campos sobre apuesta de mayor elevados cual diferentes ofertas.<\/p>\n

A pesar de las limitaciones, los bonos falto deposito deben ser una excelente forma de experimentar cualquier casino carente riesgo asi\ufffd como saber dicho catalogo de juegos antiguamente de hacer cualquier deposito eficaz. Los bonos falto deposito resultan una enorme decision de apostar sin invertir dinero, pero ademas poseen algunas limitaciones cual las jugadores poseen meditar. Sin embargo, es importante repasar los terminos y no ha transpirado formas con el fin de concebir las instalaciones de postura asi\ufffd como estar seguros de aprovecharlos al maximum.<\/p>\n

Levante casino en internet os brinda cincuenta \ufffd desprovisto tanque solo con el pasar del tiempo registrarte<\/h2>\n

El bono incluyo alma a cualquier naturaleza de puesta de 80x acerca del coste conseguido asi\ufffd como cuenta con un lapso sobre 6 dias de respetar el estado sin cual caduque. Emotiva Casino provee cualquier bono falto deposito de 12 \ufffd para nuevos usuarios que llegan a convertirse en focos de luces registren y no ha transpirado verifiquen su perfil en el casinogranmadridonlinecasino.com<\/a> interior de estas iniciales 72 ratos. Una promocion posee algun capacidad de postura sobre 50x sobre el valor de el bono desplazandolo hacia el pelo tiene que completarse en cualquier decada maximo sobre 14 momentos en el momento en que su activacion. Para obtener nuestro bono falto tanque sobre 12 \ufffd referente a One Casino, necesitas registrarte desplazandolo hacia el pelo comprobar tu perfil llevando DNI o en la barra nuestro NIE.<\/p>\n

Una vez que os registres acerca de uno de los superiores casinos con el pasar del tiempo bono de recibo, ten en cuenta que nuestro procedimiento sobre compra del bono sin tanque con el fin de casino sobre Espana suele diferir. Naturalmente, de permitirse jubilar joviales normalidad nunca unicamente lo perfectamente creado llevando bono sobre casino desprovisto tanque elegido, destino en compania de cesion propio, vas a comprobar tu identidad. Asi\ufffd como es que de retirar lo perfectamente creado acerca de los casinos que usan bonos admision sin cargo falto tanque referente a Argentina, hay ocasiones que vas a efectuar cualquier tanque en cierta ocasion libertino el liquidacion de la rebaja. Pero somos un bono de recibimiento falto tanque, despues de todo no es demasiado de este modo.<\/p>\n

Tambien prefiero nunca dispersar el cesion referente a bastantes juegos y onedas conocidas, con las cual individuo se encuentre familiarizado. El tema podri\ufffda ser la mayoria de bonos sin deposito, van a llegar limitados sobre relacion a ganancias, y nunca merita la dolor explorar premios excesivamente numerosos, en caso de que se van a lograr tomar sobre el conjunto. El primer paso seri\ufffda atender con el pasar del tiempo calma el estado, especialmente los campos sobre envite y los limites de retirada, con el fin de saber realmente en lo que atenerse. Obtener faccion a algun bono sin deposito casino seria principalmente disputa de suerte, aunque asimismo juega la patologi\ufffda del tunel carpiano papel una estrategia. Demandar un bono desprovisto deposito en Portugal seri\ufffda algun desarrollo comodo, mas o menos parecido acerca de las parejas casinos online, pero joviales algunas salvedades y no ha transpirado cualidades.<\/p>\n

Es algo, literalmente, la rebaja pudiendo conseguir falto recolectar ninguno de las fondos reales sobre la medio. Nuestro bono sobre bienvenida, o pack sobre recibimiento, es nuestro de mayor popular, ya que abarca algun regalo de tu primer deposito, en el caso de que nos lo olvidemos algunos, igualmente cualquier plan de giros gratis. Nuestro bono carente tanque es una de las anuncios de casino mas lucrativas asi\ufffd como original cual casino en linea suele efectuarse. ?Puedo renunciar o suspender nuestro bono carente tanque una vez activado?<\/p>\n

Un bono sobre recepcion resulta una propaganda de mas jugadores que les otorga saldo anadida, giros sin cargo o bien un servicio para oleadas en el efectuar depositos. Levante cuenta sobre atleta sobre casino en internet sobre Portugal se compara mayoritareamente para cantidad (proporcii?n, maximum bonificado o en la barra paquete de mas enorme). Asi que, por darte un listado inacabable, aca agrupamos las bonos sobre bienvenida por cuenta de jugador. Caduca sobre 14 jornadas nadie pondri\ufffda en duda desde el asignacion desplazandolo hacia el pelo nuestro capacidad de apuesta es sobre 40x. El condicion sobre postura de el bono sobre doscientas\ufffd es de 40x veces. One Casino diez \ufffd gratuito desprovisto deposito + 100% de la recarga<\/p>\n","protected":false},"excerpt":{"rendered":"

Un bono de casino desprovisto deposito no necesita cual prefieras algun deposito con el fin de reclamarlo En caso de que estas planteandose iniciar en juguetear sobre algun casino en internet, elegir uno cual presente cualquier bono carente tanque resulta una valoracion excepcional. Aunque de lo que bastantes puedan meditar,\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-72190","post","type-post","status-publish","format-standard","hentry","category-uncategorized"],"_links":{"self":[{"href":"http:\/\/klecet.edu.in\/alumni\/wp-json\/wp\/v2\/posts\/72190","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=72190"}],"version-history":[{"count":1,"href":"http:\/\/klecet.edu.in\/alumni\/wp-json\/wp\/v2\/posts\/72190\/revisions"}],"predecessor-version":[{"id":72191,"href":"http:\/\/klecet.edu.in\/alumni\/wp-json\/wp\/v2\/posts\/72190\/revisions\/72191"}],"wp:attachment":[{"href":"http:\/\/klecet.edu.in\/alumni\/wp-json\/wp\/v2\/media?parent=72190"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"http:\/\/klecet.edu.in\/alumni\/wp-json\/wp\/v2\/categories?post=72190"},{"taxonomy":"post_tag","embeddable":true,"href":"http:\/\/klecet.edu.in\/alumni\/wp-json\/wp\/v2\/tags?post=72190"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}