I recently had a project where we wanted to sell tickets to an online event and then make sure people wouldn’t share the access link they got even after the paid.

The first step of course was making sure they were logged in before they viewed the content, essentially password protecting it. But we were worried that people would still hand out their login info.

A simple solution I found was the wordpress Pay for Post plugin. At its core, the plugin makes sure you purchased a certain WooCommerce product before showing you the pages content.

So I created a product that sold tickets, then linked it to this plugin to make sure that people paid before they bought. From a UX perspective, I also included the information on the page to make sure people know what they needed to do once they had made the purchase.

A view of the post from the front.
Linking the product to the post from the dashboard.

It’s important to note that users must be able to create an account on your site when they check out. This requires allowing “Anyone can register” in Settings > General, and also allow customers to create an account during checkout (and make sure they can’t place orders without an account) in WooCommerce > Settings > Accounts and privacy.

For the final part of this system to work, you need the premium version of the plugin. This allows you to restrict the number of times that page loads before a user gets locked out (and has to make another purchase). With the premium version you can also set an expiration date on the content, as well as some other cool features.