=== Force Login === Contributors: kevinvess Donate link: https://www.paypal.com/cgi-bin/webscr?cmd=_donations&business=kevin%40vess%2eme&lc=US&item_name=Kevin%20Vess%20-%20WordPress¤cy_code=USD&bn=PP%2dDonationsBF%3abtn_donateCC_LG%2egif%3aNonHosted Tags: access, closed, force user login, hidden, login, password, privacy, private, protected, registered only, restricted Requires at least: 2.7 Tested up to: 4.6 Stable tag: 4.2 License: GPLv2 or later Force Login is a simple lightweight plugin that requires visitors to log in to interact with the website. == Description == Easily hide your WordPress site from public viewing by requiring visitors to log in first. As simple as flipping a switch. Make your website private until it's ready to share publicly, or keep it private for members only. **Features** - WordPress Multisite compatible. - Login redirects visitors back to the url they tried to visit. - Extensive Developer API (hooks & filters). - Customizable. Set a specific URL to always redirect to on login - Filter exceptions for certain pages or posts. **Bug Reports** Bug reports for [Force Login are welcomed on GitHub](https://github.com/kevinvess/wp-force-login). Please note that GitHub is _not_ a support forum. == Installation == Upload the Force Login plugin to your site, then Activate it. 1, 2: You're done! == Frequently Asked Questions == = 1. How can I specify a URL to redirect to on login? = By default, the plugin sends visitors back to the URL they tried to visit. However, you can set a specific URL to always redirect users to by adding the following filter to your functions.php file. The URL must be absolute (as in, ). Recommended: [site_url( '/mypage/' )](https://codex.wordpress.org/Function_Reference/site_url). ` /** * Set the URL to redirect to on login. * * @return string URL to redirect to on login. Must be absolute. **/ function my_forcelogin_redirect() { return site_url( '/mypage/' ); } add_filter('v_forcelogin_redirect', 'my_forcelogin_redirect', 10, 1); ` = 2. How can I add exceptions for certain pages or posts? = You can specify an array of URLs to whitelist by adding the following filter to your functions.php file. Each URL must be absolute (as in, ). Recommended: [site_url( '/mypage/' )](https://codex.wordpress.org/Function_Reference/site_url). ` /** * Filter Force Login to allow exceptions for specific URLs. * * @return array An array of URLs. Must be absolute. **/ function my_forcelogin_whitelist( $whitelist ) { $whitelist[] = site_url( '/mypage/' ); $whitelist[] = site_url( '/2015/03/post-title/' ); return $whitelist; } add_filter('v_forcelogin_whitelist', 'my_forcelogin_whitelist', 10, 1); ` = 3. How can I add exceptions for dynamic URLs? = Some URLs have unique query strings appended to the end of it, which is composed of a series of parameter-value pairs. For example: Checkout the [Force Login Wiki on GitHub](https://github.com/kevinvess/wp-force-login/wiki/Whitelist-Dynamic-URLs) for examples of the different methods for whitelisting dynamic URLs. = 4. How do I get the WordPress mobile app to work? = By default, the plugin blocks access to all page URLs; you will need to whitelist the XML-RPC page to allow the WordPress app to access your site for remote publishing. ` /** * Filter Force Login to allow exceptions for specific URLs. * * @return array An array of URLs. Must be absolute. **/ function my_forcelogin_whitelist( $whitelist ) { $whitelist[] = site_url( '/xmlrpc.php' ); return $whitelist; } add_filter('v_forcelogin_whitelist', 'my_forcelogin_whitelist', 10, 1); ` = 5. How do I hide the "← Back to {sitename}" link on the login screen? = The WordPress login screen includes a "← Back to {sitename}" link below the login form; which may not actually take you back to the site while Force Login is activated. You can hide this link by adding the following action to your functions.php file. **Requires:** WordPress 2.5 or higher ` // Hide the 'Back to {sitename}' link on the login screen. function my_forcelogin_hide_backtoblog() { echo ''; } add_action('login_enqueue_scripts', 'my_forcelogin_hide_backtoblog'); ` == Changelog == = 4.2 = * Tweak - Made plugin translation ready. = 4.1 = * Fix - Multisite 'Super Admin' users do not need assigned sites to access the network. = 4.0 = * Feature - Added exceptions for AJAX, Cron and WP-CLI requests. * Fix - Only allow Multisite users access to their assigned sites. = 3.3 = * Fix - Check for existence of explicit port number before appending port - props [Björn Ali Göransson](https://github.com/bjorn-ali-goransson). = 3.2 = * Tweak - Removed v_getUrl() function to reduce possible duplicates of global functions - props [Joachim Happel](https://github.com/johappel). = 3.1 = * Fix - Rewrote v_getUrl() function to use HTTP_HOST instead of SERVER_NAME - props [Arlen22](https://github.com/Arlen22). = 3.0 = * Feature - Added filter to set a specific URL to redirect to on login. * Feature - Added filter to allow whitelisting of additional URLs. = 2.1 = * Fix - Rewrote v_getUrl function to include the server port - props [Nicolas](http://profiles.wordpress.org/nottavi). = 2.0 = * Feature - Added redirect to send visitors back to the URL they tried to visit after logging in. = 1.3 = * Fix - Fixed password reset URL from being blocked - props [estebillan](http://profiles.wordpress.org/estebillan). = 1.2 = * Tweak - Streamlined code = 1.1 = * Fix - Whitelisted the registration page and the Lost Password page - props [jabdo](http://profiles.wordpress.org/jabdo). == Upgrade Notice == = 4.1 = Multisite users can only access their assigned sites, except 'Super Admin' users. = 4.0 = New feature: added exceptions for AJAX, Cron, and WP-CLI requests. Fix: Multisite users can only access their assigned sites. = 3.2 = Removed function v_getUrl(). = 3.0 = New features: added filters for customizing the plugin. = 2.0 = New feature: added redirect to send visitors back to the URL they tried to visit after logging-in. = 1.3 = Fixes bug with password reset URL from being blocked.