{"id":387877,"date":"2026-10-30T15:36:57","date_gmt":"2026-10-30T15:36:57","guid":{"rendered":"https:\/\/wordpress.org\/plugins\/metered-content-for-woocommerce\/"},"modified":"2026-10-30T15:21:47","modified_gmt":"2026-10-30T15:21:47","slug":"metered-content-for-woocommerce","status":"publish","type":"plugin","link":"https:\/\/wordpress.org\/plugins\/metered-content-for-woocommerce\/","author":15600099,"comment_status":"closed","ping_status":"closed","template":"","meta":{"version":"1.0.0","stable_tag":"trunk","tested":"7.1.4","requires":"6.6","requires_php":"7.4","requires_plugins":null,"header_name":"Metered Content for WooCommerce","header_author":"webangon","header_description":"Sell tiered, metered access to WordPress content using WooCommerce products.","assets_banners_color":"7386bd","last_updated":"2026-10-30 15:21:47","external_support_url":"","external_repository_url":"","donate_link":"","header_plugin_uri":"https:\/\/wordpress.org\/plugins\/metered-content-for-woocommerce\/","header_author_uri":"https:\/\/profiles.wordpress.org\/webangon\/","rating":0,"author_block_rating":0,"active_installs":0,"downloads":64,"num_ratings":0,"support_threads":0,"support_threads_resolved":0,"author_block_count":0,"sections":["description","installation","faq","changelog"],"tags":[],"upgrade_notice":[],"ratings":[],"assets_icons":{"icon-128x128.gif":{"filename":"icon-128x128.gif","revision":3775553,"resolution":"128x128","location":"assets","locale":"","width":128,"height":128},"icon-256x256.gif":{"filename":"icon-256x256.gif","revision":3775553,"resolution":"256x256","location":"assets","locale":"","width":256,"height":256}},"assets_banners":{"banner-1544x500.png":{"filename":"banner-1544x500.png","revision":3775553,"resolution":"1544x500","location":"assets","locale":"","width":1544,"height":500},"banner-772x250.png":{"filename":"banner-772x250.png","revision":3775553,"resolution":"772x250","location":"assets","locale":"","width":772,"height":250}},"assets_blueprints":{"blueprint.json":{"filename":"blueprint.json","revision":3775577,"resolution":false,"location":"assets","locale":"","contents":"{\"$schema\":\"https:\\\/\\\/playground.wordpress.net\\\/blueprint-schema.json\",\"meta\":{\"title\":\"Metered Content for WooCommerce \\u2013 live preview\",\"description\":\"WooCommerce site with three access plans, four premium articles and a partial-preview paywall. Opens on the plugin settings.\",\"author\":\"webangon\",\"categories\":[\"WooCommerce\",\"Paywall\"]},\"landingPage\":\"\\\/wp-admin\\\/edit.php?post_type=wcmc_plan&page=wcmc-settings\",\"preferredVersions\":{\"php\":\"8.2\",\"wp\":\"latest\"},\"features\":{\"networking\":true},\"login\":true,\"steps\":[{\"step\":\"installPlugin\",\"pluginData\":{\"resource\":\"wordpress.org\\\/plugins\",\"slug\":\"woocommerce\"},\"options\":{\"activate\":true}},{\"step\":\"installPlugin\",\"pluginData\":{\"resource\":\"wordpress.org\\\/plugins\",\"slug\":\"metered-content-for-woocommerce\"},\"options\":{\"activate\":true}},{\"step\":\"setSiteOptions\",\"options\":{\"blogname\":\"Daily Reader\",\"permalink_structure\":\"\\\/%postname%\\\/\",\"users_can_register\":\"1\",\"woocommerce_enable_myaccount_registration\":\"yes\",\"woocommerce_currency\":\"USD\",\"woocommerce_coming_soon\":\"no\",\"woocommerce_task_list_hidden\":\"yes\",\"woocommerce_show_marketplace_suggestions\":\"no\",\"woocommerce_allow_tracking\":\"no\",\"woocommerce_onboarding_profile\":{\"skipped\":true}}},{\"step\":\"runPHP\",\"code\":\"<?php\\nrequire_once '\\\/wordpress\\\/wp-load.php';\\n\\n$para = 'Independent newsrooms are rethinking how readers pay for journalism. Instead of a single wall in front of every story, publishers now offer a handful of free articles, then invite regular readers to choose a pass that matches how much they read. The approach keeps search and social traffic flowing while turning loyal visitors into paying members.';\\n$body = '';\\nfor ( $i = 0; $i < 8; $i++ ) {\\n\\t$body .= \\\"<!-- wp:paragraph -->\\\\n<p>\\\" . $para . \\\"<\\\/p>\\\\n<!-- \\\/wp:paragraph -->\\\\n\\\\n\\\";\\n}\\n\\n$posts = array(\\n\\t'How Metered Paywalls Turn Readers into Members',\\n\\t'Inside the Newsroom: A Week of Local Reporting',\\n\\t'Ten Data Stories That Shaped the Year',\\n\\t'The Economics of Independent Journalism',\\n);\\nforeach ( $posts as $title ) {\\n\\twp_insert_post( array( 'post_title' => $title, 'post_content' => $body, 'post_status' => 'publish', 'post_type' => 'post' ) );\\n}\\n\\n$product = static function ( $name, $price ) {\\n\\t$p = new WC_Product_Simple();\\n\\t$p->set_name( $name );\\n\\t$p->set_regular_price( $price );\\n\\t$p->set_virtual( true );\\n\\t$p->set_status( 'publish' );\\n\\treturn $p->save();\\n};\\n\\n$plans = array(\\n\\tarray( 'Free Reader', 'Three articles every month with a free account.', 'Create free account', 0, 0, 3, 0, 1 ),\\n\\tarray( 'Monthly Pass', 'Unlimited articles for 30 days.', 'Get monthly access', $product( 'Monthly Pass', '9.00' ), 1, 0, 30, 5 ),\\n\\tarray( 'Annual Pass', 'Unlimited articles for a full year. Best value.', 'Get annual access', $product( 'Annual Pass', '79.00' ), 1, 0, 365, 10 ),\\n);\\nforeach ( $plans as $i => $p ) {\\n\\t$id = wp_insert_post( array( 'post_title' => $p[0], 'post_type' => 'wcmc_plan', 'post_status' => 'publish', 'menu_order' => $i ) );\\n\\tupdate_post_meta( $id, '_wcmc_plan_title', $p[0] );\\n\\tupdate_post_meta( $id, '_wcmc_subtitle', $p[1] );\\n\\tupdate_post_meta( $id, '_wcmc_button_text', $p[2] );\\n\\tupdate_post_meta( $id, '_wcmc_product_id', $p[3] );\\n\\tupdate_post_meta( $id, '_wcmc_unlimited', $p[4] );\\n\\tupdate_post_meta( $id, '_wcmc_allowance', $p[5] );\\n\\tupdate_post_meta( $id, '_wcmc_reset_count', 1 );\\n\\tupdate_post_meta( $id, '_wcmc_reset_unit', 'month' );\\n\\tupdate_post_meta( $id, '_wcmc_duration_days', $p[6] );\\n\\tupdate_post_meta( $id, '_wcmc_priority', $p[7] );\\n}\\n\\n$pricing = wp_insert_post( array( 'post_title' => 'Pricing', 'post_name' => 'pricing', 'post_content' => '[wcmc_pricing_table]', 'post_status' => 'publish', 'post_type' => 'page' ) );\\n\\nupdate_option(\\n\\t'wcmc_settings',\\n\\tarray_merge(\\n\\t\\t(array) get_option( 'wcmc_settings', array() ),\\n\\t\\tarray(\\n\\t\\t\\t'paywall_style'         => 'partial',\\n\\t\\t\\t'teaser_words'          => 60,\\n\\t\\t\\t'plans_url_type'        => 'custom',\\n\\t\\t\\t'plans_page_url'        => get_permalink( $pricing ),\\n\\t\\t\\t'restricted_post_types' => array( 'post' ),\\n\\t\\t\\t'gift_limit'            => 5,\\n\\t\\t\\t'gift_days'             => 7,\\n\\t\\t\\t'reminder_days'         => 7,\\n\\t\\t)\\n\\t)\\n);\\n\\nflush_rewrite_rules();\\n\"}]}"}},"all_blocks":[],"tagged_versions":[],"block_files":[],"assets_screenshots":{"screenshot-1.png":{"filename":"screenshot-1.png","revision":3775553,"resolution":"1","location":"assets","locale":"","width":1180,"height":698},"screenshot-2.png":{"filename":"screenshot-2.png","revision":3775553,"resolution":"2","location":"assets","locale":"","width":1180,"height":560},"screenshot-3.png":{"filename":"screenshot-3.png","revision":3775553,"resolution":"3","location":"assets","locale":"","width":1568,"height":698},"screenshot-4.png":{"filename":"screenshot-4.png","revision":3775553,"resolution":"4","location":"assets","locale":"","width":260,"height":386},"screenshot-5.png":{"filename":"screenshot-5.png","revision":3775553,"resolution":"5","location":"assets","locale":"","width":808,"height":620}},"screenshots":{"1":"Settings: paywall style, free articles per period and registration wall, with a status bar for every feature.","2":"Engagement settings: gift links and pass expiry reminder e-mails.","3":"Access plan editor: plan title, subtitle, button text, WooCommerce product, allowance, reset period and duration.","4":"Content Access panel in the post editor: choose who can read the post and how many preview words to show.","5":"Partial-preview paywall on an article, offering the plan that unlocks it."}},"plugin_section":[],"plugin_tags":[1932,178230,12688,4079,286],"plugin_category":[41,45,58],"plugin_contributors":[183622],"plugin_business_model":[],"class_list":["post-387877","plugin","type-plugin","status-publish","hentry","plugin_tags-membership","plugin_tags-metered-content","plugin_tags-paywall","plugin_tags-subscriptions","plugin_tags-woocommerce","plugin_category-communication","plugin_category-ecommerce","plugin_category-user-management","plugin_contributors-webangon","plugin_committers-webangon"],"banners":{"banner":"https:\/\/ps.w.org\/metered-content-for-woocommerce\/assets\/banner-772x250.png?rev=3775553","banner_2x":"https:\/\/ps.w.org\/metered-content-for-woocommerce\/assets\/banner-1544x500.png?rev=3775553","banner_rtl":false,"banner_2x_rtl":false},"icons":{"svg":false,"icon":"https:\/\/ps.w.org\/metered-content-for-woocommerce\/assets\/icon-128x128.gif?rev=3775553","icon_2x":"https:\/\/ps.w.org\/metered-content-for-woocommerce\/assets\/icon-256x256.gif?rev=3775553","generated":false},"screenshots":[{"src":"https:\/\/ps.w.org\/metered-content-for-woocommerce\/assets\/screenshot-1.png?rev=3775553","caption":"Settings: paywall style, free articles per period and registration wall, with a status bar for every feature."},{"src":"https:\/\/ps.w.org\/metered-content-for-woocommerce\/assets\/screenshot-2.png?rev=3775553","caption":"Engagement settings: gift links and pass expiry reminder e-mails."},{"src":"https:\/\/ps.w.org\/metered-content-for-woocommerce\/assets\/screenshot-3.png?rev=3775553","caption":"Access plan editor: plan title, subtitle, button text, WooCommerce product, allowance, reset period and duration."},{"src":"https:\/\/ps.w.org\/metered-content-for-woocommerce\/assets\/screenshot-4.png?rev=3775553","caption":"Content Access panel in the post editor: choose who can read the post and how many preview words to show."},{"src":"https:\/\/ps.w.org\/metered-content-for-woocommerce\/assets\/screenshot-5.png?rev=3775553","caption":"Partial-preview paywall on an article, offering the plan that unlocks it."}],"raw_content":"<!--section=description-->\n<p>Metered Content for WooCommerce adds flexible access plans and a publisher-friendly paywall to WordPress.<\/p>\n\n<ul>\n<li>Unlimited access plans or a fixed number of unique articles per day, week, month, or year.<\/li>\n<li>Repeat reads of the same article do not consume another credit in the same period.<\/li>\n<li>Metered paywall: let readers without a plan open a number of free articles per period before the paywall.<\/li>\n<li>Restrict individual posts, whole post types, or any category, tag, and custom-taxonomy term.<\/li>\n<li>Sell plans with ordinary WooCommerce products as fixed-duration passes; buying again extends the pass.<\/li>\n<li>Automatically recognize active WooCommerce Subscriptions when that extension is installed.<\/li>\n<li>Refunded or cancelled orders revoke the access they granted.<\/li>\n<li>Manual grant and revoke from the user profile.<\/li>\n<li>Hard, partial-preview, and metered paywall presentations.<\/li>\n<li>Shortcodes for partial-content protection, remaining usage, and pricing.<\/li>\n<li>A WooCommerce My Account screen with plan usage and reading history.<\/li>\n<li>Registration wall: visitors who run out of free articles are asked to create a free account for more, before being asked to pay.<\/li>\n<li>Gift links: members share a link that opens one premium article for anyone, with a monthly limit and an expiry.<\/li>\n<li>Expiry reminder e-mails before and after a pass expires, managed as WooCommerce e-mails.<\/li>\n<li>Reports: reads, paywall views, sign-ups and purchases started at a paywall, attributed revenue, gift usage, top articles and active passes.<\/li>\n<\/ul>\n\n<h3>Notes<\/h3>\n\n<ul>\n<li>Guests must create an account when the cart contains a plan product, because access is attached to the account. Filter <code>wcmc_require_account_for_plans<\/code> to disable this; guest orders are then granted once WooCommerce links them to an account.<\/li>\n<li>Metered free reads for visitors are tracked in a signed cookie, and metered premium pages are excluded from page caching (<code>DONOTCACHEPAGE<\/code> plus no-cache headers).<\/li>\n<li>Only users with the <code>manage_options<\/code> capability (filter <code>wcmc_manage_capability<\/code>) can manage plans, settings and manual grants.<\/li>\n<li>Reports count paywall views on article pages that are not served from a full-page cache; hard-paywall pages for visitors may be cached and undercounted.<\/li>\n<li>Gift tokens are signed with the site salts; changing the salts invalidates outstanding gift links.<\/li>\n<\/ul>\n\n<h3>Shortcodes<\/h3>\n\n<pre><code>[wcmc_premium_content plan=\"pro,unlimited\"]Protected content[\/wcmc_premium_content]\n\n[wcmc_subscriber_only]Visible to members[\/wcmc_subscriber_only]\n\n[wcmc_non_subscriber_only]Visible to visitors without a plan[\/wcmc_non_subscriber_only]\n\n[wcmc_remaining_articles]\n\n[wcmc_pricing_table]&lt;h3&gt;Hooks&lt;\/h3&gt;\n<\/code><\/pre>\n\n<p>Filters: <code>wcmc_access_result<\/code>, <code>wcmc_restriction<\/code>, <code>wcmc_paywall_args<\/code>, <code>wcmc_paywall_html<\/code>, <code>wcmc_teaser_text<\/code>, <code>wcmc_plans_url<\/code>, <code>wcmc_bypass_paywall<\/code>, <code>wcmc_should_meter_visitor<\/code>, <code>wcmc_require_account_for_plans<\/code>, <code>wcmc_manage_capability<\/code>, <code>wcmc_supported_post_types<\/code>, <code>wcmc_active_subscription_statuses<\/code>, <code>wcmc_reads_retention_days<\/code>, <code>wcmc_enqueue_frontend_style<\/code>, <code>wcmc_can_gift<\/code>, <code>wcmc_gift_box_html<\/code>, <code>wcmc_gift_notice_html<\/code>.<\/p>\n\n<p>Actions: <code>wcmc_plan_granted<\/code>, <code>wcmc_plan_revoked<\/code>, <code>wcmc_read_recorded<\/code>, <code>wcmc_visitor_read_recorded<\/code>, <code>wcmc_paywall_rendered<\/code>, <code>wcmc_order_granted<\/code>, <code>wcmc_gift_created<\/code>, <code>wcmc_event_logged<\/code>.<\/p>\n\n<!--section=installation-->\n<ol>\n<li>Activate WooCommerce.<\/li>\n<li>Activate Metered Content for WooCommerce.<\/li>\n<li>Open Metered Content &gt; Add Access Plan and publish at least one plan.<\/li>\n<li>Associate a WooCommerce product with paid plans, or leave the product empty for a free registered-user plan.<\/li>\n<li>Configure global rules under Metered Content &gt; Settings, or use the Content Access panel on individual posts.<\/li>\n<\/ol>\n\n<!--section=faq-->\n<dl>\n<dt id=\"does%20it%20need%20woocommerce%3F\"><h3>Does it need WooCommerce?<\/h3><\/dt>\n<dd><p>Yes. Plans are sold as ordinary WooCommerce products, so WooCommerce must be active. A plan without a product is a free plan for every logged-in user.<\/p><\/dd>\n<dt id=\"does%20it%20work%20with%20woocommerce%20subscriptions%3F\"><h3>Does it work with WooCommerce Subscriptions?<\/h3><\/dt>\n<dd><p>Yes, optionally. When WooCommerce Subscriptions is installed, an active subscription to a plan product keeps the plan active. Without it, plans are fixed-duration passes.<\/p><\/dd>\n<dt id=\"is%20it%20compatible%20with%20hpos%3F\"><h3>Is it compatible with HPOS?<\/h3><\/dt>\n<dd><p>Yes. It declares compatibility with WooCommerce custom order tables and the Cart and Checkout blocks.<\/p><\/dd>\n<dt id=\"does%20it%20contact%20any%20external%20service%3F\"><h3>Does it contact any external service?<\/h3><\/dt>\n<dd><p>No. Everything runs on your own site.<\/p><\/dd>\n\n<\/dl>\n\n<!--section=changelog-->\n<h4>1.0.0<\/h4>\n\n<ul>\n<li>Initial release.<\/li>\n<\/ul>","raw_excerpt":"Free articles, then a paywall: sell metered reading passes for your posts with WooCommerce products.","jetpack_sharing_enabled":true,"_links":{"self":[{"href":"https:\/\/wordpress.org\/plugins\/wp-json\/wp\/v2\/plugin\/387877","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/wordpress.org\/plugins\/wp-json\/wp\/v2\/plugin"}],"about":[{"href":"https:\/\/wordpress.org\/plugins\/wp-json\/wp\/v2\/types\/plugin"}],"replies":[{"embeddable":true,"href":"https:\/\/wordpress.org\/plugins\/wp-json\/wp\/v2\/comments?post=387877"}],"author":[{"embeddable":true,"href":"https:\/\/wordpress.org\/plugins\/wp-json\/wporg\/v1\/users\/webangon"}],"wp:attachment":[{"href":"https:\/\/wordpress.org\/plugins\/wp-json\/wp\/v2\/media?parent=387877"}],"wp:term":[{"taxonomy":"plugin_section","embeddable":true,"href":"https:\/\/wordpress.org\/plugins\/wp-json\/wp\/v2\/plugin_section?post=387877"},{"taxonomy":"plugin_tags","embeddable":true,"href":"https:\/\/wordpress.org\/plugins\/wp-json\/wp\/v2\/plugin_tags?post=387877"},{"taxonomy":"plugin_category","embeddable":true,"href":"https:\/\/wordpress.org\/plugins\/wp-json\/wp\/v2\/plugin_category?post=387877"},{"taxonomy":"plugin_contributors","embeddable":true,"href":"https:\/\/wordpress.org\/plugins\/wp-json\/wp\/v2\/plugin_contributors?post=387877"},{"taxonomy":"plugin_business_model","embeddable":true,"href":"https:\/\/wordpress.org\/plugins\/wp-json\/wp\/v2\/plugin_business_model?post=387877"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}