/* 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":71814,"date":"2026-05-22T21:57:34","date_gmt":"2026-05-22T21:57:34","guid":{"rendered":"https:\/\/klecet.edu.in\/alumni\/?p=71814"},"modified":"2026-05-22T21:57:35","modified_gmt":"2026-05-22T21:57:35","slug":"yobingo-brinda-un-bono-carente-tanque-de-5%ef%bf%bd-puro-para-como-novedad-personas","status":"publish","type":"post","link":"http:\/\/klecet.edu.in\/alumni\/yobingo-brinda-un-bono-carente-tanque-de-5%ef%bf%bd-puro-para-como-novedad-personas\/","title":{"rendered":"YoBingo brinda un bono carente tanque de 5\ufffd puro para como novedad personas"},"content":{"rendered":"

Conocerlas es su mejor maniobra de designar unicamente publicaciones recomendables<\/h2>\n

Registrate acerca de con el ley ABR26 desplazandolo hacia el pelo recibe incluso cincuenta\ufffd en bonos sobre casino carente necesidad sobre tanque. Nuestro bono puede tardar incluso 24 situaciones habiles acerca de reflejarse y no ha transpirado es vigente unicamente con el fin de juegos de casino, slots asi\ufffd como videobingos permitidos. Ebingo provee algun bono sin tanque de 5\ufffd para cero millas individuos que completen el asignacion y no ha transpirado verifiquen su perfil transmitiendo el DNI. Nuestro Casino Online de Genial Madrid provee algun Bono Falto Deposito sobre treinta\ufffd vacante tanto para juegos sobre casino por la cual slots.<\/p>\n

Nuestro procedimiento sobre 777 Casino login seri\ufffda agradable asi\ufffd como comodo sobre utilizar, cosa que permite que las numerosas posibilidades de entretenimiento de el casino serian accesibles. Con el pasar del tiempo su cortejo de la decision desplazandolo hacia el pelo el esparcimiento limpio, Casino 777 tiene licencias sobre organizaciones reguladores de prestigio, lo que garantiza algun escenario de juego indudablemente y no ha transpirado con experiencia. Una medio estaria pensada con el fin de dar una vivencia simple de usar, proporcionando tanto a las jugadores recientes como a los con experiencia una interfaz sobre nautica fluida. 777 Casino es una tarima de entretenimiento online cual han apasionado en jugadores de todos que usan dicho tematica retro, que ten en mente a los clasicos casinos de las Vegas.<\/p>\n

Algunos de los e.j mayormente afamados en seguida fecha seri\ufffda nuestro 777 casino bono falto tanque Mexico, la publicidad cual hallan conocido como la amabilidad por el disposicion de activacion asi\ufffd como para los juegos compatibles cual ofrece desde nuestro sometimiento. Una de las caracteristicas de los bonos desprovisto deposito para casino es que poseen algun rollover superior a otras bonos sobre casino. El recursos de el bono sobre casino desprovisto deposito es una cantidad verdad monetarios cual es posible utilizar en casi cualquier entretenimiento que presente nuestro casino. Cualquier bono de casino sin deposito no necesita cual prefieras algun deposito de reclamarlo.<\/p>\n

Estas publicaciones generalmente son temporales asi\ufffd como son una magnifico vez con el fin de conseguir de mayor grupo en las juegos favoritos, bien que usan premios extra, pruebas indumentarias apuestas gratuitas. Mas alla de estas anuncios genericos, hay gran cantidad de casinos en internet con bonos para juegos especificos. Las mas grandes bonos sobre casino online dan nuestro reembolso igual que recursos positivo desprovisto rollover, no obstante esto va a depender para palabras asi\ufffd como formas sobre cada camara. Si seri\ufffda igual que capacidad cual disfrutas de sufrir las monstruo quieres casinos en compania de depositos menores nadie pondri\ufffda en duda desde ningun\ufffd de poder conocer cualquier el paipay sobre novedosas alternativas. Otro de los bonos de recibo sobra populares es la persona que ofrece giros de balde.<\/p>\n

Una tarima implementa ciencia de encriptacion SSL sobre ultima procreacion, igual que utilizan los instituciones bancarias, de guarecer todos los informacion comunicados y no ha transpirado financieros sobre las usuarios relacion accesos nunca autorizados. Una empuje seri\ufffda un obelisco significativo en 777 Casino, cual https:\/\/1xbet-casino-es.com\/<\/a> opera bajo estrictas regulaciones y no ha transpirado licencias internacionales que dan garanti\ufffda de una defensa de los jugadores y la integridad de ellas los operaciones. La eleccion de algun casino online aental con el fin de asegurar una destreza satisfactoria, y no ha transpirado 777 Casino online se podri\ufffdan mover distingue por multiples motivos que lo perfectamente hacia sobre la eleccion proliferante para los jugadores acerca de Espana.<\/p>\n

Si nuestro casino cumple con estos discernimiento, es posible asegurarse de que disfrutaras encima de una pericia fiable que usan algun bono sin deposito cual ciertamente valga una amargura. Algun enorme casino debe ofrecer una gran coleccion de juegos , por tragaperras hasta nuevas “slots” , juegos de banco y casino en listo. Pero, es importante concebir las instalaciones desplazandolo hacia el pelo elegir cualquier casino confiable para utilizar al maximo esta publicidad. Los bonos sin tanque normalmente quedar individuos a palabras especialistas, igual que cualquier rollover cual determina cuantas ocasiones deberias situar el bono suin permitirse apartar las ganancias. Se podri? revisar la listado de casinos para asegurarte de que experimentas sobre la medio segura y regulada.<\/p>\n

777 casino resulta una plataforma de juegos de casualidad en linea cual brinda la gran variedad sobre juegos para sus gente. Las promociones y bonificaciones son generosas asi\ufffd como los graficos para juegos resultan extremadamente buenos. Enorme asistencia desplazandolo hacia el pelo variedad de juegos acerca de 777 casino, pero me gustaria que anadieran de mas posibilidades con parte de juegos en vivo. Explora alguna 1000 juegos, mesas sobre casino referente a presto y no ha transpirado apuestas zapatillas de deporte a la hora, todo optimizado en el caso de un entretenimiento agua acerca de Android, iOS o cualquier navegador. Sumergete durante retumbante mundo sobre 777 casino desplazandolo hacia el pelo tratar juegos de asiento, ruletas relampago y no ha transpirado shows de juegos sobre garbo desde tu movil, Pc indumentarias pad, cualquier que usan privacidad pleno, empuje, asi\ufffd como cualquier entretenimiento exacto abogado.<\/p>\n

Los mayormente notables resultan nuestro tanque minusculo, los requisitos sobre puesta y nuestro decada para cumplirlos<\/h2>\n

Entonces, los bonos sobre recibo vuelven a ser legales acerca de Chile en el momento en que el 11 de abril sobre 2024. Buscando esta recien estrenada jurisprudencia, para obtener algun bono de recibo, tenias que confirmar su registro. De resumirla, quedo totalmente prohibida la propuesta de bonos a los cero millas usuarios, dichos que daban por su inicial tanque separado registrarte. Puesto que bien, referente a 2020 le vino a el momento sobre cambio a las situaciones de las promociones y las bonos sobre recibimiento.<\/p>\n

Para que te es mas facil determinar, te ofrezco una referencia cual necesitas saber, igual que cantidad de juegos en presto asi\ufffd como los bonos de audiencia que se podri? exigir. Pocos casinos deben algun bono sobre admision desprovisto tanque, asi que dese urgencia de beneficiarse la propuesta mas profusamente lucrativa de Casino 777.<\/p>\n","protected":false},"excerpt":{"rendered":"

Conocerlas es su mejor maniobra de designar unicamente publicaciones recomendables Registrate acerca de con el ley ABR26 desplazandolo hacia el pelo recibe incluso cincuenta\ufffd en bonos sobre casino carente necesidad sobre tanque. Nuestro bono puede tardar incluso 24 situaciones habiles acerca de reflejarse y no ha transpirado es vigente unicamente\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-71814","post","type-post","status-publish","format-standard","hentry","category-uncategorized"],"_links":{"self":[{"href":"http:\/\/klecet.edu.in\/alumni\/wp-json\/wp\/v2\/posts\/71814","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=71814"}],"version-history":[{"count":1,"href":"http:\/\/klecet.edu.in\/alumni\/wp-json\/wp\/v2\/posts\/71814\/revisions"}],"predecessor-version":[{"id":71815,"href":"http:\/\/klecet.edu.in\/alumni\/wp-json\/wp\/v2\/posts\/71814\/revisions\/71815"}],"wp:attachment":[{"href":"http:\/\/klecet.edu.in\/alumni\/wp-json\/wp\/v2\/media?parent=71814"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"http:\/\/klecet.edu.in\/alumni\/wp-json\/wp\/v2\/categories?post=71814"},{"taxonomy":"post_tag","embeddable":true,"href":"http:\/\/klecet.edu.in\/alumni\/wp-json\/wp\/v2\/tags?post=71814"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}