smallapis

Private Space

Members-only pages on real WordPress accounts, created from a spreadsheet.

  • Version 1.3.0
  • WordPress 6.0+
  • PHP 7.4+
  • Tested up to 7.1
  • GPLv2 or later
The members list, with search and per-person actions.

Try it here

One tick per page.

For a school, a club, an association or a company that needs a few pages only its people can read, and needs to create two hundred accounts from a spreadsheet without doing it by hand.

  • Real WordPress accounts, no custom login
  • Import 2,000 people from a CSV
  • Search engines, feeds and REST covered
Live demo: a members-only page
Members only

This page is for club members. Sign in to read it.

Hidden from search, feeds, archives and the REST API too

What it does

Everything you need. Nothing that slows you down.

The members list, with search and per-person actions.
The members list, with search and per-person actions.

Free and with a key

Free, for good. A key when you need more.

Free, no account

Every feature, with a limit on quantity only.

  • 25 members
  • Members-only pages and posts, sub-pages included
  • Partial-content shortcodes and your own sign-in page
  • CSV import with preview, CSV export
Download free

With a key

$29 a year or $99 once, for the four plugins on one site.

  • As many members as you need
  • The same key unlocks the three other plugins on the site
Get a key

Download

private-space.zipPrivate Space 1.3.0 · 38 kB · GPLv2

One zip, no account, no key: upload it in Plugins → Add New Plugin → Upload Plugin and it works at once.

Download the zipTry it first

Install

  1. Install and activate. A Member role is created.
  2. Open Private Space and add people, or import your list.
  3. Edit any page and tick Members only in the sidebar.

Installation guide Activate a key

Questions

About Private Space.

Something not working?

The documentation covers caches, nginx, WP-CLI and the problems people actually run into.

Can search engines see a members-only page?

No. The page asks search engines not to index it, leaves the XML sitemap, search results and feeds, and its content is never in the HTML sent to someone who is not signed in.

What about the REST API and RSS feeds?

Both get the same refusal as the page: the REST API returns a short "reserved for members" text instead of the content and excerpt, for every post type, and feeds leave the page out.

What CSV format does the import expect?

One line per person, with a header line. Only the email column is required; first name and last name are optional. Commas, semicolons or tabs all work, and the column names can be in English or French (email / courriel, first name / prénom, last name / nom). A file exported from Excel, in its Windows encoding, keeps its accents.

Can I restrict only part of a page?

Yes, with [private_space]...[/private_space]. Everything outside the shortcode stays public. The page is then kept out of shared caches, so a member's view is never served to someone else.

Can members see the dashboard?

The Member role has read and one custom capability: no writing, no settings, no access to other people's details. By default members do not see the WordPress toolbar, and after signing in they land on your site, on a page you can choose, rather than on their profile.

What happens to my pages if I deactivate the plugin?

They become public again immediately, so deactivating is not a safe way to pause a private area. The role and the accounts stay in place, so reactivating restores everything. Deleting the plugin removes its settings and the role but never deletes an account.

Can I use an existing role instead?

Any user with the read_private_space capability passes the gate. Administrators and editors get it automatically. If you manage roles with another plugin, granting that one capability is enough.

Does it work with a caching plugin?

Yes. Private pages send no-cache headers and tell page caches not to store them.

Does it work on a multisite network?

Yes, site by site. The role is created on each site the first time its dashboard is opened.

How much does it cost?

It is free, for good, with no account. A key at $29 a year or $99 once lifts the limits of the four plugins on one site. See pricing.

Changelog

What’s new.

1.3.0

  • New: [private_space] restricts part of a page to members, [private_space_guests] shows something to everyone else.
  • New: [private_space_login] and a sign-in page setting: visitors are sent to your own page, then back to where they were going.
  • New: export the members list as a CSV that the import reads back as is.
  • Changed: pages using the shortcodes are kept out of shared caches, like private pages.
  • Changed: clearer directory description, and answers on search engines, the REST API, feeds and the CSV format.

1.2.0

  • New: a Get a key button in the plugin header. After paying, one click activates the key on the site it was bought from, no copy and paste.
  • New: once the plugin has done its job, a short request for a review, on its own screens only, which can be put off or turned off.

1.1.1

  • Changed: the Smallapis service moved to its own domain, smallapis.com.
Earlier versions

1.1.0

  • New: protect a page's sub-pages with one tick.
  • New: give existing accounts access, remove access, send a password link, search and page through members.
  • New: the import runs in batches with a progress bar and can carry on after an interruption.
  • New: choose where members land after signing in; the toolbar is hidden from members.
  • New: "Members only" label in the page lists.
  • Fixed: a large import could hit the PHP time limit and lose the passwords of accounts it had already created.
  • Fixed: comments on private pages were visible to everyone, including in comment feeds.
  • Fixed: private pages were listed in the XML sitemap.
  • Fixed: the REST API only protected pages and posts, not custom post types.
  • Fixed: the member's view of a page could be stored by a shared cache; both views now bypass it.
  • Fixed: a signed-in visitor without access was shown the sign-in form again.
  • Fixed: spreadsheets saved by Excel in Windows encoding lost their accents and French headings.
  • Fixed: names starting with = + - or @ could run as formulas when the CSV was opened.
  • Fixed: the sign-in form could be reformatted by the theme's paragraph filter.
  • Changed: private pages are excluded by id, which is much cheaper than the previous meta query.
  • Changed: generated passwords held for download are encrypted.

1.0.0

  • First release.