skills/bonny/wordpress-simple-history/wordpress-org-compliance

wordpress-org-compliance

SKILL.md

WordPress.org Plugin Compliance Guidelines

Ensures WordPress.org compliance for plugin directory guidelines, particularly around free vs premium code and upselling practices.

When to Use This Skill

Trigger scenarios:

  • Adding new features that might have premium versions
  • Implementing upselling or upgrade prompts
  • Creating "teasers" for premium features
  • Reviewing code for WordPress.org compliance
  • Preparing plugin updates for WordPress.org submission
  • Adding license key validation or premium checks

Core Rule: No Locked Code

WordPress.org Golden Rule: No premium/locked code in wp.org plugins. All hosted code must be free and fully functional.

This means:

  • Every feature in the free plugin must work completely without a license key
  • No "trial periods" or usage limits
  • No features that require payment to unlock
  • No functionality restricted behind a paywall

Quick Reference

❌ NOT Allowed

  • Trial periods or time limits
  • Usage quotas or artificial limits
  • License keys for local features
  • Disabled features requiring payment
  • Crippled functionality in free version
  • Intrusive nag screens

✅ Allowed

  • Informational upselling (non-intrusive)
  • Separate premium plugin from your site
  • Feature detection (not restriction)
  • External SaaS integrations
  • Comparison tables
  • Premium feature teasers
  • Disabled form teasers for premium-only features (high conversion)

Key Patterns

❌ Wrong: Feature Restriction

// Blocks functionality without license
if ( ! $this->is_premium() ) {
    echo 'Premium required';
    return;
}

✅ Correct: Feature Detection

// Free version works fully
$this->show_basic_export();

// Premium can enhance
if ( $this->has_premium_addon() ) {
    do_action( 'sh_premium_export_options' );
}

❌ Wrong: Artificial Limits

// Artificially limits free version
$limit = $this->is_premium() ? 10000 : 100;

✅ Correct: No Artificial Limits

// Free version has reasonable limit
$limit = 10000;

// Premium can extend
$limit = apply_filters( 'sh_event_limit', $limit );

Recommended Freemium Model

Free Plugin (WordPress.org)

  • Core functionality fully working
  • Basic features complete
  • All UI features accessible
  • No artificial limitations

Premium Plugin (Your Site)

  • Extended features (not unlocked basics)
  • Premium integrations
  • Advanced functionality
  • Priority support

Installation Options

Add-on Style (Recommended):

  • Free: Standalone and functional
  • Premium: Installs alongside, extends free
  • Both active together

Replacement Style:

  • Free: Standalone and functional
  • Premium: Replaces free with more features
  • User deactivates free when installing premium

Upselling Best Practices

✅ Good Upselling

// Subtle, informational
function render_premium_note() {
    ?>
    <p class="sh-premium-note">
        <small>
            💡 Premium: Export to JSON, XML, or PDF formats.
            <a href="https://example.com/premium/">Learn more</a>
        </small>
    </p>
    <?php
}

✅ High-Converting: Disabled Form Pattern

For premium-only features, show a disabled form that previews the UI:

// Shows what premium feature looks like (greyed out, non-functional)
// CTA box remains clickable - converts 3-4x better than info box
<div class="sh-PremiumTeaser-disabledForm" style="opacity: 0.6; pointer-events: none;">
    <table class="form-table">
        <tr><th>Setting</th><td><select disabled>...</select></td></tr>
    </table>
    <div style="pointer-events: auto; opacity: 1;">
        <?php echo Helpers::get_premium_feature_teaser(...); ?>
    </div>
</div>

See examples.md for full implementation details.

❌ Bad Upselling

// Blocks functionality
if ( ! $this->is_premium() ) {
    echo '<div class="error">Upgrade required!</div>';
    return;
}

Compliance Checklist

Before submitting updates to WordPress.org:

  • All features work without license key
  • No trial periods or time limits
  • No usage quotas or restrictions
  • No features disabled for free users
  • Upselling is informational, not obstructive
  • Premium features are separate addon
  • No "locked" UI elements
  • Free version provides real value

Code Review Questions

For each feature, ask yourself:

  1. Does it work completely without premium?
  2. Am I checking for a license key to enable functionality?
  3. Would a free user be frustrated by this?
  4. Is the upselling helpful or annoying?
  5. Does the free version provide real value?

Common Violations

Violation 1: Nag Screens

❌ Don't show constant popups asking users to upgrade

Violation 2: Crippled Features

❌ Don't make features "work badly" in free to force upgrades

Violation 3: Expired Trials

❌ Don't stop working after X days

Violation 4: Usage Limits

❌ Don't impose artificial quotas

Violation 5: License Validation for Local Features

❌ Don't require license key for features that run locally

Detailed Information

For comprehensive examples and testing procedures:

  • See examples.md for detailed code examples of allowed and forbidden patterns
  • See testing.md for complete testing procedures, code review checklists, and pre-submission verification

Resources

Summary

The Simple Rule: If it's in the WordPress.org version, it must work completely without payment.

The Philosophy: Win users over with quality, not restrictions. Make them want premium, not need it.

The Test: Would you be happy using the free version? If not, you're doing freemium wrong.

Weekly Installs
13
GitHub Stars
315
First Seen
Jan 23, 2026
Installed on
claude-code11
codex8
opencode8
cursor8
antigravity7
gemini-cli7