=== Sell WooCommerce Memberships, Restrict Store Access, Set Members Only Prices, & Global Discounts with Paid Memberships Pro ===
Contributors: strangerstudios
Tags: pmpro, paid memberships pro, woocommerce, member, prices, pricing, membership, subscription
Requires at least: 5.2
Tested up to: 5.9
Requires PHP: 5.6
Stable tag: 1.7.4
Memberships for WooCommerce: Sell membership products & set members-only pricing by product or percent discount by level with Paid Memberships Pro.
== Description ==
### The best way to add memberships and members-only discounts in your WooCommerce store.
Sell memberships as a WooCommerce product and set members-only discounts in your ecommerce store. This free plugin integrates Paid Memberships Pro with WooCommerce with three key features:
### 1. Sell Membership as a WooCommerce Product
Each product can be assigned as a "Membership Product". Customers that purchase this product in WooCommerce will be assigned a membership level in Paid Memberships Pro. Using the features of PMPro, you can restrict member access to all types of premium content, courses, and community features.
While [Paid Memberships Pro](https://wordpress.org/plugins/paid-memberships-pro/) has recurring subscriptions built-in, the default WooCommerce plugin only allows products to have a one-time payment. If you must use this plugin to sell recurring memberships through WooCommerce, you will also need WooCommerce Subscriptions.
### 2. Set Custom Product Pricing Based on Membership Level
Each product in WooCommerce can have unique pricing set for your members only.
When a logged in member views the product page, they will see their custom pricing and be able to purchase your products at this special price.
### 3. Set a Storewide Discount for Members by Level
Each membership level in Paid Memberships Pro can have a unique global percentage discount for your ecommerce store.
When a logged in member views the product page, they will see their adjusted pricing based on this storewide discount.
https://www.youtube.com/watch?v=BAA56eTRt4Q
Learn more about [WooCommerce memberships and subscriptions](https://www.paidmembershipspro.com/add-ons/pmpro-woocommerce/#membership-product?utm_source=wordpress-org&utm_medium=readme&utm_campaign=pmpro-woocommerce) and [how to set members-only pricing in WooCommerce](https://www.paidmembershipspro.com/add-ons/pmpro-woocommerce/#member-discount?utm_source=wordpress-org&utm_medium=readme&utm_campaign=pmpro-woocommerce) in our documentation site.
### Bonus Features of the WooCommerce Integration for Paid Memberships Pro
= Members Only Products =
If you'd like to offer certain products to members only, see the [Custom Post Type Membership Access Add On](
https://www.paidmembershipspro.com/add-ons/custom-post-type-membership-access/?utm_source=wordpress-org&utm_medium=readme&utm_campaign=pmpro-woocommerce
).
= Members Only Store =
If your entire store is locked for members only, see this post on [Locking Your Entire eCommerce Shop for Members-Only](https://www.paidmembershipspro.com/lock-entire-ecommerce-shop-members/?utm_source=wordpress-org&utm_medium=readme&utm_campaign=pmpro-woocommerce
).
= Catalog Mode for Non-Members =
If you would like non-members the ability to see your store items but restrict them from seeing prices and ability to purchase, see this post on [Turn your WooCommerce Store into a Catalog for Non Members](https://www.paidmembershipspro.com/turn-your-woocommerce-store-into-a-catalog-for-non-members/?utm_source=wordpress-org&utm_medium=readme&utm_campaign=pmpro-woocommerce).
### About Paid Memberships Pro
[Paid Memberships Pro is a WordPress membership plugin](https://www.paidmembershipspro.com/?utm_source=wordpress-org&utm_medium=readme&utm_campaign=pmpro-woocommerce) that puts you in control. Create what you want and release in whatever format works best for your business.
* Courses & E-Learning
* Private podcasts
* Premium Newsletters
* Private Communities
* Sell physical & digital goods
Paid Memberships Pro allows anyone to build a membership site—for free. Restrict content, accept payment, and manage subscriptions right from your WordPress admin.
Paid Memberships Pro is built "the WordPress way" with a lean core plugin and over 75 Add Ons to enhance every aspect of your membership site. Each business is different and we encourage customization. For our members we have a library of 300+ recipes to personalize your membership site.
Paid Memberships Pro is the flagship product of Stranger Studios. We are a bootstrapped company which grows when membership sites like yours grow. That means we focus our entire company towards helping you succeed.
[Try Paid Memberships Pro entirely for free on WordPress.org](https://wordpress.org/plugins/paid-memberships-pro/) and see why 100,000+ sites trust us to help them #GetPaid.
### Read More
Want more information on private forums, premium discussion boards, and WordPress membership sites? Have a look at:
* The [Paid Memberships Pro](https://www.paidmembershipspro.com/?utm_source=wordpress-org&utm_medium=readme&utm_campaign=pmpro-woocommerce) official homepage.
* The [WooCommerce Integration for PMPro documentation page](https://www.paidmembershipspro.com/add-ons/pmpro-woocommerce/?utm_source=wordpress-org&utm_medium=readme&utm_campaign=pmpro-woocommerce).
* Also follow PMPro on [Twitter](https://twitter.com/pmproplugin), [YouTube](https://www.youtube.com/channel/UCFtMIeYJ4_YVidi1aq9kl5g) & [Facebook](https://www.facebook.com/PaidMembershipsPro/).
== Installation ==
Note: You must have [Paid Memberships Pro](https://wordpress.org/plugins/paid-memberships-pro/) and [WooCommerce](https://wordpress.org/plugins/woocommerce/) installed and activated on your site.
### Install PMPro WooCommerce from within WordPress
1. Visit the plugins page within your dashboard and select "Add New"
1. Search for "PMPro WooCommerce"
1. Locate this plugin and click "Install"
1. Activate "Paid Memberships Pro - WooCommerce Add On" through the "Plugins" menu in WordPress
1. Go to "after activation" below.
### Install PMPro WooCommerce Manually
1. Upload the `pmpro-woocommerce` folder to the `/wp-content/plugins/` directory
1. Activate "Paid Memberships Pro - WooCommerce" through the "Plugins" menu in WordPress
1. Go to "after activation" below.
### After Activation: Configure Plugin Settings
= Create a Membership Product =
1. Edit a product or add a new product.
2. Select the "Membership" tab in the "Product Data" metabox.
3. Select a level from the "Membership Product" dropdown.
4. Save changes.
= Set Member Discount Pricing on a Product =
1. Edit a product or add a new product.
2. Select the "Membership" tab in the "Product Data" metabox.
3. Set a price for one or more levels in the "Member Discount Pricing" section.
4. Save changes.
= Set a Global Shop Discount for Members =
1. Edit a membership level under Membership > Settings.
2. Locate the "Set Membership Discount" section.
3. Add a percent discount to the field.
4. Save changes.
Visit our documentation site to [learn more about the settings, access custom code recipes and tutorials, and view a list of compatibility with other Paid Memberships Pro Add Ons](https://www.paidmembershipspro.com/add-ons/pmpro-woocommerce/?utm_source=wordpress-org&utm_medium=readme&utm_campaign=pmpro-woocommerce).
== Frequently Asked Questions ==
= I found a bug in the plugin. =
Please post it in the issues section of GitHub and we'll fix it as soon as we can. Thanks for helping. https://github.com/strangerstudios/pmpro-woocommerce/issues
== Screenshots ==
1. The "Membership" meta box on a single product. Optionally use this WooCommerce Product to buy a PMPro Membership Level or set specific pricing based on membership level for each product.
2. The "Set Membership Discount" field on the "Edit Membership Level" page (Memberships > Settings > Membership Levels > Edit).
== Changelog ==
= 1.7.4 - 2022-02-03 =
* BUG FIX: Fixed issue where renewal purchases was extending member's expiration date by double. (@dparker1005)
* BUG FIX/ENHANCEMENT: Fixed issues with the Gift Recipient not saving in newer WooCommerce versions. (@contemplate)
= 1.7.3 - 2021-08-25 =
* ENHANCEMENT: Tested up to WooCommerce 5.6.0.
* ENHANCEMENT: Added support for time in expiration dates when extending or renewing a level and checking out for a new membership level.
* BUG FIX: Fixed an issue where variation prices would show twice if the min and max price was identical. (Thanks, ArdiNEC on GitHub)
* BUG FIX: Fixed an issue of a non-numeric warning value when discount was empty.
* BUG FIX: Fixed deprecated function warnings.
= 1.7.2 - 2021-03-13 =
* ENHANCEMENT: Tested up to WooCommerce 5.1.0.
* ENHANCEMENT: Added .pot file and British English po/mo files.
* BUG FIX: Fixed issue where memberships associated with subscriptions in pending-cancel status were cancelled. We now wait for the full canceled status.
* BUG FIX: When variable products are used, we will look for a membership price on the parent product. No support for member prices on variations yet.
* BUG FIX: Removed use of deprecated $order->get_product_from_item() method. (Thanks, ogiebobogh on GitHub)
= 1.7.1 - 2021-01-13 =
* BUG FIX: Fixed issue where discount for membership products would be applied when shouldn't.
* ENHANCEMENT: Improved wording on the Advanced Settings area for Membership and WooCommerce Subscriptions discount option.
= 1.7 - 2020-05-01 =
* BUG FIX: Fixed bug where marking an order expired or cancelled could impact other subscriptions.
* BUG FIX: Fixed typo with `woocommerce_order_status_on-hold`.
* BUG FIX: Fixed bug that kept the "Apply Member Discounts to WC Subscription Products?" setting (under Memberships -> Settings -> Advanced) from working properly.
* BUG FIX/ENHANCEMENT: Checked that $product is actually a `product` post_type when checking if user has active membership for level.
* BUG FIX/ENHANCEMENT: Improved checks for cancelling membership if membership product expires.
* ENHANCEMENT: Added function `pmprowoo_user_has_active_membership_product_for_level` to return whether a user has an active WooCommerce product that gives membership.
* ENHANCEMENT: Updated tested up to value for WooCommerce to v4.0 and WordPress to v5.4
= 1.6.1 - 2018-06-25 =
* BUG FIX: Fixed fatal error in pmprowoo_get_membership_products_from_order() that was happening on some systems.
* ENHANCEMENT: Localization/GlotPress support.
= 1.6 - 2018-06-19 =
* BUG FIX: Fixed bug when deselecting the autocomplete option on a membership product.
* BUG FIX: Now checking if a user has a different subscription linked to their membership level before removing a user's membership level. Users switching between subscriptions for the same level would have their level removed. (Thanks, Ted Barnett)
* BUG FIX: Fixed issues when a product with a sale price also has membership pricing.
* BUG FIX/ENHANCEMENT: Updated to work with the latest versions of WooCommerce (3.4.2) and WooCommerce Subscriptions (2.2.22).
* ENHANCEMENT: Added a filter pmprowoo_get_membership_price, which can be used to support variable products via custom code (like this https://gist.github.com/ideadude/5c7ed35a50087178a47d92b192933614)
* ENHANCEMENT: Added support for PMPro Multiple Memberships per User.
= 1.5 =
* BUG/FIX: Various PHP Warning messages (Deprecated functionality)
* ENHANCEMENT: Prevents a user from adding more than a single membership product to the shopping cart
* ENHANCEMENT: Improved function documentation by adding the "WC requires at least" and "WC tested up to" fields to the plugin header.
= 1.4.5 =
* BUG: Fixed issue where since WC v3.0 variable products were not having their prices adjusted properly based on the membership pricing settings.
= 1.4.4 =
* BUG: No longer cancelling out other fields set via the pmpro_custom_advanced_settings filter. (Thanks, Nurul Umbhiya)
= 1.4.3 =
* BUG: Now using the woocommerce_product_get_price filter instead of woocommerce_get_price.
= 1.4.2 =
* BUG: Fixed bug with loading our CSS. (Thanks, Hogash and VR51 on GitHub)
= 1.4.1 =
* BUG: Fixed typo in our add_action call so PMPro memberships are cancelled when the WooCommerce Subscriptions woocommerce_scheduled_subscription_end_of_prepaid_term hook fires.
= 1.4 =
* FEATURE: If the PMPro Gift Levels Addon is also active, adds settings to set a product to generate and email a gift certificate after purchase. (Thanks, Ted Barnett)
* BUG/FIX: Updated to fully support the new WooCommerce v2+ Subscriptions hooks for activation and cancelling. No longer supporting older versions of WC Subscriptions.
* BUG/FIX: Moved CSS load to proper WordPress action hook
* BUG/ENHANCEMENT: Configure proper text domain for translation
* BUG/ENHANCEMENT: Updated action hook for deprecated WooCommerce hooks
* ENHANCEMENT: Wrapping all strings for translation and using the proper text domain (pmpro-woocommerce) to support GlotPress translations.
= 1.3.1 =
* BUG: Fixed issue where products with blank membership pricing were being marked as free for members. Use "0", "0.00", or "0,00" to mark something as free. Use blank ("") to have a product use the main price or sale price.
* ENHANCEMENT: Made the wording of the member discount a bit more clear on the edit level page.
= 1.3 =
* FEATURE: Added a setting to the membership section of the edit product page with a checkbox to "mark the order as completed immediately after checkout to activate the associated membership".
* BUG: Fixed bug when setting membership price to 0.
* BUG: Fixed PHP notices on WooCommerce single product page when PMPro membership price discount was empty.
* BUG: Fixed issue where member prices were not being applied to products for members.
= 1.2.11 =
* BUG: Fixed bug where site would crash (PHP whitecreen) if Paid Memberships Pro was not active.
= 1.2.10 =
* BUG: Fixed bug when applying membership discounts to membership products and subscriptoins.
* BUG: Fixed warnings on edit membership level page.
= 1.2.9 =
* Hooking into scheduled_subscription_end_of_prepaid_term to cancel PMPro memberships for manually renewing WooCommerce Subscriptions when they hit expiration.
= 1.2.8 =
* Using current_time('timestamp') in a couple strtotime calls.
* Added links to docs and support in the "plugin row meta".
= 1.2.7 =
* Fixed bug where startdate was not being set correctly for new users. (Thanks, liferaft) This script can be used to fix startdates for old members: https://gist.github.com/strangerstudios/4604f62e9812cf3afde7
= 1.2.6 =
* Commented out filters on "woocommerce_order_status_pending" and "woocommerce_order_status_processing" hooks. This keeps PMPro from removing a user's membership level when they are renewing which can cause issues. (Thanks, Trisha Cupra and others.)
= 1.2.5.2 =
* Fixed bug with getting the expiration_number for levels with an X months expiration. (Thanks, Arnaud Devic)
= 1.2.5.1 =
* Fixed the pmprowoo_checkout_level_extend_memberships() filter added in 1.2.5.
= 1.2.5 =
* Now applying end date extension filter to woo commerce checkouts as well. So if an existing member purchases a product for their level that has an end date, their end date will be extended from the old end date. (Thanks, trishacupra)
= 1.2.4 =
* Fixed bug with WooCommerce Subscriptions being put "on hold".
* Fixed bug when entering a membership price > 1000.
* Fixed bug on some setups which set membership price to 0 if nothing was entered.
= 1.2.3 =
* Fixed bug when setting member price to "0" in product settings.
= 1.2.2 =
* Added option to "Apply Member Discounts to WC Subscription Products?" to the PMPro Advanced Settings tab.
* Fixed bug where membership discounts wouldn't be applied if no membership products were in the cart.
* WooCommerce now mimics PMPro checkout, creating a custom level array instead of passing the ID. So if your level has an expiration number and period, it will be used when adding the level to the user checking out in WooCommerce... i.e. expiration dates "work" now. You can filter the level information using the pmprowoo_checkout_level filter.
* Added pmprowoo_checkout_level filter to allow filtering the checkout level (to use PMPro expiration dates, etc. if Subscriptions addon is not installed)
= 1.2.1 =
* Fixed updating of WooCommerce billing address user meta when brand new users checkout with PMPro.
= 1.2 - 2014-04-23 =
* Updating user meta for billing address when the Woo Commerce billing address is updated and vice versa.
= 1.1.1 =
* Fixed fatal error that would be thrown if PMPro is not also activated.
= 1.1 =
* Fixed adding/updating membership when order status is changed to completed
= 1.0 - 2014-02-26 =
* Released to the WordPress repository.
= .3.2 =
* Fixed a bug where the get_price filter wasn't running when products/prices were loaded over AJAX (e.g. in the order review).
* Added code to force account creation at checkout if the cart includes a membership level.
= .3.1 =
* Fixed bug where products were erroneously counted as "subscription products" and thus discounts may not apply. You may have to edit these products and click "update" to get the settings to save correctly.
= .3 =
* Added membership products
* Added membership discounts
* Moved PMPro options to separate tab
= .2 =
* Added per level pricing to the edit product page. (Thanks, jessica o)
= .1 =
* This is the initial version of the plugin.
== Upgrade Notice ==
= 1.4 =
Fixes bugs related to the WooCommerce Subscriptions v2 update. Added support for translations. PLEASE NOTE that PMPro WooCommerce will no longer support older versions of WooCommerce Subscriptions. Make sure all plugins are up to date.