The best WordPress plugin for displaying related posts. Simple and flexible, with a powerful proven algorithm and inbuilt caching.
Category Scores
Top Issues by Category
maintainability246
security234
i18n21
Issues Details
522 issues found in latest scan
Global variables defined by a theme/plugin should start with the theme/plugin prefix. Found: "$add_image_size_by_yarpp".
All output should be run through an escaping function (see the Security sections in the WordPress Developer Handbooks), found '" name='include_post_type[{$post_type->name}]' id='include_post_type_{$post_type->name}' value='true' /> <label for='include_post_type_{$post_type->name}'>"'.
$_GET['_wpnonce'] not unslashed before sanitization. Use wp_unslash() or similar
Detected usage of a non-sanitized input variable: $_GET['_wpnonce']
Direct database call without caching detected. Consider using wp_cache_get() / wp_cache_set() or wp_cache_delete().
PHP file should prevent direct access. Add a check like: if ( ! defined( 'ABSPATH' ) ) exit;
Processing form data without nonce verification.
Detected usage of a possibly undefined superglobal array index: $_GET['page']. Check that the array index exists before using it.
A function call to __() with texts containing placeholders was found, but was not accompanied by a "translators:" comment on the line above to clarify the meaning of the placeholders.
Use placeholders and $wpdb->prepare(); found interpolated variable $charset_collate at \t\t\t)$charset_collate;"
Function "get_user_count()" requires WordPress 4.8.0, but your plugin minimum supported version is WordPress 3.7.0.
All output should be run through an escaping function (like esc_html_e() or esc_attr_e()), found '_e'.
Hook names invoked by a theme/plugin should start with the theme/plugin prefix. Found: "get_the_score".
Attempting a database schema change is discouraged.
Functions declared in the global namespace by a theme/plugin should start with the theme/plugin prefix. Found: "clean".
Using exclusionary parameters, like exclude, in calls to get_posts() should be done with caution, see https://wpvip.com/documentation/performance-improvements-by-removing-usage-of-post__not_in/ for more information.
In footer ($in_footer) is not set explicitly wp_enqueue_script; It is recommended to load scripts in the footer. Please set this value to `true` to load it in the footer, or explicitly `false` if it should be loaded in the header.
Unescaped parameter $charset_collate used in $wpdb->query()\n$charset_collate assigned unsafely at line 157.
Unescaped parameter $in used in $wpdb->query()\n$in assigned unsafely at line 908.
Found usage of constant "STYLESHEETPATH". Use get_stylesheet_directory() instead.
The $text parameter must be a single text string literal. Found: 'There is a new beta (%s) of Yet Another Related Posts Plugin. ' .\n 'You can <a href="%s">download it here</a> at your own risk.'
The plugin name includes a restricted term. Your chosen plugin name - "YARPP - Yet Another Related Posts Plugin" - contains the restricted term "plugin" which cannot be used at all in your plugin name.
| Code | Type | Message | Count |
|---|---|---|---|
| WordPress.NamingConventions.PrefixAllGlobals.NonPrefixedVariableFound | WARNING | Global variables defined by a theme/plugin should start with the theme/plugin prefix. Found: "$add_image_size_by_yarpp". | 116 |
| WordPress.Security.EscapeOutput.OutputNotEscaped | ERROR | All output should be run through an escaping function (see the Security sections in the WordPress Developer Handbooks), found '" name='include_post_type[{$post_type->name}]' id='include_post_type_{$post_type->name}' value='true' /> <label for='include_post_type_{$post_type->name}'>"'. | 87 |
| WordPress.DB.DirectDatabaseQuery.DirectQuery | WARNING | Use of a direct database call is discouraged. | 36 |
| WordPress.Security.ValidatedSanitizedInput.MissingUnslash | WARNING | $_GET['_wpnonce'] not unslashed before sanitization. Use wp_unslash() or similar | 33 |
| WordPress.Security.ValidatedSanitizedInput.InputNotSanitized | WARNING | Detected usage of a non-sanitized input variable: $_GET['_wpnonce'] | 30 |
| WordPress.DB.DirectDatabaseQuery.NoCaching | WARNING | Direct database call without caching detected. Consider using wp_cache_get() / wp_cache_set() or wp_cache_delete(). | 27 |
| WordPress.DB.PreparedSQL.NotPrepared | ERROR | Use placeholders and $wpdb->prepare(); found $args | 27 |
| missing_direct_file_access_protection | ERROR | PHP file should prevent direct access. Add a check like: if ( ! defined( 'ABSPATH' ) ) exit; | 24 |
| WordPress.Security.NonceVerification.Recommended | WARNING | Processing form data without nonce verification. | 16 |
| WordPress.Security.ValidatedSanitizedInput.InputNotValidated | WARNING | Detected usage of a possibly undefined superglobal array index: $_GET['page']. Check that the array index exists before using it. | 15 |
| WordPress.WP.I18n.MissingTranslatorsComment | ERROR | A function call to __() with texts containing placeholders was found, but was not accompanied by a "translators:" comment on the line above to clarify the meaning of the placeholders. | 15 |
| WordPress.DB.PreparedSQL.InterpolatedNotPrepared | WARNING | Use placeholders and $wpdb->prepare(); found interpolated variable $charset_collate at \t\t\t)$charset_collate;" | 11 |
| wp_function_not_compatible_with_requires_wp | ERROR | Function "get_user_count()" requires WordPress 4.8.0, but your plugin minimum supported version is WordPress 3.7.0. | 11 |
| WordPress.Security.EscapeOutput.UnsafePrintingFunction | ERROR | All output should be run through an escaping function (like esc_html_e() or esc_attr_e()), found '_e'. | 9 |
| WordPress.NamingConventions.PrefixAllGlobals.NonPrefixedHooknameFound | WARNING | Hook names invoked by a theme/plugin should start with the theme/plugin prefix. Found: "get_the_score". | 8 |
| WordPress.DB.DirectDatabaseQuery.SchemaChange | WARNING | Attempting a database schema change is discouraged. | 7 |
| WordPress.NamingConventions.PrefixAllGlobals.NonPrefixedFunctionFound | WARNING | Functions declared in the global namespace by a theme/plugin should start with the theme/plugin prefix. Found: "clean". | 7 |
| WordPressVIPMinimum.Performance.WPQueryParams.PostNotIn_exclude | WARNING | Using exclusionary parameters, like exclude, in calls to get_posts() should be done with caution, see https://wpvip.com/documentation/performance-improvements-by-removing-usage-of-post__not_in/ for more information. | 6 |
| WordPress.WP.EnqueuedResourceParameters.NotInFooter | WARNING | In footer ($in_footer) is not set explicitly wp_enqueue_script; It is recommended to load scripts in the footer. Please set this value to `true` to load it in the footer, or explicitly `false` if it should be loaded in the header. | 4 |
| PluginCheck.Security.DirectDB.UnescapedDBParameter | WARNING | Unescaped parameter $charset_collate used in $wpdb->query()\n$charset_collate assigned unsafely at line 157. | 3 |
| PluginCheck.Security.DirectDB.UnescapedDBParameter | ERROR | Unescaped parameter $in used in $wpdb->query()\n$in assigned unsafely at line 908. | 3 |
| WordPress.WP.DiscouragedConstants.STYLESHEETPATHUsageFound | ERROR | Found usage of constant "STYLESHEETPATH". Use get_stylesheet_directory() instead. | 3 |
| WordPress.WP.I18n.MissingArgDomain | ERROR | Missing $domain parameter in function call to __(). | 3 |
| WordPress.WP.I18n.NonSingularStringLiteralText | ERROR | The $text parameter must be a single text string literal. Found: 'There is a new beta (%s) of Yet Another Related Posts Plugin. ' .\n 'You can <a href="%s">download it here</a> at your own risk.' | 3 |
| trademarked_term | WARNING | The plugin name includes a restricted term. Your chosen plugin name - "YARPP - Yet Another Related Posts Plugin" - contains the restricted term "plugin" which cannot be used at all in your plugin name. | 3 |
Latest Snapshot
Findings
522
Errors
191
Warnings
331
Score History
First score snapshot
First scan completed Jun 19, 2026
v5.30.11 · Plugin Check 2.0.0 · Model 2026.06-mvp-static-v2
Jun 19, 2026
v5.30.11
27
Latest
- Findings
- 522
- Errors
- 191
- Warnings
- 331
- Plugin Check
- 2.0.0
- Model
- 2026.06-mvp-static-v2
| Scan | Score | Findings | Errors | Warnings | Plugin | Plugin Check | Model |
|---|---|---|---|---|---|---|---|
| Jun 19, 2026Latest | 27 | 522 | 191 | 331 | v5.30.11 | 2.0.0 | 2026.06-mvp-static-v2 |