WooCommerce Pay Per Post


Quickly and easily sell access to pages, posts and custom post types through WooCommerce with WooCommerce Pay Per Post.


This plugin DOES require WooCommerce to be installed and active. I have tested this with the latest version to date Version 3.7.0.

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.

This plugin creates a custom field which you simply need to browse for your product, or multiple products, which are needed to be purchased in order view the post.

It checks to make sure the user is logged in, AND has purchased that particular product before. If they have, they see the general post content. If they have NOT purchased they are then displayed a Restriction Content message with a buy now button for the product.


[woocommerce-payperpost template='purchased']

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

[woocommerce-payperpost template='remaining']

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

[woocommerce-payperpost template='all']

This outputs an unordered list of the posts that can be purchased by a user.

Template Functions

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.

And example of this working together would be something like the following
<?php if(Woocommerce_Pay_Per_Post_Helper::has_access()): ?>
This is the content that a user should see if they paid for the post
<?php else: ?>
<?php echo Woocommerce_Pay_Per_Post_Helper::get_no_access_content(); ?>
<?php endif; ?>


The premium version of this plugin consists of over 300 hours of development!


  • Page View Restriction
  • Post Expiration Restriction
  • Delay Restriction
  • Powerful shortcode features
  • Ability to override restricted content message per post
  • Premium support
  • and much more!


  • Settings Screen
  • Frontend view of Pay Per Post NOT Purchased


  1. Activate the plugin through the Plugins menu in WordPress
  2. Browse through the WooCommerce Pay Per Post settings
  3. Go to Page or Post and you should see a meta box for WooCommerce Pay Per Post.

Preguntas frecuentes

Can this plugin work with custom post types?

Yes, this plugin worked with all custom post types. In the settings you can add and remove which post types you would like the metabox to show up on.

How do you link to your post after an order has been placed?

What I have done in the past is use the Order Notes for the product in WooCommerce. So what will happen is after they purchase, on the Payment Received page they will see the order notes, and they will get sent in the receipt also.

So for instance, I have a Vimeo video that I embed in a page, on the Vimeo Product in WooCommerce I add the Password and notes on how to view the video, they gets transmitted via email and on the thank you page for the user.

Do I need to have user accounts turned on?

Yes, in order to keep track of who purchased what, it is a requirement that all customers have user accounts/

Do you offer support?

Yes, I do the absolute best I can to support the free version of the plugin. If you upgrade to the premium version you will have priority support.


1 de febrero de 2019
I have been looking for exact same thing from last 15 days but couldn't find anything close to it. You have no idea how much your plugin have helped me.its equal to life saver.Will surely donate or buy premium soon. Thanks Matt Amninder
15 de octubre de 2018
The plug-in you will install here for free has no features at all, they just use it to collect marketing information about you and your website and to try to sell you their "premium" plug-in. don't waste your time.
10 de septiembre de 2018
This plugin (free version was perfect for what I needed) I would have been willing to purchase a premium version that was reasonably priced however...I updated the plugin only to find this message on my pages when I go to edit them saying I need to PAY to be able edit individual messages on the page now. This is something that is a BASIC feature. The default message honestly isn't very professional either. I wouldn't refer to my customers as "folks". I know you can edit that out but when I updated the plugin I didnt realize my original messages would be removed and it caused major confusion for my customers who were accessing my site because the help messages I provided on the pages were WIPED OUT with the update. You basically stripped away the functionality you gave us to start with. I dont mind paying for the plugin I know as a developer you need to make money for your work but going on a subscription type of fee that is so HIGH is a bit ridiculous. Considering hosting for websites isn't even $8 a month for me I cant justify that monthly for ONE single plugin for ONE site. Not only that but the single site license is $8.33 and billed ANNUALLY meaning I have to fork over $100 for a simple plugin. I dont even pay $100 a month for my webhosting. The pricing structure is simply outrageous for the type of features this plugin offers and $30 a MONTH if you need it for more than one site??? Again people are not even paying that for webhosting a month and there really isnt much to this plugin that justifies it. I could justify $60-80 one time fee or a cheaper yearly fee to keep it updated but I think your pricing structure is going to turn many people off from purchasing this. There are plugins that do this and MORE on codecanyon for a faction of the price and its a ONE TIME fee of $40 and you're not much cheaper than woocommerces official membership plugin which restricts access to pages and offers content dripping and more for $150 single site. Is just disappointing to see basic features stripped away and then a really high pricing structure and Im sure I wont be the only one out off by it.
12 de julio de 2018
Works well on my site with gated access to tour content. Matt is also approachable and super responsive if you're having any issues. Highly recommended.
21 de junio de 2018
This plugin is much a much needed one in the WordPress community as the functionality it offers (eve in the free-version) is quite unique. It works flawlessly and once you understand the clever implementation of it, it is very easy to roll out. I give Matt, the developer, a A++ for support. He goes above and beyond to help folks out should a problem arise. Get this plugin!
Leer todas las 31 reseñas

