Make sure your plugin works with the right WordPress version — automatically.
Scans your WordPress plugin to detect all used core symbols and validates them against their official @since versions for accurate compatibility checks.
Ever struggled to define the correct minimum WordPress version for your plugin?
Worried about accidentally using functions or APIs that don’t exist in declared minimum WP version?
wp-since helps you avoid those headaches by automatically analyzing your plugin’s code and checking compatibility against real WordPress versions.
- 🧠 Scans your plugin for used:
- Functions
- Classes
- Class methods (static and instance)
- Action and filter hooks
- 📖 Reads the declared Requires at least: version from your
readme.txt - 🗂️ Compares those symbols with a version map built from WordPress core using
@sincetags - 🚨 Reports any used symbols that require a newer WP version than what’s declared
Let’s say your plugin uses register_setting() (introduced in WP 5.5), but your readme.txt declares compatibility with WordPress 5.4:
🔍 Scanning plugin files...
✅ Found readme.txt → Minimum version declared: 5.4
🚨 Compatibility issues found:
┌──────────────────────┬──────────────────┐
│ Symbol │ Introduced in WP │
├──────────────────────┼──────────────────┤
│ register_setting │ 5.5.0 │
└──────────────────────┴──────────────────┘
📌 Suggested version required: 5.5.0Now imagine your code is fully aligned with your declared version:
🔍 Scanning plugin files...
✅ Found readme.txt → Minimum version declared: 5.5
🎉 No compatibility issues found!Simple. Powerful. Automatic.
Because your plugin deserves reliable compatibility.
Requirements
- PHP 7.4+
- Composer
🛠️ Install via Composer (recommended)
composer require --dev eduardovillao/wp-since./vendor/bin/wp-since check ./path-to-your-pluginBy default, wp-since scans all .php files in your plugin directory.
But what about files that don’t make it into your final plugin zip — like tests or dev tools? No worries — wp-since respects your ignore rules.
Supported ignore sources:
.distignore.gitattributeswithexport-ignore
If any of those files are present, wp-since will automatically ignore the listed files or folders during analysis — just like svn export or plugin deployment.
Example: .gitattributes
/tests/ export-ignore
/tools/debug.php export-ignoreExample: .distignore
/tests
/tools/debug.phpThese paths will be excluded from compatibility checks. This helps avoid false positives caused by test or development files.
You can ignore specific lines from the scan by adding a special inline comment.
This is useful when you conditionally use a newer function but know it’s safe, like:
if (function_exists('wp_some_new_func')) {
return wp_some_new_func(); // @wp-since ignore
}Only inline comments on the same line will be considered — comments above the line won’t trigger ignores.
- GitHub Action integration
- HTML/Markdown reports
- Export for CI/CD pipelines
MIT © Eduardo Villão
Use freely, contribute gladly.