I'm working on a website that is still being built; however, the client would like to launch a landing page while it is being finished. What is the easiest way to make it so all the pages of the site are hidden from view except for the landing page to non-logged in users? (For logged-in users I'd like it to function normally so I can finish building the site.) I'd like the hidden pages to show a simple message or 404 in case someone happens to navigate to one, but nothing else (not the header, footer or menu). I figured there'd be a plugin for this, but alas, that doesn't seem to be the case. Any help is appreciated!
I'd go with a similar approach as @Buttered_Toast:
- Create a template for a specific page (see template hierarchy, especially single page) and set this one as the home page. This then is your "landing page". Do not forget to remove all references to wp_head, wp_footer, etc.
- Add a condition into the header for all other pages/posts that checks for
is_user_logged_in()and do a
wp_redirect()to the home page, if the user is not logged in. This is a nicer solution than a message or a 404, IMHO.
This way you can easily continue working, but the landing page will be there.
Sidenote: I would NOT recommend to develop on a site that is publicly available. All your debug messages will be exposed. Create a development environment (if nothing else, take a subfolder and lock it with htpasswd), develop there, and if you are ready, migrate everything to the production system.