'login', 'description' => esc_html__( 'A widget that allows users to log into your site.', 'members' ) ); // Set up the widget control options. $control_options = array( 'width' => 800, 'height' => 350, 'id_base' => 'members-widget-login' ); // Create the widget. parent::__construct( 'members-widget-login', esc_attr__( 'Members: Login Form', 'members' ), $widget_options, $control_options ); // Set up the defaults. $this->defaults = array( 'title' => esc_attr__( 'Log In', 'members' ), 'label_username' => esc_attr__( 'Username', 'members' ), 'label_password' => esc_attr__( 'Password', 'members' ), 'label_log_in' => esc_attr__( 'Log In', 'members' ), 'label_remember' => esc_attr__( 'Remember Me', 'members' ), 'form_id' => 'loginform', 'id_username' => 'user_login', 'id_password' => 'user_pass', 'id_remember' => 'rememberme', 'id_submit' => 'wp-submit', 'remember' => true, 'value_remember' => false, 'value_username' => '', 'show_avatar' => true, 'logged_out_text' => esc_html__( 'Please log into the site.', 'members' ), 'logged_in_text' => esc_html__( 'You are currently logged in.', 'members' ) ); } /** * Outputs the widget based on the arguments input through the widget controls. * * @since 2.0.0 * @access public * @param array $sidebar * @param array $instance * @return void */ function widget( $sidebar, $instance ) { $instance = wp_parse_args( $instance, $this->defaults ); // Set up the arguments for wp_login_form(). $args = array( 'form_id' => ! empty( $instance['form_id'] ) ? esc_attr( $instance['form_id'] ) : 'loginform', 'label_username' => esc_html( $instance['label_username'] ), 'label_password' => esc_html( $instance['label_password'] ), 'label_remember' => esc_html( $instance['label_remember'] ), 'label_log_in' => esc_html( $instance['label_log_in'] ), 'id_username' => esc_attr( $instance['id_username'] ), 'id_password' => esc_attr( $instance['id_password'] ), 'id_remember' => esc_attr( $instance['id_remember'] ), 'id_submit' => esc_attr( $instance['id_submit'] ), 'value_username' => esc_attr( $instance['value_username'] ), 'remember' => ! empty( $instance['remember'] ) ? true : false, 'value_remember' => ! empty( $instance['value_remember'] ) ? true : false, 'echo' => false, ); // Get the logged in/out text. $logged_in_text = apply_filters( 'widget_text', $instance['logged_in_text'] ); $logged_out_text = apply_filters( 'widget_text', $instance['logged_out_text'] ); // Output the theme's $before_widget wrapper. echo $sidebar['before_widget']; // If a title was input by the user, display it. if ( $instance['title'] ) echo $sidebar['before_title'] . apply_filters( 'widget_title', $instance['title'], $instance, $this->id_base ) . $sidebar['after_title']; // Show avatar if enabled. if ( ! empty( $instance['show_avatar'] ) ) echo get_avatar( get_current_user_id() ); // If the current user is logged in. if ( is_user_logged_in() ) { // Show logged in text if any is written. if ( $logged_in_text ) echo do_shortcode( shortcode_unautop( wpautop( $logged_in_text ) ) ); } // If the current user is not logged in. else { // Show logged out text if any is written. if ( $logged_out_text ) echo do_shortcode( shortcode_unautop( wpautop( $logged_out_text ) ) ); // Let two-factor and CAPTCHA plugins hook into this form like they do on wp-login.php. members_login_form_enqueue_scripts(); // Send failed logins back to this page with an error, like the login form shortcode. add_filter( 'login_form_bottom', 'members_login_form_bottom' ); // Output the login form. echo '
' . wp_login_form( $args ) . '
'; remove_filter( 'login_form_bottom', 'members_login_form_bottom' ); } // Close the theme's widget wrapper. echo $sidebar['after_widget']; } /** * Sanitizes/Validates widget options before being saved. * * @since 2.0.0 * @access public * @param array $new_instance * @param array $old_instance * @return array */ function update( $new_instance, $old_instance ) { $instance['title'] = strip_tags( $new_instance['title'] ); $instance['label_username'] = strip_tags( $new_instance['label_username'] ); $instance['label_password'] = strip_tags( $new_instance['label_password'] ); $instance['label_remember'] = strip_tags( $new_instance['label_remember'] ); $instance['label_log_in'] = strip_tags( $new_instance['label_log_in'] ); $instance['id_username'] = strip_tags( $new_instance['id_username'] ); $instance['id_password'] = strip_tags( $new_instance['id_password'] ); $instance['id_remember'] = strip_tags( $new_instance['id_remember'] ); $instance['id_submit'] = strip_tags( $new_instance['id_submit'] ); $instance['value_username'] = strip_tags( $new_instance['value_username'] ); $instance['remember'] = isset( $new_instance['remember'] ) ? 1 : 0; $instance['value_remember'] = isset( $new_instance['value_remember'] ) ? 1 : 0; $instance['show_avatar'] = isset( $new_instance['show_avatar'] ) ? 1 : 0; if ( current_user_can( 'unfiltered_html' ) ) { $instance['logged_in_text'] = $new_instance['logged_in_text']; $instance['logged_out_text'] = $new_instance['logged_out_text']; } else { $instance['logged_in_text'] = wp_kses_post( stripslashes( $new_instance['logged_in_text'] ) ); $instance['logged_out_text'] = wp_kses_post( stripslashes( $new_instance['logged_out_text'] ) ); } return $instance; } /** * Displays the widget control options in the Widgets admin screen. * * @since 2.0.0 * @access public * @param array $instance * @return void */ function form( $instance ) { // Merge the user-selected arguments with the defaults. $instance = wp_parse_args( (array) $instance, $this->defaults ); ?>