Colaboradores y desarrolladores

«WooCommerce Pay Per Post» es un software de código abierto. Las siguientes personas han colaborado con este plugin.


Traduce «WooCommerce Pay Per Post» a tu idioma.

¿Interesado en el desarrollo?

Revisa el código , echa un vistazo al repositorio SVN o suscríbete al registro de desarrollo por RSS.

Registro de cambios


  • FEATURE – Added in expiration status attribute to purchased shortcode template
  • UPDATE – Confirmed working with WooCommerce 3.7.x
  • UPDATE – Updated Symphony SDK, Carbon SDK, and Freemius SDK to latest versions


  • UPDATE – Updated Symphony SDK, Carbon SDK, and Freemius SDK
  • UPDATE – Limited product list meta box to only published products.


  • BUG FIX – Fixed issue with Fatal error when displaying pageviews remaining without having a end date
  • BUG FIX – Fixed issue where if user purchased product again, it would not reset pageviews
  • UPDATE – Updated Symphony SDK, Carbon SDK, and Freemius SDK
  • UPDATE – Confirmed working with WP 5.1.1 and WC 3.6.1


  • BUG FIX – Fixed issue on what’s new page and GIANT Pramadillo taking over screen on free version!
  • UPDATE – Updated Symphony SDK
  • UPDATE – Confirmed working with WP 5.1 and WC 3.5.5


  • BUG FIX – Fixed issue in pro version for Expiration timeframe, date/time of last order now comes from order_completed date rather than post_date
  • UPDATE – Updated Freemius SDK to latest version
  • UPDATE – Updated Carbon Library to latest version
  • UPDATE – Updated Symfony Library to latest version


  • BUG FIX – Fixed issue if admin’s were allowed to view paid content, and comment restriction was enabled, to allow admins to view comments too.


  • BUG FIX – Fixed plugin conflict with WC Email Verification by XL plugins


  • BUG FIX – Fixed issue with PHP Warning on PHP 7.1
  • UPDATE – Updated to latest Freemius SDK
  • UPDATE – Confirmed compatibility with WordPress 5.0 & WooCommerce 3.5.2
  • UPDATE – Confirmed working, not pretty, but working with Gutenberg


  • NEW FEATURE – Added in two new filters wc_pay_per_post_all_product_args and wc_pay_per_post_virtual_product_args
  • UPDATE – Updated the virtual product filter to adhere to new WooCommerce meta values
  • UPDATE – Addressed more pages to make them translatable
  • BUG FIX – Corrected PHP warning message for invalid argument when using implode()


  • BUG FIX – Corrected issue with debug code displaying on protected products


  • BUG FIX – Fixed issue with comments being displayed through entire site instead of just on protected posts


  • BUG FIX – Fixed issue where if multiple products were associated with post it would only look for the first product


  • Updated composer to default to php 5.6 instead of php 7


  • Modified codebase to conform with WordPress coding standards.
  • NEW PREMIUM FEATURE – Ability to turn comments off for JUST folks that have not purchased page
  • NEW PREMIUM FEATURE – Added the ability to show how many pageviews / how much time was remaining before post expired.
  • FIXED issue with premium page view expiration
  • FIXED issue with help page tabs not working


  • NEW PREMIUM FEATURE Ability to utilize product variations
  • NEW Shortcode replacement for {{parent_id}} which is to be used with Variations to get the main product ID
  • FIXED issue which help page tabs would not work


  • REFACTOR refactored the way the Select2 javascript library was enqueued to minimize conflicts with other plugins using Select2


  • FIXED minor bug with upgrade script that accounts for blank records on post_meta


  • FIXED bug which if upgraded would still show as FREE license sometimes.
  • UPDATED Freemius WordPress SDK to latest version
  • UPDATED POT File for translations
  • UPDATED Spanish translation
  • UPDATED French translation


  • FIXED allow for multiple product ids to be show in shortcode
  • FIXED issue with trial subscriptions which still showed upgrade to premium even though you were in premium trial


  • FIXED PHP Notice on Upgrade complete page
  • FIXED bug which did not account for custom post types in upgrade process
  • FIXED bug in shortcode that did not account for custom post types


  • FIXED bug which if toggle for allow admins to view protected content it would allow users to view protected content
  • FIXED bug which was double encoding the restricted message before saving in database.


  • Initial public release!


  • fixed issue when activating and post_type options blank causing PHP notice
  • Added text to clarify the Override Restricted Content Message
  • Fixed issue when viewing posts in EXCEPT view that restricted content message would appear.
  • Added new option to only show Virtual / Downloadable products in Products Dropdown
  • Added English POT file for translations
  • Added Spanish translation


  • Complete Rewrite


  • Changed dependency code for WC to work correctly with MU. Thanks @sdbox


  • Tested WordPress 4.8 Compatibility
  • Tested WooCommerce 3.0.8 Compatibility
  • Added in template wrapper functions to be able to integrate with more themes.


  • Tested WordPress 4.7 Compatibility
  • Tested WooCommerce 2.6.11 Compatibility
  • Laid the ground work for many new features
  • Delay Restriction Coming Soon in PRO version
  • Page View Restriction Coming Soon in PRO version
  • Post Expiry Restriction Coming Soon in PRO version


  • Added in a «Do Not Protect» option to the dropdown of the PPP Meta box. You can now select that to remove restrictions from post.


  • Changed the way I query the products to display the meta box on the admin pages. This should correct issue with other plugin meta boxes not displaying previously inputted data.


  • Changed the logic on custom post types. Instead of including all post types by default and allowing users to exclude specific post types. I now include only page, and post by default and then let users INCLUDE specific post types.
  • Not sure why I didn’t program it that way to begin with. Sorry all!


  • Updated the PURCHASED Shortcode to work with all custom post types by default. Uses same Exclude post type functionality from settings screen.
  • Fixed PHP Warning message due to type


  • Excluded WooCommerce default custom post types from adding PPP Meta Box on.
  • Added in field in settings for users to be able to exclude specific custom post types.


  • Quick fix for the multiple select field for product ID. Add in nopaging=true.


  • Made it so if you are an ADMIN you can view the post content. If you need to see what the Oops screen looks like, just use a non logged in user.
  • Add in support for all registered custom post types, so you now do not need to hack the plugin to make it work for your custom post type!
  • Made it easier to enter in product ids, you now have a multiple select box instead of just a text field
  • Confirmed support for WordPress 4.3
  • Confirmed support for WooCommerce 2.4.5


  • Added in the ability for multiple product IDs per post/page *
  • Updated FAQ Section *


  • Removed the pagination from the products listed out on the purchased page. *


  • Fixed error displaying when debug mode is enabled for Missing argument 2 on get() function *


  • Initial Release