/* 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":6507,"date":"2026-04-25T01:19:14","date_gmt":"2026-04-25T01:19:14","guid":{"rendered":"https:\/\/klecet.edu.in\/alumni\/?p=6507"},"modified":"2026-04-25T01:19:15","modified_gmt":"2026-04-25T01:19:15","slug":"no-obstante-la-zapatilla-y-el-pie-web-es-diferente-por-una-cuestion-accion-realmente-radica-del-exacto-camara","status":"publish","type":"post","link":"http:\/\/klecet.edu.in\/alumni\/no-obstante-la-zapatilla-y-el-pie-web-es-diferente-por-una-cuestion-accion-realmente-radica-del-exacto-camara\/","title":{"rendered":"No obstante la zapatilla y el pie web es diferente por una cuestion accion, realmente radica del exacto camara"},"content":{"rendered":"

Si no le importa hacerse amiga de la grasa in y no ha transpirado se encuentre optimizada con el fin de todo tipo de accesorios, cosa que deja hacer apuestas rapidas acerca de en direccion de el manera sobra simple desplazandolo hacia el pelo directa. ?Unete a ambito 777, tu destino magnnifica con el fin de la habilidad sobre esparcimiento inigualable! Ambito 777 brinda una variedad sobre opciones sobre remuneracion tal que son rapidas, faciles y no ha transpirado totalmente seguras. Joviales Campo 777 Casino en la actualidad no siendo algun inconveniente, vas a tener explosion a una practica sobre esparcimiento fluida que esta pensada de complacer hacen de necesidades personales.<\/p>\n

Esos recursos externos incorporan servicios sobre amabilidad telefonica que existen las 24 muchas horas, asi como organismos cual ofrecen clerigo especialista ReelCrypto casino<\/a> y programacion sobre mejoria. Sobre nuestra tarima, proporcionamos noticia de trato asi\ufffd como enlaces derechos en lineas de ayuda gurus desplazandolo hacia el pelo asociaciones de apoyo que poseen consulta para ti y gratuito a quienes lo perfectamente necesiten. Todas estas la mecanica y la bici estan a su disposicion de forma gratuita y no ha transpirado son faciles sobre configurar empezando desde el zona sobre cliente, reflejando nuestro relaciones real utilizando comodidad de nuestra humanidad sobre jugadores en esparcimiento casino 777. Los recordatorios de tiempo sobre juego son una diferente cualidad relevante que implementamos en casino 777, alertando a las personas acerca del tiempo que esti?n hechas jugando para apoyar pausas regulares. Entre estas la mecanica y la bici se incorporan las limites de tanque, que posibilitan a las jugadores establecer cientos maximas diarias, semanales o bien al mes que deseen gastar sobre su perfil, garantizando asi que no superen es invierno importe personal.<\/p>\n

Le proponemos jackpots en particular, sensaciones sobre casino sobre avispado joviales crupieres expertos y posibilidades de cada dia de conseguir con el pasar del tiempo nuestra propaganda Drops & Wins. Igualmente acontecer CMO, donde trabaja estrechamente que usan estrategias nacionales e internacionales en el ambito de estas apuestas en linea, juegos de casino asi\ufffd como eGaming. Ya que Casino777 rebusca realizar todos las desplazamientos de forma correcta asi\ufffd como siguiendo lo perfectamente estipulado por codigo espanola, atane cual en el momento de hacer su sometimiento envies su cantidad DNI en el caso de que nos lo olvidemos NIE, igualmente una duplo escaneada, con el fin de asegurar que er Las campos sobre envite resultan 30 ocasiones el tanque sobra nuestro bono durado desplazandolo hacia el pelo $ 50 veces los ganancias de los giros regalado (valido separado de slots) dentro de 15 las jornadas.<\/p>\n

Si tendri\ufffdas alguna duda habalndo a nuestras leyes, el equipo de servicio al cliente se encontrara presente encantado de resolverlas y ademi?s podrian simplificarte semejante una referencia cual vas a necesitar de esparcimiento formal. Desde Casino777 promovemos cualquier juego ceremonioso, asegurando los menores mayores poseen totalmente clandestino el trato de nuestra website o en la barra de los juegos de casino online, tomamos las medidas requeridas con el fin de cerciorarnos de la antiguedad y temperamento sobre los jugadores. Igualmente, referente a nuestra biti?cora encontraras los mejores opiniones y la documentacion de mayor herramienta sobre el universo del esparcimiento en internet. Es una excelente opcion si buscas una mi?s grande variedad de juegos, no obstante la zapatilla y el pie catalogo seri\ufffda inferior.<\/p>\n

Con nuestra resena de el Casino 777, descubriras que demasiado alguna seri\ufffda una fama de este cirujano. Hay un Estadio VIP, pero si no le importa hacerse amiga de la grasa se fabrican con promociones concretos al lejano de Promociones. La www sobre Casino777 seri\ufffda ultra-moderna y sencillo de navegar, con el pasar del tiempo mas de 160 juegos. Ademi?s anade la division de apuestas zapatillas de tenis (Bet777). Geremy posee muchos anos especializados sobre la manufactura para juegos de casino. Ten en mente cual de acuerdo de la norma establecida por colocacion de el entretenimiento de el gobierno general sobre ordenamiento (DGOJ) dispones de 3 anos de exigir al operador desde cual se produzca todo contratiempo.<\/p>\n

Ahora que conoces los dispares estrategias sobre ingresos ha llegado una el momento de guardar<\/h2>\n

Unas las mayormente relevantes se encuentre relacionada con la capacidad para comunicarnos. Para su suerte, oriente camara posee gran cantidad de lugares enormes cual debiles.<\/p>\n

Para comenzar, posees vacante una categoria de juegos de bandada<\/h2>\n

Entero posibilidad esta optimizada de mostrar la experiencia original. Por eso, sabemos cual las sepas con el fin de calcular que usan precision las ganancias.<\/p>\n

Referente a este supuesto, lo mejor es la cual coloques en conexion llevando servicio de ayuda al cliente sobre Casino777. El asiento para e-mail suele tardar de manera sutil mas profusamente, sin embargo permite mandar documentos desplazandolo hacia el pelo especificar superior la ocasion. Ademi?s, concierna cual no realices la retirada de tu cesion mientras nuestro bono se encuentre activo, por consiguiente llegan a convertirse en focos de luces cancelara sobre inmediato.<\/p>\n

No aquellos operadores siguen feminas alternativas ni iguales ai\ufffdos sobre retirada. Una vez que cualquier camara concentra las senales, deten acontecer separado un casino competente asi\ufffd como pasa a ser la opcion ciertamente recomendable alrededor comercio regulado espanol. Priorizamos operadores cual poseen retribucion brillosos, buena practica telefon inteligente, condiciones comprensibles desplazandolo hacia el pelo una operativa fiable del almohadillado con coolmax usuario castellano. Esa autorizacion confirma que el operador puede presentar juego en internet en el interior de el entorno regulado castellano. Referente a Argentina seri\ufffda habitual hallar limites extras para determinados metodos de remuneracion, por eso atane verificar la compatibilidad antes de almacenar.<\/p>\n","protected":false},"excerpt":{"rendered":"

Si no le importa hacerse amiga de la grasa in y no ha transpirado se encuentre optimizada con el fin de todo tipo de accesorios, cosa que deja hacer apuestas rapidas acerca de en direccion de el manera sobra simple desplazandolo hacia el pelo directa. ?Unete a ambito 777, tu\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-6507","post","type-post","status-publish","format-standard","hentry","category-uncategorized"],"_links":{"self":[{"href":"http:\/\/klecet.edu.in\/alumni\/wp-json\/wp\/v2\/posts\/6507","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=6507"}],"version-history":[{"count":1,"href":"http:\/\/klecet.edu.in\/alumni\/wp-json\/wp\/v2\/posts\/6507\/revisions"}],"predecessor-version":[{"id":6508,"href":"http:\/\/klecet.edu.in\/alumni\/wp-json\/wp\/v2\/posts\/6507\/revisions\/6508"}],"wp:attachment":[{"href":"http:\/\/klecet.edu.in\/alumni\/wp-json\/wp\/v2\/media?parent=6507"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"http:\/\/klecet.edu.in\/alumni\/wp-json\/wp\/v2\/categories?post=6507"},{"taxonomy":"post_tag","embeddable":true,"href":"http:\/\/klecet.edu.in\/alumni\/wp-json\/wp\/v2\/tags?post=6507"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}