0

I have a few pages on the frontend of my site in which my users author content. This content can take many hours to create. Unfortunately, my site has a 4-hour session limit, and by the time my users submit their content (via web forms), they have been logged out, they are redirected to the login page, and their content is lost.

In the admin panel, particularly on the "Pages" page, there is a lightboxed login form (interim login) that displays the famous "Session expired. Please log in again. You will not move away from this page." message. The message shows up as soon as the session limit has been reached. How can I use this built-in functionality on all front end pages of my site?

2
  • If your users so often need more time, why not increase the session limit? Commented Apr 14, 2016 at 20:31
  • Hi Caspar, The limit is set at 4 hours as a security measure for the majority of my users. A select few of my users have access to a page on which they can create content that takes longer than four hours. I would like to allow them to log in again from their content-authoring page when their session expires. However, this is a feature that would be great to have on all pages, so I would prefer a solution that works on all frontend pages. Commented Apr 14, 2016 at 20:48

1 Answer 1

3

Here is a short plugin that adds the interim-login lightbox on every frontend page:

<?php /* Plugin Name: Interim Login Everywhere Version: 1.0.1 Plugin URI: http://nowhere.com Description: Provide interim login screens on all pages. Author: S Valentine */ function ile_enqueue_scripts() { // we only care to add scripts and styles if the user is logged in. if ( is_user_logged_in() ) { // add javascript file wp_register_script( 'wp_auth_check', '/wp-includes/js/wp-auth-check.js' , array('heartbeat'), false, 1); wp_localize_script( 'wp_auth_check', 'authcheckL10n', array( 'beforeunload' => __('Your session has expired. You can log in again from this page or go to the login page.'), 'interval' => apply_filters( 'wp_auth_check_interval', 3 * MINUTE_IN_SECONDS ), // default interval is 3 minutes ) ); wp_enqueue_script ('wp_auth_check'); // add css file wp_enqueue_style( 'wp_auth_check','/wp-includes/css/wp-auth-check.css', array( 'dashicons' ), NULL, 'all' ); // add the login html to the page add_action( 'wp_print_footer_scripts', 'wp_auth_check_html', 5 ); } } add_action( 'wp_enqueue_scripts', 'ile_enqueue_scripts' ); // make sure the stylesheet appears on the lightboxed login iframe function ile_enqueue_login_scripts() { wp_enqueue_style( 'wp_auth_check','/wp-includes/css/wp-auth-check.css', array( 'dashicons' ), NULL, 'all' ); } add_action( 'login_enqueue_scripts', 'ile_enqueue_login_scripts' ); ?> 

Start asking to get answers

Find the answer to your question by asking.

Ask question

Explore related questions

See similar questions with these tags.