Crear un shortcode para el formulario de login en WordPress

[…]


por

Si tenemos en nuestra web áreas de acceso restringido, como un membership site, área de socios o una intranet para clientes, es posible que queramos insertar el formulario de login dentro del contenido de una página, en el sidebar o en el footer de nuestra web, y no utilizar la página de login que por defecto utiliza WordPress.

Una posibilidad es crear el código necesario en el sitio donde queremos mostrarlo, pero mucho más práctico y fácil es crear un shortcode, y de esta forma poder añadirlo en cualquier sitio que queramos sin tener que editar plantillas.

Para crear el shortcode, tenemos que añadir este código el archivo functions.php de nuestro child theme o crear un snippet en code snippets

function esl_formulario_login_shortcode( $atts, $content = null ) {
 
 extract( shortcode_atts( array('redirect' => ''), $atts ) );
 
 if (!is_user_logged_in()) {
    if($redirect) {
       $redirect_url = $redirect;
    } else {
       $redirect_url = get_permalink();
    }
   
    $form = wp_login_form(array('echo' => false, 'redirect' => $redirect_url ));
 
    return 'Introduce tu email y contraseña para acceder a tus archivos y contenidos privados.'.$form; } else { echo "Hola! Ya has iniciado sesión. Puedes acceder a tus archivos desde <a href="url de destino">Mi espacio</a>"; 
	} 
} 
function esl_add_shortcodes() { 
	add_shortcode( 'esl_formulario_login', 'esl_formulario_login_shortcode' ); 
} 
add_action( 'init', 'esl_add_shortcodes' );

 

En la línea 14es donde muestra el formulario si el usuario no ha iniciado sesión, y en este caso hemos añadido un texto para que se muestre justo antes del formulario.

En la línea 18, hemos añadido un texto que se mostrará en caso de que el usuario si haya iniciado sesión.

Estos dos textos pueden modificarse a tu gusto o cambiarse por el elemento que quieras.

 

Una vez creado el shortcode, podremos añadirlo donde queramos mediante el código correspondiente: [esl_formulario_login] (o el que hayáis indicado vosotros en el código)

Si utilizáis Code Snippets, aquí tenéis el snippet con el código listo para utilizar: Descargar snippet

 

Éste código se basa en la información de estos dos artículos:

http://www.masquewordpress.com/shortcode-para-mostrar-login-form-en-tu-sitio-wordpress/

http://justintadlock.com/archives/2011/08/30/adding-a-login-form-to-a-page

Comentarios

7 respuestas a «Crear un shortcode para el formulario de login en WordPress»

  1. Avatar de Gerry

    |

    Very useful information thanks!

  2. Avatar de jc

    |

    Hola, disculpa, se que el codex wp_login_form(); genera el formulario para el login, pero existe alguno para mostrar el formulario de registro?
    Es decir necesito que en una misma pagina aparezca el formulario de acceso (login) y el de registro, es esto posible?, existe algun plugin o cual es el archivo que deberia modificar?
    Gracias

    1. Avatar de esther

      |

      Hola! Prueba con Theme My Login, ahora hace tiempo que no lo utilizo, pero creo que tenía varias opciones para gestionar los formularios de login y registro.

      Saludos!

      1. Avatar de jc

        |

        Muchas gracias!! por tu respuesta, un saludo

  3. Avatar de Ruben

    |

    Hola Esther! Muchas gracias por el tutorial. Quisiera hacerte una pregunta:
    Pude insertar el formulario en una página pero quisiera que al completar el formulario se redireccione a otra página. Me podrías indicar como hacerlo?

    Saludos!

    1. Avatar de esther

      |

      Hola Ruben!
      En esta web tienes cómo hacerlo en código: https://wpscholar.com/blog/wordpress-user-login-redirect/
      y también se puede hacer con un plugin si prefieres, que te permite definir diferentes destinos en función del usuario, rol, etc.. : https://es.wordpress.org/plugins/peters-login-redirect/

      Saludos!

      1. Avatar de Ruben

        |

        Genial! Voy a chequear. Saludoss y graciass por la ayuda