Choosing a Theme for a Community Website
A community site spends its life rendering pages the theme demo never shows you: threads, profiles, notifications, moderation queues. Every theme in this category is marketed on its logged-out homepage.
Every theme in this category is sold on a screenshot no member will ever look at. The demo shows a logged-out marketing homepage with a hero and a testimonial slider. The actual site is a thread list, a reply form, a profile page and a notification panel, viewed by signed-in people dozens of times a week. Judge candidates on those pages or you are judging the wrong site.
Install the community plugin first, then evaluate themes against it with real threads in place.
Template compatibility is a genuine constraint
Forum and membership plugins render through their own template hierarchy, which a theme can support, ignore or half-support. The third option is the one that hurts.
What to check on a candidate, with a populated forum:
- Do the community pages get the right layout? A common failure is the plugin's pages inheriting a narrow single-post width, or losing the sidebar the rest of the site has.
- Is reply nesting legible? Deep threads need indentation, quoting and clear author separation. Themes that style comments as a magazine comment section fall apart at depth four.
- Do forms inherit the theme's field styling? Reply boxes, profile editors and search filters are often left unstyled entirely.
- Does it work at 360 pixels? Threads are read on phones, in queues, one-handed. Density matters more than whitespace here, which is the opposite of what most modern themes optimise for.
- Are member-generated images constrained? Someone will post a 4000-pixel screenshot on day two.
A theme that simply stays out of the plugin's way, inheriting its default templates, is a better outcome than one that partially restyles them.
Logged-in traffic does not use your page cache
This is the performance fact that separates community sites from every other kind, and it catches people who tested their build with a speed tool while logged out.
Full-page caching serves anonymous visitors a stored HTML file. Signed-in members cannot be served that file — their page has their name, their notifications, their unread markers. So every member request runs PHP, executes the full theme and plugin stack, and queries the database.
| Traffic | Cached? | What determines speed |
|---|---|---|
| Anonymous thread reader | Yes | Page cache; theme barely matters |
| Signed-in member browsing | No | Query count, object cache, theme weight |
| Posting a reply | No | Database writes, notification sending |
| Moderation queue | No | Admin performance, index quality |
The consequences: prefer a theme with few queries and no heavy builder dependency, get persistent object caching in place, and measure while signed in as an ordinary member. Choosing a cache plugin covers what page caching can and cannot do, and the wider techniques in speeding up a WordPress site apply — but weight the ones that help uncached requests.
Notification email is the other volume problem. A busy day produces a lot of it, and a site sending mail from the web server will start being filtered. Sort that out before the community grows, not after.
Moderation and privacy are the running costs
User-generated content brings obligations that a brochure site never has:
- Spam arrives immediately, including registration spam. Plan for it as an operational task, not a plugin you install once. Hardening the login and registration paths is part of the same job — see WordPress security plugins.
- Roles need to be deliberate. Moderators need to edit and remove content without touching plugins or settings. WordPress user roles explained is the starting point, and a community is one of the few sites where custom roles genuinely earn their complexity.
- Erasure requests are harder than they look. A member asking to be deleted has authored content other people replied to. Decide in advance whether you anonymise the author and keep the posts, or remove both, and write it into your privacy policy before someone asks.
- Avatars are member-uploaded images at scale. How they are stored and sized has a real effect on thread page weight — the options are in WordPress avatars.
- Decide where discussion happens. Running a forum alongside open post comments usually splits the conversation; many communities are better off turning comments off and pointing everything at the forum.
Access control must not live in the theme
Some themes offer member-only content: a per-page setting that hides content from logged-out visitors, or a template that checks membership status.
Use it, then switch theme, and the restriction evaporates. There is no error and no warning — the page simply becomes public, and you find out when a member forwards you a paid-content URL that worked in an incognito window. Theme-owned features failing quietly is normally an inconvenience; here it fails open, which is a different category of problem.
Membership status, content restriction and member data all belong to a plugin. The theme should render what the plugin allows and know nothing about who is entitled to what.
What to install
Choose the community plugin first, then the lightest well-maintained theme that renders its templates cleanly. Then spend a week as a member of your own site — sign up, post, reply on a phone, report something, and ask to be deleted.
Frequently asked
- Logged-in requests bypass full-page caching, so every thread view runs the full theme and plugin stack against the database. Speed on a community site comes from object caching, query count and a light theme, not from the page cache your homepage test measured.
- No, but you do need one that either supports the plugin's template hierarchy or leaves it alone. The failure to look for is a theme that half-styles the community pages and produces a forum with no sidebar, no width and unreadable nesting.
- You can, and you should not. Theme-level restriction disappears when the theme does, and the page it was protecting becomes public with no warning and no error. Access control belongs to a membership plugin.