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.

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='has_access']
This outputs an unordered list of the posts that the current logged in user has access to.
[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. For more shortcodes that are related to the Premium version please visit the Shortcode Documentation

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; ?>  

Premium Features

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


  • Ability to override Restricted Content Message on a per page basis
  • Delay Restriction – This allows you to delay the paywall from appearing for a set amount of time.
  • 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.
  • 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.
  • Custom WooCommerce tab on the My Account page to list out all purchased content
  • Listing of purchased content on order receipt and order confirmation page
  • PolyLang Multiple Language support
  • WooCommerce Memberships Integration! -You can now associate a page/post with any WooCommerce membership level!
  • WooCommerce Subscriptions Integration! – Want to charge the user over and over again to have access to content?  Associate any page/post with any WooCommerce Subscription product!
  • Paid Membership Pro Integration! -You can now associate a page/post with any Paid Membership Pro membership level!
  • Full Elementor Integration! -You can now associate any Elementor element with a product rather than the whole page!
  • Priority Support
  • And more!

Screen Shots

How-to Videos

Purchase a License

An annual licence entitles you to 1 year of updates, usage and support. Your subscription will auto-renew each year until cancelled.

Use coupon code pramadillo23 to get 20% off!


4.9/5 based on 192 reviews

Helpful Links

Plugin Details

  • Version3.1.12
  • Updated10/18/2023
  • Released5/14/2014

Tested Up To

  • WordPress6.3.x
  • WooCommerce8.2.x
  • Elementor 3.16.x
  • Elementor Pro 3.16.x


  • WordPress5.8+
  • WooCommerce2.6+
  • PHP7.2+