How to create a client portal in WordPress
I’m not a programmer, but I play one when I’m adventurous.
A client of mine needed to share different (private) content with their clients. He also needed workers of his to be able to view and update all clients pages, but didn’t want to give access to the WordPress admin area for either.
Although I would have loved to dig REALLY deep in the programming and pull the content dynamically from the database, my client and I both opted for the quicker, cheaper route, although this takes more time on his end to add new users and create pages they’ll be redirected to.
I did a quick search for “Client Portal WordPress” and came up with this. I did a few more things than they did, but that’s where I started. I liked what I created for my client’s site, so I set my site up with a client portal as well. This allows me to privately share information with my clients.
Basically, here’s how it works: Install the plugins listed below, set up and assign a new roll called “Clients”, create the actual user (as you would create a subscriber in your WordPress Users area), create the page they’ll be redirected to, then set up the redirection! Clients can correspond to you via their page(s) and an email is sent to every person subscribed to that page.
I’ll go through the steps below in detail. If anything is confusing, feel free to contact me and ask. I spent a bit of time organizing the following information & hope I haven’t forgotten anything! (Plus, it’s a couple weeks after I set it up, so I may have forgotten something.)
I’m still working out the steps below, but have published because I’ve received an inquiry on how to do it! Share the knowledge!
Let’s create a client portal, using mostly WordPress plug-ins – and some specialized code in your template page(s)!
Step 1: Install the following plugins
The list of plugins I used & what they do:
- BM Custom Login – Use this if you wish to brand the standard “/wp-login.php” page with your own logo, colors, etc. if clients happen to find themselves there. The Sidebar Login plugin below makes this area somewhat obsolete/redundant, but I want to cover all bases & give a professional look.
- Breadcrumb Nav XT – This helps people understand where they are by showing the current page location & site hierarchy above that page. The default top level breadcrumb is called “Blog” but it’s easily changed to “Home” in the Breadcrumb Nav XT settings.
- Exclude Pages – If you wish to have your full client list page hidden to non-administrators.
- IWG Hide Dashboard – This allows you to keep clients from accessing the WordPress Dashboard. Comments from everyone are shown on the Dashboard. I didn’t want clients viewing other clients comments.
- Role Manager (This plugin doesn’t seem to be offered on WordPress’ site.) – This allows you to create new rolls. It is a little overkill, but it helps to identify rolls and keep yourself sane
- Sidebar Login – This lets clients log in and log out right from the sidebar. It allows you to post persistant helpful links for yourself, your workers and for clients once they’re logged in.
- Subpages Widget – This shows subpages in your sidebar widgets. It’s helpful in that you won’t have to post links to sub pages – they’re automatically created as you create your pages.
- Subscribe to Comments – As administrator, you always receive an email when someone makes a comment to your site. If you wish to have your clients receive an email when you or your worker update their page, install this plugin. They can subscribe to comments of any page they have the ability to make comments on.
- Peter’s Login Redirect – This will allow you to redirect clients to their own page once they’ve signed in. I’ve set mine up so I won’t have to continually add new redirects. I set one redirect. Everyone is redirected to my main clients page & based on their user level, they either see the full client page (administrators & workers), or are directed to a page that matches their username.
I’ll go through why I used all of these, but list form is easiest to go down and just install.
Step 2: Set up a special role for your clients (and workers, if you wish to assign another level of access)
Once you install the Role Manager plugin, your WordPress admin interface will have additional choices:

I created a roll called “Clients” with a user level of 2, another roll called “Worker” with a user level of 5 and deleted rolls that were superfluous, just to keep things neat. This left me with three rolls – Administrator, Clients & Worker.
This step is a little reverse-intuitive. Once you install the IWG Hide Dashboard plugin you’ll create a capability to take away the capability to go to the WordPress Dashboard. You grant the capability to not grant them access to your Dashboard.
As per their instructions:
First use the Role Manager and create a new capability “hide dashboard”.
Assign the newly created capability “Hide Dashboard” to each role who you don’t want give access to the Dashboard.
From this time on, all users with the capability “Hide Dashboard” have no longer access to the Dashboard.
My clients capabilities:
Create a user
Just as you would create a subscriber, create a new user in your WordPress interface. Make sure to set their roll as “Clients”.

Step 3: Create the page your client will be directed to
My client pages are organized with a main “Clients” page, and each client’s page is a child of that page. This keeps my page list organized. Each client’s page can also have children. (Only 1 level deep, the way I have mine set up.)
My client portal uses 2 templates. The first one I called “clientsredirect.php“. My main “Clients” page uses that template. In code, it asks what level the person is, and directs them to the appropriate page. If the user is a worker (Level 5) or greater, it shows the page. If it is a client (level 2), it directs them to their sub-page. Of course it has my formatting, so you can take it and reformat it for yourself.
The second template I called “clients.php“. This is the template I assign to my client pages and their child pages (if any).
This is being worked on. In the meantime, if you have questions, feel free to email me.

Like