WP-PageNavi
Slug: wp-pagenavi · Lester Chan · 500,000+
Overall Score
Excellent quality and security
What this score means
Scores are calculated on a 100-point scale by analysing six weighted categories: Security, WP.org Readiness, Performance, Code Quality, Accessibility, and Vulnerabilities.
-
Excellent The plugin follows best practices across every measured category. It is well-maintained, low-risk, and recommended for production use.
-
Good Strong overall quality with minor areas for improvement. Generally safe to use on most sites.
-
Needs Review Some areas of concern detected. Review the full issues report and weigh the risks before installing on production.
-
High Risk Significant quality or security problems found. Exercise caution — check the details carefully before using this plugin.
- Wordfence: May 22, 2026 12:34 am (51 minutes ago)
Score Breakdown
Why this score?
Top deductions are based on 1 affected rules, reducing this category by 16 total points.
| Rule | Hits | Impact | Share |
|---|---|---|---|
| Security issue: Warning | 4 | -16 | 100% |
Why this score?
Top deductions are based on 4 affected rules, reducing this category by 14 total points.
| Rule | Hits | Impact | Share |
|---|---|---|---|
| Last update is over one year old | 1 | -5 | 35.7% |
| Repo issue: Notice | 3 | -3 | 21.4% |
| Repo issue: Warning | 1 | -3 | 21.4% |
Plus 1 additional rules with smaller impact.
Show all rules (1 more)
| Rule | Hits | Impact | Share |
|---|---|---|---|
| Tested up to version is behind current WordPress | 1 | -3 | 21.4% |
Why this score?
Top deductions are based on 1 affected rules, reducing this category by 3 total points.
| Rule | Hits | Impact | Share |
|---|---|---|---|
| Performance issue: Warning | 1 | -3 | 100% |
Why this score?
Top deductions are based on 0 affected rules, reducing this category by 0 total points.
No deductions were applied for this category in the latest score run.
Why this score?
Top deductions are based on 0 affected rules, reducing this category by 0 total points.
No deductions were applied for this category in the latest score run.
Why this score?
Top deductions are based on 0 affected rules, reducing this category by 0 total points.
No deductions were applied for this category in the latest score run.
Plugin Details
- Version: 2.94.5
- Active Installs: 500,000+
- Last Updated: 2024-12-19 01:02:00
- Tested up to: 6.7.5
- Requires PHP:
- Rating: 4.7/5 (149 ratings)
- Support: 0/1 resolved (0%)
- View on WordPress.org
- Download Plugin
Scan Summary
- Errors: 0
- Warnings: 6
- Notices: 3
- Last Scanned: 2026-05-20 15:02:54
What Changed Since Last Scan
New Issues
No items in this category.
Resolved Issues
No items in this category.
Worsened Issues
No items in this category.
Detected Issues
| Severity | Category | Message | File | Fix Guidance |
|---|---|---|---|---|
| WARNING | REPO | Plugin metadata is missing a declared minimum PHP version. |
Quick
Add a "Requires PHP" value in the plugin header and readme metadata.
Moderate
Validate minimum PHP compatibility across supported environments and release notes.
Advanced
Automate compatibility matrix tests in CI for all declared PHP versions.
|
|
| WARNING | SECURITY | Declared minimum WordPress 4.6 is very outdated and lacks modern security APIs. |
Quick
Raise minimum WordPress version to a modern supported release.
Moderate
Replace deprecated APIs and confirm compatibility across current WordPress branches.
Advanced
Run multi-version WordPress integration tests in CI and block unsupported API usage.
|
|
| NOTICE | REPO | Main plugin file does not declare a Domain Path header. | wp-pagenavi.php |
Quick
Add a Domain Path header if language files are stored in a languages directory.
Moderate
Apply the same remediation pattern across repo findings and re-scan to confirm notice issues drop.
Advanced
Add automated linting, CI checks, and team review guidance so this issue class is prevented in future releases.
|
| WARNING | SECURITY | Main plugin file does not appear to guard direct access with an ABSPATH check. | wp-pagenavi.php |
Quick
Add an ABSPATH guard near the top of the main plugin file to prevent direct execution.
Moderate
Apply the same remediation pattern across security findings and re-scan to confirm warning issues drop.
Advanced
Add automated linting, CI checks, and team review guidance so this issue class is prevented in future releases.
|
| NOTICE | REPO | Plugin package does not include a license file. |
Quick
Add a LICENSE or COPYING file so distribution terms are explicit.
Moderate
Apply the same remediation pattern across repo findings and re-scan to confirm notice issues drop.
Advanced
Add automated linting, CI checks, and team review guidance so this issue class is prevented in future releases.
|
|
| WARNING | PERFORMANCE | query_posts() detected. | test.php |
Quick
Use WP_Query or pre_get_posts instead of query_posts() to avoid altering the main query unexpectedly.
Moderate
Apply the same remediation pattern across performance findings and re-scan to confirm warning issues drop.
Advanced
Add automated linting, CI checks, and team review guidance so this issue class is prevented in future releases.
|
| WARNING | SECURITY | Direct database query detected without an immediately visible $wpdb->prepare() wrapper. | scb/Util.php |
Quick
Wrap dynamic SQL arguments with $wpdb->prepare() in the flagged query.
Moderate
Refactor repeated SQL into repository/helper methods that enforce prepared statements by default.
Advanced
Add integration tests and static checks that fail builds when direct dynamic SQL is introduced.
|
| WARNING | SECURITY | Direct database query detected without an immediately visible $wpdb->prepare() wrapper. | scb/BoxesPage.php |
Quick
Wrap dynamic SQL arguments with $wpdb->prepare() in the flagged query.
Moderate
Refactor repeated SQL into repository/helper methods that enforce prepared statements by default.
Advanced
Add integration tests and static checks that fail builds when direct dynamic SQL is introduced.
|
| NOTICE | REPO | Translation functions are present, but no textdomain loader was detected. |
Quick
Call load_plugin_textdomain() during plugin bootstrap so translations can be loaded.
Moderate
Apply the same remediation pattern across repo findings and re-scan to confirm notice issues drop.
Advanced
Add automated linting, CI checks, and team review guidance so this issue class is prevented in future releases.
|
Score History
Range Change: 0 pts · All-Time High: 93/100