Wordpress - Displaying login form in shortcode


Staff member
I tried the wordpress stack but no luck so thought I'd try here...

So I am trying to display a working version of the default wordpress login form on one of my pages. There is code in the functions.php file that creates the shortcode and as far as I know it works successfully, however after submitting the form, it simply refreshes the page and doesn't redirect to the url I am specifying...can anyone see why it might not work as it should?

This is the function I put in the functions.php file:

//Login form Shortcode
add_shortcode( 'login-form', 'my_login_form_shortcode' );
 * Displays a login form.
 * @since 0.1.0
 * @uses wp_login_form() Displays the login form.
function my_login_form_shortcode( $atts, $content = null ) {

    $defaults = array(      "redirect"              =>  site_url( $_SERVER['REQUEST_URI'] )

        extract(shortcode_atts($defaults, $atts));
        if (!is_user_logged_in()) {
        $content = wp_login_form( array( 'echo' => false, 'redirect' => $redirect ) );
    return $content;

I am then placing it in the desired page like so:

[login-form redirect="https://myurl.com"]

but instead of redirecting me to the right page, it is instead refreshing the page even though I am now successfully logged in...any ideas?