{"id":396767,"date":"2026-11-06T06:22:31","date_gmt":"2026-11-06T06:22:31","guid":{"rendered":"https:\/\/wordpress.org\/plugins\/codem-rewards-engine\/"},"modified":"2026-11-06T06:22:22","modified_gmt":"2026-11-06T06:22:22","slug":"codem-rewards-engine","status":"publish","type":"plugin","link":"https:\/\/wordpress.org\/plugins\/codem-rewards-engine\/","author":23590106,"comment_status":"closed","ping_status":"closed","template":"","meta":{"version":"1.0.0","stable_tag":"1.0.0","tested":"7.1.4","requires":"6.0","requires_php":"7.4","requires_plugins":null,"header_name":"Codem Rewards Engine","header_author":"Codem","header_description":"Automated WooCommerce customer tiers, spend rewards, and birthday coupon scheduler.","assets_banners_color":"627991","last_updated":"2026-11-06 06:22:22","external_support_url":"","external_repository_url":"","donate_link":"","header_plugin_uri":"https:\/\/www.codem.com\/products\/woocommerce\/codem-rewards-engine","header_author_uri":"https:\/\/www.codem.com","rating":0,"author_block_rating":0,"active_installs":0,"downloads":150,"num_ratings":0,"support_threads":0,"support_threads_resolved":0,"author_block_count":0,"sections":["description","installation","faq","changelog"],"tags":{"1.0.0":{"tag":"1.0.0","author":"codemdotcom","date":"2026-11-06 06:22:22","revision":3787282}},"upgrade_notice":[],"ratings":[],"assets_icons":{"icon-128x128.png":{"filename":"icon-128x128.png","revision":3787282,"resolution":"128x128","location":"assets","locale":"","width":128,"height":128},"icon-256x256.png":{"filename":"icon-256x256.png","revision":3787282,"resolution":"256x256","location":"assets","locale":"","width":256,"height":256}},"assets_banners":{"banner-772x250.png":{"filename":"banner-772x250.png","revision":3787282,"resolution":"772x250","location":"assets","locale":"","width":772,"height":257}},"assets_blueprints":{},"all_blocks":[],"tagged_versions":["1.0.0"],"block_files":[],"assets_screenshots":{"screenshot-1.png":{"filename":"screenshot-1.png","revision":3787282,"resolution":"1","location":"assets","locale":"","width":2824,"height":1480},"screenshot-10.png":{"filename":"screenshot-10.png","revision":3787282,"resolution":"10","location":"assets","locale":"","width":2020,"height":1356},"screenshot-11.png":{"filename":"screenshot-11.png","revision":3787282,"resolution":"11","location":"assets","locale":"","width":2816,"height":1484},"screenshot-12.png":{"filename":"screenshot-12.png","revision":3787282,"resolution":"12","location":"assets","locale":"","width":2824,"height":1482},"screenshot-13.png":{"filename":"screenshot-13.png","revision":3787282,"resolution":"13","location":"assets","locale":"","width":2812,"height":1480},"screenshot-2.png":{"filename":"screenshot-2.png","revision":3787282,"resolution":"2","location":"assets","locale":"","width":2820,"height":1482},"screenshot-3.png":{"filename":"screenshot-3.png","revision":3787282,"resolution":"3","location":"assets","locale":"","width":2816,"height":1456},"screenshot-4.png":{"filename":"screenshot-4.png","revision":3787282,"resolution":"4","location":"assets","locale":"","width":2816,"height":1484},"screenshot-5.png":{"filename":"screenshot-5.png","revision":3787282,"resolution":"5","location":"assets","locale":"","width":2824,"height":1476},"screenshot-6.png":{"filename":"screenshot-6.png","revision":3787282,"resolution":"6","location":"assets","locale":"","width":2818,"height":1484},"screenshot-7.png":{"filename":"screenshot-7.png","revision":3787282,"resolution":"7","location":"assets","locale":"","width":2808,"height":1486},"screenshot-8.png":{"filename":"screenshot-8.png","revision":3787282,"resolution":"8","location":"assets","locale":"","width":2818,"height":1484},"screenshot-9.png":{"filename":"screenshot-9.png","revision":3787282,"resolution":"9","location":"assets","locale":"","width":2820,"height":1482}},"screenshots":{"1":"Customer Tiers screen for spend ranges, slugs, and active or inactive status.","2":"Tier Discounts screen with one automatic discount rule per tier.","3":"Discount Exclusions screen for products, categories, and whole tiers.","4":"Tier Access Restrictions screen for the guest tier and the three storefront notices.","5":"Product and category access rules, including Hide, Disable Add to Cart, and Block on Add to Cart.","6":"Campaign list with schedule, eligible tiers, discount, scope, top bar text, and status.","7":"Campaign editor for dates, eligible tiers, and the discount amount.","8":"Top bar style settings, including colors, font, banner text, and a live preview.","9":"Campaign scope and priority, including draft products and the option to return them to draft.","10":"Birthday Coupons screen with independent rules, validity, and tier targeting.","11":"Global Settings for taxes, shipping, and tier downgrades.","12":"Audit Logs screen with date filters, CSV export, and field-level changes.","13":"Built-in FAQ grouped by module."}},"plugin_section":[],"plugin_tags":[7644,6744,3377,51040,286],"plugin_category":[45],"plugin_contributors":[291056],"plugin_business_model":[],"class_list":["post-396767","plugin","type-plugin","status-publish","hentry","plugin_tags-campaigns","plugin_tags-discounts","plugin_tags-loyalty","plugin_tags-tiers","plugin_tags-woocommerce","plugin_category-ecommerce","plugin_contributors-codemdotcom","plugin_committers-codemdotcom"],"banners":{"banner":"https:\/\/ps.w.org\/codem-rewards-engine\/assets\/banner-772x250.png?rev=3787282","banner_2x":false,"banner_rtl":false,"banner_2x_rtl":false},"icons":{"svg":false,"icon":"https:\/\/ps.w.org\/codem-rewards-engine\/assets\/icon-128x128.png?rev=3787282","icon_2x":"https:\/\/ps.w.org\/codem-rewards-engine\/assets\/icon-256x256.png?rev=3787282","generated":false},"screenshots":[{"src":"https:\/\/ps.w.org\/codem-rewards-engine\/assets\/screenshot-1.png?rev=3787282","caption":"Customer Tiers screen for spend ranges, slugs, and active or inactive status."},{"src":"https:\/\/ps.w.org\/codem-rewards-engine\/assets\/screenshot-2.png?rev=3787282","caption":"Tier Discounts screen with one automatic discount rule per tier."},{"src":"https:\/\/ps.w.org\/codem-rewards-engine\/assets\/screenshot-3.png?rev=3787282","caption":"Discount Exclusions screen for products, categories, and whole tiers."},{"src":"https:\/\/ps.w.org\/codem-rewards-engine\/assets\/screenshot-4.png?rev=3787282","caption":"Tier Access Restrictions screen for the guest tier and the three storefront notices."},{"src":"https:\/\/ps.w.org\/codem-rewards-engine\/assets\/screenshot-5.png?rev=3787282","caption":"Product and category access rules, including Hide, Disable Add to Cart, and Block on Add to Cart."},{"src":"https:\/\/ps.w.org\/codem-rewards-engine\/assets\/screenshot-6.png?rev=3787282","caption":"Campaign list with schedule, eligible tiers, discount, scope, top bar text, and status."},{"src":"https:\/\/ps.w.org\/codem-rewards-engine\/assets\/screenshot-7.png?rev=3787282","caption":"Campaign editor for dates, eligible tiers, and the discount amount."},{"src":"https:\/\/ps.w.org\/codem-rewards-engine\/assets\/screenshot-8.png?rev=3787282","caption":"Top bar style settings, including colors, font, banner text, and a live preview."},{"src":"https:\/\/ps.w.org\/codem-rewards-engine\/assets\/screenshot-9.png?rev=3787282","caption":"Campaign scope and priority, including draft products and the option to return them to draft."},{"src":"https:\/\/ps.w.org\/codem-rewards-engine\/assets\/screenshot-10.png?rev=3787282","caption":"Birthday Coupons screen with independent rules, validity, and tier targeting."},{"src":"https:\/\/ps.w.org\/codem-rewards-engine\/assets\/screenshot-11.png?rev=3787282","caption":"Global Settings for taxes, shipping, and tier downgrades."},{"src":"https:\/\/ps.w.org\/codem-rewards-engine\/assets\/screenshot-12.png?rev=3787282","caption":"Audit Logs screen with date filters, CSV export, and field-level changes."},{"src":"https:\/\/ps.w.org\/codem-rewards-engine\/assets\/screenshot-13.png?rev=3787282","caption":"Built-in FAQ grouped by module."}],"raw_content":"<!--section=description-->\n<p>Codem Rewards Engine provides a centralized WooCommerce admin module for:<\/p>\n\n<ul>\n<li>Customer tier automation from lifetime spend<\/li>\n<li>Tier and campaign discounts<\/li>\n<li>Product\/category discount exclusions<\/li>\n<li>Tier-based purchase restrictions<\/li>\n<li>Birthday coupon automation<\/li>\n<li>Audit logging for configuration changes<\/li>\n<\/ul>\n\n<p>Admin path:\nWooCommerce -&gt; Codem Rewards Engine<\/p>\n\n<h3>Feature Summary<\/h3>\n\n<h4>Dashboard<\/h4>\n\n<ul>\n<li>Overview cards for Total Tiers and Total Campaigns<\/li>\n<li>Tier Distribution bar chart (customer count per tier)<\/li>\n<li>Campaign Overview pie chart by status (Live \/ Scheduled \/ Ended)<\/li>\n<li>Click pie slices or use the status filter to filter the campaign table<\/li>\n<li>Empty state when no campaigns exist<\/li>\n<\/ul>\n\n<h4>Customer Tiers<\/h4>\n\n<ul>\n<li>Tier table with Name, Slug, Min Spend, Max Spend, Status<\/li>\n<li>Active\/Inactive support<\/li>\n<li>Guest tier default support<\/li>\n<li>New-user tier initialization<\/li>\n<li>Manual single-customer and all-customer recalculation tools<\/li>\n<li>Tier status change guard (inactive warning\/confirmation)<\/li>\n<\/ul>\n\n<h4>Lifetime Spend Logic<\/h4>\n\n<ul>\n<li>Completed orders only<\/li>\n<li>Refunds deducted<\/li>\n<li>Include taxes (optional)<\/li>\n<li>Include shipping and shipping tax (optional)<\/li>\n<li>Allow downgrade toggle<\/li>\n<\/ul>\n\n<h4>Tier Discounts<\/h4>\n\n<ul>\n<li>One discount rule per tier<\/li>\n<li>Percentage or Fixed amount<\/li>\n<li>Rule status per tier (active\/inactive)<\/li>\n<li>Auto-applied at cart\/checkout with no coupon<\/li>\n<li>Expandable per-product discount breakdown on the Cart\/Checkout blocks (caret next to the discount line)<\/li>\n<\/ul>\n\n<h4>Discount Exclusions<\/h4>\n\n<ul>\n<li>Exclude specific products from tier discounts<\/li>\n<li>Exclude specific categories from tier discounts<\/li>\n<li>Exclude entire tiers from receiving tier discounts<\/li>\n<li>Exclusions affect discounting only, not product visibility\/purchase<\/li>\n<\/ul>\n\n<h4>Tier Access Restrictions<\/h4>\n\n<ul>\n<li>Product-level rules and category-level rules<\/li>\n<li>Product-level overrides category-level<\/li>\n<li>Allowed tier selection per rule<\/li>\n<li>Unauthorized behavior modes:\n\n<ul>\n<li>Hide Product<\/li>\n<li>Disable Add to Cart<\/li>\n<li>Block on Add to Cart<\/li>\n<\/ul><\/li>\n<li>Configurable notice text for each mode<\/li>\n<li>Guest tier mapping support<\/li>\n<li>Server-side validation and cart enforcement<\/li>\n<li>Category archive restriction notices<\/li>\n<li>Catalog query filtering so result counts match visible products<\/li>\n<\/ul>\n\n<h4>Campaigns<\/h4>\n\n<ul>\n<li>Dedicated Campaigns tab with list + create\/edit flow<\/li>\n<li>Start date\/time + end date\/time with timezone per campaign<\/li>\n<li>Tier targeting (optional; empty means all tiers)<\/li>\n<li>Campaign discount type\/value<\/li>\n<li>Scope toggles:\n\n<ul>\n<li>Enable product categories + category picker<\/li>\n<li>Enable products + product picker<\/li>\n<\/ul><\/li>\n<li>Discount priority mode:\n\n<ul>\n<li>Auto Apply the one which is Higher Discount<\/li>\n<li>Multiple Discount<\/li>\n<\/ul><\/li>\n<li>Top bar style configuration per campaign:\n\n<ul>\n<li>Background color<\/li>\n<li>Text color<\/li>\n<li>Font family (Google Fonts whitelist)<\/li>\n<li>Font size (px)<\/li>\n<li>Banner text (max 100 characters)<\/li>\n<li>Live banner preview in the campaign editor<\/li>\n<\/ul><\/li>\n<li>Rotating top bar across active campaigns (each message keeps its own style)<\/li>\n<li>Campaign status badges in table:\n\n<ul>\n<li>Pending<\/li>\n<li>Scheduled<\/li>\n<li>Live<\/li>\n<li>Ended<\/li>\n<\/ul><\/li>\n<li>Temporary campaign category (created when campaign becomes live)<\/li>\n<li>Optional draft product handling:\n\n<ul>\n<li>Show <code>(In-Draft)<\/code> labels in campaign product picker<\/li>\n<li>Auto-publish selected draft products at campaign start<\/li>\n<li>Optional \"send to draft again after campaign is ended\"<\/li>\n<\/ul><\/li>\n<\/ul>\n\n<h4>Birthday Coupons<\/h4>\n\n<ul>\n<li>Birthday field in My Account and WP user profile<\/li>\n<li>Configurable discount type\/value\/validity\/applicable tiers\/status<\/li>\n<li>One-per-user-per-year guard<\/li>\n<li>Auto-generated customer coupon and email send<\/li>\n<li>WooCommerce email integration:\n\n<ul>\n<li>WooCommerce -&gt; Settings -&gt; Emails -&gt; Birthday Coupon<\/li>\n<li>Editable subject\/heading\/content\/additional content<\/li>\n<li>Placeholder support in email body:<\/li>\n<li><code>{customer_name}<\/code><\/li>\n<li><code>{coupon_code}<\/code><\/li>\n<li><code>{validity_days}<\/code><\/li>\n<li><code>{site_title}<\/code><\/li>\n<\/ul><\/li>\n<\/ul>\n\n<h4>Audit Logs<\/h4>\n\n<ul>\n<li>Tracks settings\/actions with field-level old\/new values<\/li>\n<li>Filter by date range (default current month)<\/li>\n<li>Delete logs in selected filter range<\/li>\n<li>Export CSV in selected filter range<\/li>\n<li>Date\/time formatting follows WordPress admin format settings<\/li>\n<\/ul>\n\n<h4>Admin Experience<\/h4>\n\n<ul>\n<li>Modern compact tabbed UI<\/li>\n<li>Woo enhanced searchable selectors<\/li>\n<li>Dynamic add\/remove rows for access rules<\/li>\n<li>FAQ tab grouped by module<\/li>\n<\/ul>\n\n<h4>Capabilities and Compatibility<\/h4>\n\n<ul>\n<li>Access capability: <code>manage_woocommerce<\/code><\/li>\n<li>WooCommerce dependency declared in plugin headers<\/li>\n<li>HPOS compatibility declaration (<code>custom_order_tables<\/code>)<\/li>\n<li>Cart\/Checkout blocks compatibility declaration (<code>cart_checkout_blocks<\/code>)<\/li>\n<\/ul>\n\n<h3>Admin Tabs<\/h3>\n\n<ul>\n<li>Customer Tiers<\/li>\n<li>Tier Discounts<\/li>\n<li>Discount Exclusions<\/li>\n<li>Tier Access Restrictions<\/li>\n<li>Campaigns<\/li>\n<li>Birthday Coupons<\/li>\n<li>Global Settings<\/li>\n<li>Audit Logs<\/li>\n<li>FAQ<\/li>\n<\/ul>\n\n<h3>Cron Events<\/h3>\n\n<p>Hooks used by plugin:<\/p>\n\n<ul>\n<li><code>wcutp_campaign_sync_five_minutes<\/code> (campaign lifecycle sync)<\/li>\n<li><code>wcutp_birthday_coupon_daily<\/code> (birthday coupon processing)<\/li>\n<\/ul>\n\n<p>Manual trigger examples (WP-CLI):<\/p>\n\n<ul>\n<li><code>wp cron event run wcutp_campaign_sync_five_minutes<\/code><\/li>\n<li><code>wp cron event run wcutp_birthday_coupon_daily<\/code><\/li>\n<\/ul>\n\n<h3>External services<\/h3>\n\n<p>Campaign announcement bars, and the font preview on the Campaigns screen, load typefaces from Google Fonts (https:\/\/fonts.googleapis.com). The browser requests a stylesheet from Google. That request includes the visitor or administrator IP address and browser User-Agent. Google's privacy policy is at https:\/\/policies.google.com\/privacy.<\/p>\n\n<p>The Dashboard charts use Chart.js 4.6.1. The file shipped in this plugin, assets\/chartjs\/chart.umd.min.js, is the minified build and is licensed under the MIT license (assets\/chartjs\/LICENSE.txt). It is not loaded from an external server. Source and releases: https:\/\/github.com\/chartjs\/Chart.js\/releases\/tag\/v4.6.1<\/p>\n\n<h3>Recommended Setup Order<\/h3>\n\n<ol>\n<li>Customer Tiers<\/li>\n<li>Global Settings<\/li>\n<li>Recalculate Lifetime Spend<\/li>\n<li>Tier Discounts<\/li>\n<li>Discount Exclusions<\/li>\n<li>Tier Access Restrictions<\/li>\n<li>Campaigns<\/li>\n<li>Birthday Coupons<\/li>\n<li>Validate using guest + tiered customer test accounts<\/li>\n<\/ol>\n\n<h3>Deactivation and Cleanup<\/h3>\n\n<p>On plugin deactivation, an admin prompt asks whether to clean plugin data.<\/p>\n\n<ul>\n<li>Confirm cleanup: removes plugin-related data<\/li>\n<li>Cancel cleanup: keeps data for reactivation<\/li>\n<\/ul>\n\n<!--section=installation-->\n<ol>\n<li>Upload plugin to <code>\/wp-content\/plugins\/codem-rewards-engine<\/code> or install via Plugins screen.<\/li>\n<li>Activate plugin.<\/li>\n<li>Ensure WooCommerce is active.<\/li>\n<li>Open WooCommerce -&gt; Codem Rewards Engine.<\/li>\n<li>Configure tiers and global settings first.<\/li>\n<li>Run recalculation for existing stores.<\/li>\n<\/ol>\n\n<!--section=faq-->\n<dl>\n<dt id=\"how%20exactly%20must%20an%20admin%20configure%20customer%20tiers%20for%20flawless%20operation%3F\"><h3>How exactly must an admin configure Customer Tiers for flawless operation?<\/h3><\/dt>\n<dd><ol>\n<li>Lowest tier (Guest\/Bronze) must start at Minimum Spend = 0.<\/li>\n<li>Use continuous, non-overlapping integer ranges (if lower Max = N, next Min must be &gt;= N + 1).<\/li>\n<li>Intermediate tiers must have a numerical Maximum Spend; only the single highest tier leaves Maximum Spend blank (unlimited).<\/li>\n<li>All tiers must have unique Names and Slugs.<\/li>\n<li>Run \"Recalculate All Customers\" whenever you edit tier ranges or toggle tier status.<\/li>\n<\/ol><\/dd>\n<dt id=\"what%20happens%20if%20i%20mark%20a%20tier%20as%20inactive%3F\"><h3>What happens if I mark a tier as Inactive?<\/h3><\/dt>\n<dd><p>Inactive tiers are ignored by runtime logic. Existing users with that tier are not immediately reassigned; run \"Recalculate All Customers\" to remap them.<\/p><\/dd>\n<dt id=\"why%20is%20tier%20discount%20not%20applying%3F\"><h3>Why is tier discount not applying?<\/h3><\/dt>\n<dd><p>Check: tier status, discount rule status\/value, and discount exclusions (products\/categories\/tiers).<\/p><\/dd>\n<dt id=\"is%20block%20on%20add%20to%20cart%20enforced%20server-side%3F\"><h3>Is Block on Add to Cart enforced server-side?<\/h3><\/dt>\n<dd><p>Yes. Add-to-cart validation blocks unauthorized requests and cart checks remove unauthorized items.<\/p><\/dd>\n<dt id=\"why%20does%20restricted%20category%20show%20no%20products%3F\"><h3>Why does restricted category show no products?<\/h3><\/dt>\n<dd><p>Your current tier is unauthorized for that category rule. The plugin shows restriction notice and filters catalog query results.<\/p><\/dd>\n<dt id=\"how%20do%20campaign%20discounts%20interact%20with%20tier%20discounts%3F\"><h3>How do campaign discounts interact with tier discounts?<\/h3><\/dt>\n<dd><p>Campaign discounts are evaluated separately and then resolved using campaign priority mode (higher-only or multiple).<\/p><\/dd>\n<dt id=\"when%20is%20temporary%20campaign%20category%20created%3F\"><h3>When is temporary campaign category created?<\/h3><\/dt>\n<dd><p>It is created by campaign lifecycle sync when campaign becomes live (if product scope is enabled and products are selected).<\/p><\/dd>\n<dt id=\"how%20can%20i%20track%20who%20changed%20plugin%20settings%3F\"><h3>How can I track who changed plugin settings?<\/h3><\/dt>\n<dd><p>Use Audit Logs tab. It records user, module, action, field, old value, and new value.<\/p><\/dd>\n<dt id=\"can%20i%20customize%20birthday%20coupon%20email%20content%3F\"><h3>Can I customize birthday coupon email content?<\/h3><\/dt>\n<dd><p>Yes. Use WooCommerce email settings for \"Birthday Coupon\" and placeholders in email body.<\/p><\/dd>\n\n<\/dl>\n\n<!--section=changelog-->\n<h4>1.0.0<\/h4>\n\n<ul>\n<li>Initial public release of Customer Tiers, Tier Discounts, Discount Exclusions, Tier Access Restrictions, Campaigns, Birthday Coupons, Global Settings, Audit Logs, and FAQ.<\/li>\n<li>Added an expandable per-product discount breakdown to the Tier Discount \/ Campaign Discount lines on the Cart and Checkout blocks.<\/li>\n<li>Expanded campaign Top Bar Message into a full Top Bar Style Configuration (background\/text color, font family, font size, banner text with live preview), with per-message style rotation on the storefront.<\/li>\n<li>Added a Dashboard tab with Overview cards, Tier Distribution chart, and Campaign Overview pie\/table filter.<\/li>\n<li>Moved birthday coupon delivery to reliable Action Scheduler batches, sending on the first day of the customer's birthday month with duplicate locking and failure cleanup.<\/li>\n<li>Enqueued admin and storefront CSS\/JS instead of printing script and style tags.<\/li>\n<li>Upgraded the bundled Chart.js library to 4.6.1.<\/li>\n<li>Stored audit logs in a protected uploads\/codem-rewards-engine directory.<\/li>\n<\/ul>","raw_excerpt":"Advanced WooCommerce customer tiers, tier discounts, campaign discounts, access restrictions, birthday coupons, and full audit logging.","jetpack_sharing_enabled":true,"_links":{"self":[{"href":"https:\/\/wordpress.org\/plugins\/wp-json\/wp\/v2\/plugin\/396767","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=396767"}],"author":[{"embeddable":true,"href":"https:\/\/wordpress.org\/plugins\/wp-json\/wporg\/v1\/users\/codemdotcom"}],"wp:attachment":[{"href":"https:\/\/wordpress.org\/plugins\/wp-json\/wp\/v2\/media?parent=396767"}],"wp:term":[{"taxonomy":"plugin_section","embeddable":true,"href":"https:\/\/wordpress.org\/plugins\/wp-json\/wp\/v2\/plugin_section?post=396767"},{"taxonomy":"plugin_tags","embeddable":true,"href":"https:\/\/wordpress.org\/plugins\/wp-json\/wp\/v2\/plugin_tags?post=396767"},{"taxonomy":"plugin_category","embeddable":true,"href":"https:\/\/wordpress.org\/plugins\/wp-json\/wp\/v2\/plugin_category?post=396767"},{"taxonomy":"plugin_contributors","embeddable":true,"href":"https:\/\/wordpress.org\/plugins\/wp-json\/wp\/v2\/plugin_contributors?post=396767"},{"taxonomy":"plugin_business_model","embeddable":true,"href":"https:\/\/wordpress.org\/plugins\/wp-json\/wp\/v2\/plugin_business_model?post=396767"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}