Creating Destination Pages for Redirects
Build effective landing pages for role-based redirects.
- Beginner
- 30 min read
- Applies to 1.2.1 (Core & Pro)
- Updated November 2025
Written for 1.2.1 (Core & Pro). It is being checked against 2.0, so a screen or a setting may sit somewhere else. Tell support if something does not match.
Overview
When users log in and get redirected to specific pages based on their role, those destination pages should be well-designed, functional, and appropriate for the user type. This guide shows you how to create effective landing pages.
Before You Start
- Plan your redirects: Know which roles go where
- Map user journeys: What should each role do after login?
- Identify required pages: List all destination pages needed
- Choose page templates: Full-width or sidebar layout?
Basic Page Creation
Create a New Page
Step 1: Add New Page
WordPress Admin → Pages → Add New
Step 2: Set Page Title
Examples:
- "Member Dashboard"
- "Student Portal"
- "Customer Account"
- "Employee Hub"
Step 3: Set Permalink
Click "Edit" next to permalink
Use lowercase, hyphens, no special characters
Good: member-dashboard
Bad: Member_Dashboard!
Step 4: Choose Template
Page Attributes → Template
Select: Full Width (recommended for dashboards)
Essential Page Elements
1. Welcome Message
Basic Welcome:
<div className="welcome-section">
<h1>Welcome Back!</h1>
<p>You're logged in as a Member.</p>
Personalized Welcome (with PHP):
<div className="welcome-section">
<h1>Welcome Back, <?php echo wp_get_current_user()->display_name; ?>!</h1>
<p>Last login: <?php echo date('F j, Y'); ?></p>
2. Quick Navigation
Dashboard Links:
<div className="dashboard-nav">
<a href="/my-account/" className="dash-link">
<span className="icon">👤</span>
My Account
</a>
<a href="/member-content/" className="dash-link">
<span className="icon">📄</span>
Member Content
</a>
<a href="/support/" className="dash-link">
<span className="icon">💬</span>
Support
</a>
<a href="<?php echo wp_logout_url('/'); ?>" className="dash-link">
<span className="icon">🚪</span>
Logout
</a>
Add CSS (in Customizer or theme):
.dashboard-nav {
display: grid;
grid-template-columns: repeat(auto-fit, minmax(200px, 1fr));
gap: 20px;
margin: 30px 0;
}
.dash-link {
display: flex;
flex-direction: column;
align-items: center;
padding: 30px;
background: #f8f9fa;
border-radius: 8px;
text-decoration: none;
color: #333;
transition: all 0.3s;
}
.dash-link:hover {
background: #e9ecef;
transform: translateY(-2px);
}
.dash-link .icon {
font-size: 48px;
margin-bottom: 10px;
}
3. Role-Specific Content
Use Shortcodes to Show Different Content:
No such shortcode exists. No version of either plugin registers a content restriction shortcode, so the whole block — opening tag, content and closing tag — prints as literal text on the page, including to visitors who should not see it. Four other pages describing it were removed for this reason; this one kept it longer.
This plugin handles authentication, not content restriction: who you are, not what you may read. For per-role content use a membership plugin, or a template condition:
<?php if ( current_user_can( 'subscriber' ) ) : ?>
<div class="member-resources">
<h2>Member Resources</h2>
<a href="/downloads/">Download Center</a>
</div>
<?php endif; ?>The redirects on the rest of this page are real and unaffected: they decide where someone lands after signing in, which is a different question from what a page shows them once they are there.
4. Recent Activity or Updates
Show Latest Posts:
[recent_posts count="5" category="members-only"]
Show User's Recent Activity (requires plugin):
[user_activity limit="10"]
5. Call-to-Action
Encourage Next Steps:
<div className="cta-box">
<h3>Ready to Get Started?</h3>
<p>Browse our member content library:</p>
<a href="/member-content/" className="button">Browse Content →</a>
Page Templates for Different Roles
Template 1: Member Dashboard (Subscribers)
Content Structure:
1. Personalized Welcome
2. Quick Stats (if applicable)
3. Navigation Cards:
- My Profile
- Member Content
- Community Forum
- Support
4. Recent Updates
5. Logout Link
Example Code:
<div className="member-dashboard">
<h1>Welcome, [display_name]!</h1>
<div className="quick-stats">
<div className="stat-box">
<h3>Membership Status</h3>
<p className="status-active">Active</p>
<div className="stat-box">
<h3>Member Since</h3>
<p>[member_since_date]</p>
<div className="dashboard-nav">
<div className="recent-updates">
<h2>Latest Updates</h2>
[recent_posts count="3"]
Template 2: Customer Account (WooCommerce)
Content Structure:
1. Welcome Message
2. Order Summary
3. Quick Actions:
- View Orders
- Manage Addresses
- Account Details
4. Recommended Products
5. Support Link
Use WooCommerce Shortcodes:
[woocommerce_my_account]
Or custom layout:
<h1>Your Account</h1>
<div className="account-nav">
<a href="/my-account/orders/">Orders</a>
<a href="/my-account/downloads/">Downloads</a>
<a href="/my-account/addresses/">Addresses</a>
<a href="/my-account/edit-account/">Account Details</a>
[woocommerce_order_tracking]
Template 3: Student Portal (Education)
Content Structure:
1. Student Welcome
2. Enrolled Courses
3. Upcoming Assignments
4. Progress Tracker
5. Resources & Help
Example with LearnDash:
[ld_profile]
[ld_course_list]
Template 4: Employee Hub (Corporate)
Content Structure:
1. Employee Welcome
2. Department Links
3. Company News
4. HR Resources
5. Time Off Requests
Example:
<h1>Employee Portal</h1>
<div className="employee-nav">
<a href="/departments/">Departments</a>
<a href="/company-news/">Company News</a>
<a href="/hr-resources/">HR Resources</a>
<a href="/time-off/">Request Time Off</a>
<a href="/directory/">Employee Directory</a>
<div className="announcements">
<h2>Latest Announcements</h2>
[recent_posts category="announcements" count="5"]
Restricting Page Access
Method 1: Using Attributes Shortcode
Wrap entire page content:
This method does not exist — see the warning earlier on this page. Wrap the
markup in a current_user_can() check in your template instead.
Shows to non-members:
"You need to be logged in to access this page."
Method 2: Pro Version Page Protection
If using Pro version:
1. Edit page
2. Find "Attributes Access Control" meta box
3. Check "Restrict Access"
4. Select allowed roles
5. Set redirect for unauthorized users
Styling Your Pages
Use Page Builder
Compatible builders:
- Elementor
- Beaver Builder
- Divi
- Gutenberg (Block Editor)
Best practices:
- Use consistent colors
- Keep it simple and clean
- Mobile-responsive design
- Clear call-to-action buttons
Custom CSS for Dashboards
Add via Customizer:
Appearance → Customize → Additional CSS
Example Styles:
/* Dashboard Container */
.member-dashboard {
max-width: 1200px;
margin: 0 auto;
padding: 40px 20px;
}
/* Welcome Section */
.welcome-section {
background: linear-gradient(135deg, #667eea 0%, #764ba2 100%);
color: white;
padding: 40px;
border-radius: 10px;
margin-bottom: 30px;
}
/* Navigation Grid */
.dashboard-nav {
display: grid;
grid-template-columns: repeat(auto-fit, minmax(250px, 1fr));
gap: 20px;
margin: 30px 0;
}
.dash-link {
background: white;
padding: 30px;
border-radius: 8px;
text-align: center;
box-shadow: 0 2px 10px rgba(0,0,0,0.1);
transition: transform 0.3s;
}
.dash-link:hover {
transform: translateY(-5px);
}
/* Mobile Responsive */
@media (max-width: 768px) {
.dashboard-nav {
grid-template-columns: 1fr;
}
}
Testing Your Pages
- Test as each role: Create test accounts for each user type
- Check mobile view: Test on phone/tablet
- Verify all links: Click every link on page
- Test restrictions: Try accessing as logged-out user
- Check logout link: Ensure it works correctly
Common Issues
Page Shows 404 Error
- Go to Settings → Permalinks
- Click "Save Changes" (flush permalinks)
- Check page is published (not draft)
- Verify permalink matches redirect URL
Content Not Restricted
- Verify shortcode syntax is correct
- Check role names match exactly (case-sensitive)
- Ensure Pro features activated (if using Pro)
Page Looks Broken
- Check theme compatibility
- Try different page template
- Clear cache (browser and plugin cache)
- Check for CSS conflicts
Pro Tips
Create Template Pages
Build one perfect dashboard, then duplicate it for other roles. Just change the content and restrictions.
Use Dynamic Content
Show user's name, join date, activity stats using shortcodes or PHP. Makes experience feel personalized.
Include Search
Add search bar for member content so users can quickly find what they need.
Related articles
Something missing or out of date? Tell support.