WooCommerce Pay Per Post

Description

Quickly and easily sell access to pages, posts and custom post types through WooCommerce with WooCommerce Pay Per Post. 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.

Requirements

  • WooCommerce version 2.6+ to be installed and active
  • Guest checkout to be turned OFF
  • PHP 5.6+ PHP 7.3+ 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 WooCommerce Pay Per Post 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.

Demo

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

Features

  • 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 https://pramadillo.com/plugins/woocommerce-pay-per-post/

Shortcodes

[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 https://pramadillo.com/plugins/woocommerce-pay-per-post/ 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.

Woocommerce_Pay_Per_Post_Helper::has_access()

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

Woocommerce_Pay_Per_Post_Helper::get_no_access_content()

This returns the content specified in the PPP Options.

For a full example of this take a look at https://pramadillo.com/plugins/woocommerce-pay-per-post/

Screenshots

  • Settings Screen including premium features.
  • WooCommerce Pay Per Post meta box, including premium features.
  • Protected Page
  • Protected Page after checkout
  • Premium Feature - WooCommerce My Account Tab
  • Premium Feature - WooCommerce Order Confirmation

Installation

  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 WooCommerce Pay Per Post.
  4. You can find out more on how to install by visiting https://pramadillo.com/documentation/installing-woocommerce-pay-per-post/

FAQ

Do you offer installation and customization services?

Yes, if you need help with installation and/or would like additional customization work done for your website, you can fill out a request form at https://pramadillo.com/support

I wish this plugin had XZY feature

While I try to do my best to incorporate new features all the time, I implemented a new Feature Request board located at https://pramadillo.com/feature-requests

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.

For PREMIUM users, there is a built in option to include the post links in the order email, confirmation screen and on the users My Account page.

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.

Reviews

February 1, 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
October 15, 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.
September 10, 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.
June 21, 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!
Read all 31 reviews

Contributors & Developers

“WooCommerce Pay Per Post” is open source software. The following people have contributed to this plugin.

Contributors

Changelog

2.4.8

  • BUG FIX – Corrected issue when Debug Mode was enabled it would throw a fatal error in Free Version
  • BUG FIX – Corrected issue of __premium_only functions not being found in free version.

2.4.7

  • Public 2.4x Release!
  • UPDATE – Complete rewrite of majority of code base to put added emphasis on scalability!
  • UPDATE – Added in Monolog Logger for more robust debugging
  • UPDATE – Updated to latest Freemius SDK for a wide range of account related updates
  • UPDATE – Made the navigation menus a bit more friendly.
  • UPDATE – Changed the logic behind has_purchased function to be has_access instead to account for Premium Membership protection.
  • PREMIUM FEATURE – Added in support for Woo Memberships!!
  • PREMIUM FEATURE – Added in support for Woo Subscriptions!!
  • PREMIUM FEATURE – Added in javascript page refresh for page expiration protection
  • PREMIUM FEATURE – Filter added wc_pay_per_post_enable_javascript_expiration_refresh to disable javascript refresh protection
  • PREMIUM UPDATE – Added in conditional logic for expiration-status partial to account for admins that have access.
  • BUG FIX – Corrected bug which would cause admin screen to refresh when viewing an expired post – Thanks @ryan!
  • BUG FIX – Corrected bug which would improperly set the expiration status of the post – Thanks @ryan!
  • BUG FIX – Corrected issue when protecting posts with membership they would not show up in purchased shortcode – Thanks @ryan!
  • BUG FIX – Fixed issue with purchased and remaining shortcode which would not display standard protection products
  • BUG FIX – If setting enabled to allow admin’s to view protected post content, then do not enforce the javascript page reloading.
  • BUG FIX – Corrected issue with expiration protection for if last purchase date was empty it would allow access to protected content. – Thanks @ryan!

2.4.6

  • BUG FIX – Corrected issue with expiration protection for if last purchase date was empty it would allow access to protected content. – Thanks @ryan!
  • UPDATE – Added in conditional logic for expiration-status partial to account for admins that have access.

2.4.5

  • BUG FIX – If setting enabled to allow admin’s to view protected post content, then do not enforce the javascript page reloading.

2.4.4

  • BUG FIX – Fixed issue with purchased and remaining shortcode which would not display standard protection products
  • FEATURE – Filter added wc_pay_per_post_enable_javascript_expiration_refresh to disable javascript refresh protection

2.4.3

  • BUG FIX – Corrected issue when protecting posts with membership they would not show up in purchased shortcode – Thanks @ryan!
  • UPDATE – Changed the logic behind has_purchased function to be has_access instead to account for Membership protection.

2.4.2

  • BUG FIX – Corrected bug which would cause admin screen to refresh when viewing an expired post – Thanks @ryan!
  • BUG FIX – Corrected bug which would improperly set the expiration status of the post – Thanks @ryan!

2.4.1

  • PREMIUM FEATURED – Added in support for Woo Memberships!!
  • PREMIUM FEATURED – Added in support for Woo Subscriptions!!
  • PREMIUM FEATURED – Added in javascript page refresh for page expiration protection

  • UPDATE – Complete rewrite of majority of code base to put added emphasis on scalability

  • UPDATE – Added in Monolog Logger for more robust debugging
  • UPDATE – Updated to latest Freemius SDK for a wide range of account related updates
  • UPDATE – Made the navigation menus a bit more friendly.

2.3.2

  • BUGFIX – Fixed issue with template replacements not working in 2.3.1

2.3.1

  • FEATURE – Added in new filter to hide the purchased content links from woocommerce receipt emails.
  • UPDATE – Refactored a ton of code for performance increases!
  • BUGFIX – Updated links in settings page to work with installs that are not in the root directory.

2.3.0

  • FEATURE – Added in Debug tools to check if page view tables are created, and if WooCommerce products are created.
  • FEATURE – Added in new shortcode parameter for the purchased shortcode, to allow to group by product ids!
  • UPDATE – Added in timezone locale to date of last purchase for page view protection
  • UPDATE – Added in WordPress Version check for the Debug Screen. Older versions of WordPress do not have SiteHealth functions.
  • UPDATE – Removed animated GIFs from getting started section and introduced more documentation at pramadillo.com
  • UPDATE – Included latest version of symfony translation library
  • UPDATE – Updated language translations to latest machine translations. If anyone is wanting to help translate please reach out!

2.2.9

  • UPDATE – Added in new Getting Started section
  • UPDATE – Added in new Debug section
  • UPDATE – Refactored functions to be more performant
  • UPDATE – Dynamically pulling in change log from README.TXT
  • UPDATE – Updated premium feature screen shots.
  • BUG FIX – Corrected issue with Polylang support which was only querying the default language.
  • BUG FIX – Fixed issue with orders in the Processing state and Page View protection
  • BUG FIX – Fixed bug which wasn’t displaying the protected content heading on the order page without filter.

2.2.8

  • PREMIUM FEATURED – Added in Polylang support

2.2.7

  • UPDATE – Added in saving permalinks after turning on the my account tab.

2.2.6

  • PREMIUM FEATURE – Added ability to have a tab on the My Account section appear with purchased content
  • PREMIUM FEATURE – Added in filter to change My Account Tab name
  • PREMIUM FEATURE – Added in two actions before and after shortcode for My Account section

2.2.5

  • PREMIUM FEATURE – Purchased content links now appear on Order Confirmation screen AND in all Order Receipt emails!
  • PREMIUM FEATURE – Added in filter to change purchased content title on emails.

  • UPDATE – Updated translations with latest content

  • UPDATE – Removed unnecessary filter call.
  • UPDATE – Added more documentation links and links to pramadillo.com for feature requests

2.2.4

  • 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

2.2.3

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

2.2.2

  • 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

2.2.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

2.2.0

  • 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

2.1.16

  • 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.

2.1.15

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

2.1.14

  • 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

2.1.13

  • 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()

2.1.12

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

2.1.11

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

2.1.10

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

2.1.9

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

2.1.8

  • 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

2.1.7

  • 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

2.1.6

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

2.1.5

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

2.1.4

  • 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

2.1.3

  • 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

2.1.2

  • 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

2.1.1

  • 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.

2.1.0

  • Initial public release!

2.0.3

  • 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

2.0.0

  • Complete Rewrite

1.4.9

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

1.4.8

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

1.4.7

  • 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

1.4.6

  • 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.

1.4.5

  • 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.

1.4.4

  • 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!

1.4.3

  • 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

1.4.2

  • 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.

1.4.1

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

1.4

  • 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

1.3

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

1.2.2

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

1.2.1

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

1.2

  • Initial Release