Pay For Post with WooCommerce

Pay For Post with WooCommerce | Pramadillo


Quickly and easily sell access to pages, posts and custom post types through WooCommerce with Pay For Post with WooCommerce. I originally created this plugin because I looked everywhere and I couldn’t find a plugin already out there, free or premium, that would do the simple fact of selling access to a particular page or post through WooCommerce. So I decided to write my own.


  • WooCommerce version 2.6+ to be installed and active
  • Guest checkout to be turned OFF
  • PHP 5.6+ PHP 7.4+ is recommended but 5.6 will work.

How It Works

Getting everything setup will take you less than 5 minutes with three simple steps.

  • Step 1 Create a product in WooCommerce
  • Step 2 Create a page or post in WordPress
  • Step 3 Associate your product with your page using the Pay For Post with WooCommerce meta box.

It’s that simple.

With the Premium version, you have several other options for protecting content like, time based, number of page views, etc.

How-to Videos

How-to Install and Configure

How-to Protect a Page/Post


You can view a front-end demo by going to if you would like to schedule an admin demo please visit and select Plugin Admin Demo.


  • Restrict content from pages, posts and custom post types based on if they have purchased a specific WooCommerce product
  • Ability to protect a single post or multiple posts with a single product
  • Ability to protect posts with multiple products
  • Simple to use
  • Uses native WooCommerce functionality to ensure future compatibility
  • Global restricted content message which is used for all protected content
  • Utilize any standard WooCommerce shortcodes
  • PREMIUM ONLY Ability to override Restricted Content Message on a per page basis
  • PREMIUM ONLY Delay Restriction – This allows you to delay the paywall from appearing for a set amount of time.
  • PREMIUM ONLY Page View Restriction – This allows you to limit the number of page views the user who purchased this product has before the paywall reappears. Options to specify over a set amount of time or forever.
  • PREMIUM ONLY Expiry Restriction – This allows you to specify an expiration on this post which would require the user to repurchase the product associated with this post.
  • PREMIUM ONLY Custom WooCommerce tab on the My Account page to list out all purchased content
  • PREMIUM ONLY Listing of purchased content on order receipt and order confirmation page
  • PREMIUM ONLY PolyLang Multiple Language support
  • PREMIUM ONLY Priority Support
  • PREMIUM ONLY Woo Memberships Support!
  • PREMIUM ONLY Woo Subscriptions Support!

The premium version of this plugin consists of more advanced features to really get the most out of selling your pages and posts! To purchase the premium version please visit


[woocommerce-payperpost template='purchased']

This outputs an unordered list of the posts that have been purchased by the current user logged in.

There are several additional shortcodes available in the free and premium version. Take a look at for other available shortcodes.

Template Functions

IMPORTANT Out of the box this plugin will work with any theme which uses the standard WordPress function the_content(). For those themes that do not utilize the_content() you can use the following static functions in your templates.


This checks if the current user has access to the page. It returns true/false


This returns the content specified in the PPP Options.

For a full example of this take a look at


  1. Activate the plugin through the Plugins menu in WordPress
  2. Browse to Admin->WooCommerce PayPerPost->Settings
  3. Go to Page or Post and you should see a meta box for Pay For Post with WooCommerce.
  4. You can find out more on how to install by visiting

Plugin author


Plugin official website address
If you encounter problems in using the Pay For Post with WooCommerce plugin, you can comment below, and I will try my best to help you solve the problem

Leave a Comment

Your email address will not be published. Required fields are marked *