Query Wrangler Security & Risk Analysis

wordpress.org/plugins/query-wrangler

Query Wrangler provides an intuitive interface for creating complex WP queries as shortcodes and widgets. UI based on Drupal Views.

700 active installs v1.5.57 PHP + WP 5.0+ Updated Jun 11, 2025
loopspagesqueryviewswidget
99
A · Safe
CVEs total2
Unpatched0
Last CVEApr 1, 2025
Safety Verdict

Is Query Wrangler Safe to Use in 2026?

Generally Safe

Score 99/100

Query Wrangler has a strong security track record. Known vulnerabilities have been patched promptly. It's a solid choice for most WordPress installations.

2 known CVEsLast CVE: Apr 1, 2025Updated 11mo ago
Risk Assessment

The plugin "query-wrangler" v1.5.57 exhibits a mixed security posture. While it demonstrates good practices in its use of prepared statements for SQL queries (97%) and has no currently unpatched known vulnerabilities, several areas raise significant concern. The presence of 3 unprotected AJAX handlers represents a substantial attack surface. Furthermore, the taint analysis reveals 6 high-severity flows with unsanitized paths, indicating a direct risk of input manipulation leading to security issues. The low percentage of properly escaped output (8%) is particularly worrying, suggesting a high likelihood of cross-site scripting vulnerabilities. The historical data shows past vulnerabilities related to CSRF and XSS, reinforcing the risks identified in the static analysis. The recent vulnerability in April 2025, even if patched, highlights a recurring pattern of exploitable input handling. Overall, the plugin has strengths in its SQL handling but weaknesses in input sanitization and output escaping, combined with a concerning number of unprotected entry points, necessitate careful attention to mitigate potential risks.

Key Concerns

  • Unprotected AJAX handlers
  • High severity unsanitized taint flows
  • Low percentage of properly escaped output
  • Past vulnerabilities (CSRF, XSS)
Vulnerabilities
2 published

Query Wrangler Security Vulnerabilities

CVEs by Year

1 CVE in 2023
2023
1 CVE in 2025
2025
Patched Has unpatched

Severity Breakdown

Medium
2

2 total CVEs

CVE-2025-31779medium · 4.3Cross-Site Request Forgery (CSRF)

Query Wrangler <= 1.5.54 - Cross-Site Request Forgery

Apr 1, 2025 Patched in 1.5.55 (23d)
CVE-2023-30779medium · 6.1Improper Neutralization of Input During Web Page Generation ('Cross-site Scripting')

Query Wrangler <= 1.5.51 - Reflected Cross-Site Scripting via page parameter

Apr 19, 2023 Patched in 1.5.52 (279d)
Version History

Query Wrangler Release Timeline

Code Analysis
Analyzed Mar 16, 2026

Query Wrangler Code Analysis

Dangerous Functions
0
Raw SQL Queries
1
30 prepared
Unescaped Output
476
42 escaped
Nonce Checks
6
Capability Checks
1
File Operations
0
External Requests
0
Bundled Libraries
0

SQL Query Safety

97% prepared31 total queries

Output Escaping

8% escaped518 total outputs
Data Flows · Security
8 unsanitized

Data Flow Analysis

10 flows8 with unsanitized paths
qw_form_ajax (admin\ajax.php:5)
Source (user input) Sink (dangerous op) Sanitizer Transform Unsanitized Sanitized
Attack Surface
3 unprotected

Query Wrangler Attack Surface

Entry Points5
Unprotected3

AJAX Handlers 3

authwp_ajax_qw_meta_key_autocompleteadmin\admin.php:405
authwp_ajax_qw_form_ajaxquery-wrangler.php:147
authwp_ajax_qw_data_ajaxquery-wrangler.php:148

Shortcodes 2

[qw_query] includes\class-qw-shortcodes.php:14
[query] includes\class-qw-shortcodes.php:17
WordPress Hooks 84
actiontw_templatesadmin\admin.php:3
filterqw_edit_themesadmin\default_editors.php:30
actionadmin_headadmin\default_editors.php:49
actionadmin_enqueue_scriptsadmin\default_editors.php:52
actionadmin_headadmin\default_editors.php:76
actionadmin_enqueue_scriptsadmin\default_editors.php:79
filterqw_basicsincludes\basics\display_title.php:3
filterqw_basicsincludes\basics\empty.php:3
filterqw_basicsincludes\basics\footer.php:3
filterqw_pre_renderincludes\basics\footer.php:46
filterqw_basicsincludes\basics\header.php:3
filterqw_pre_renderincludes\basics\header.php:45
filterqw_basicsincludes\basics\ignore_sticky_posts.php:3
filterqw_basicsincludes\basics\offset.php:3
filterqw_basicsincludes\basics\pager.php:3
filterqw_pager_typesincludes\basics\pager.php:6
filterqw_basicsincludes\basics\page_path.php:3
filterqw_basicsincludes\basics\page_template.php:3
filterqw_basicsincludes\basics\posts_per_page.php:3
filterqw_basicsincludes\basics\post_status.php:3
filterqw_post_statusesincludes\basics\post_status.php:6
filterqw_basicsincludes\basics\row_styles.php:3
filterqw_row_stylesincludes\basics\row_styles.php:6
filterqw_row_fields_stylesincludes\basics\row_styles.php:9
filterqw_row_complete_stylesincludes\basics\row_styles.php:12
filterqw_basicsincludes\basics\template_styles.php:3
filterqw_stylesincludes\basics\template_styles.php:5
filterqw_basicsincludes\basics\wrapper_settings.php:3
actionpre_get_postsincludes\class-qw-override.php:22
actionwpincludes\class-qw-override.php:23
filtertemplate_includeincludes\class-qw-override.php:113
filterqw_shortcode_default_attributesincludes\class-qw-shortcodes.php:20
filterqw_shortcode_optionsincludes\class-qw-shortcodes.php:21
filterqw_pre_queryincludes\class-qw-shortcodes.php:22
filterqw_fieldsincludes\fields\callback_field.php:3
filterqw_fieldsincludes\fields\default_fields.php:4
filterqw_fieldsincludes\fields\featured_image.php:3
filterqw_fieldsincludes\fields\file_attachment.php:3
filterqw_file_stylesincludes\fields\file_attachment.php:6
filterqw_fieldsincludes\fields\image_attachment.php:3
filterqw_fieldsincludes\fields\meta_value.php:4
filterqw_fieldsincludes\fields\meta_value_new.php:4
filterqw_fieldsincludes\fields\post_author.php:3
filterqw_fieldsincludes\fields\post_author_avatar.php:3
filterqw_fieldsincludes\fields\taxonomy_terms.php:3
filterqw_filtersincludes\filters\author.php:4
filterqw_filtersincludes\filters\callback.php:3
filterqw_filtersincludes\filters\categories.php:4
filterqw_filtersincludes\filters\meta_key.php:4
filterqw_filtersincludes\filters\meta_key_value.php:4
filterqw_filtersincludes\filters\meta_query.php:4
filterqw_filtersincludes\filters\meta_value.php:4
filterqw_filtersincludes\filters\post_id.php:4
filterqw_filtersincludes\filters\post_parent.php:4
filterqw_filtersincludes\filters\post_types.php:4
filterqw_filtersincludes\filters\search.php:4
filterqw_filtersincludes\filters\tags.php:4
filterqw_filtersincludes\filters\taxonomies.php:3
filterqw_filtersincludes\filters\taxonomy_relation.php:3
filterqw_handlersincludes\handlers.php:2
filtertw_templatesincludes\handlers.php:3
filterqw_meta_value_display_handlersincludes\hooks.php:267
filterqw_overridesincludes\overrides\categories.php:4
filterqw_pre_saveincludes\overrides\categories.php:5
filterqw_overridesincludes\overrides\post_type_archive.php:4
filterqw_pre_saveincludes\overrides\post_type_archive.php:5
actionqw_delete_queryincludes\overrides\post_type_archive.php:6
filterqw_overridesincludes\overrides\tags.php:4
filterqw_pre_saveincludes\overrides\tags.php:5
filterqw_overridesincludes\overrides\taxonomies.php:4
filterqw_pre_saveincludes\overrides\taxonomies.php:5
actionqw_delete_queryincludes\overrides\taxonomies.php:6
actionparse_requestincludes\pages.php:65
filterqw_sort_optionsincludes\sorts\default_sorts.php:4
filtertw_templatesincludes\theme.php:44
actionadmin_headquery-wrangler.php:149
filterwp_enqueue_scriptsquery-wrangler.php:157
actionadmin_enqueue_scriptsquery-wrangler.php:158
actionadmin_enqueue_scriptsquery-wrangler.php:164
actioninitquery-wrangler.php:169
actionadmin_menuquery-wrangler.php:170
actionadmin_initquery-wrangler.php:171
actionadmin_initquery-wrangler.php:172
actionwidgets_initwidget.query.php:7
Maintenance & Trust

Query Wrangler Maintenance & Trust

Maintenance Signals

WordPress version tested6.8.5
Last updatedJun 11, 2025
PHP min version
Downloads48K

Community Trust

Rating100/100
Number of ratings37
Active installs700
Developer Profile

Query Wrangler Developer Profile

Jonathan Daggerhart

5 plugins · 11K total installs

69
trust score
Avg Security Score
85/100
Avg Patch Time
331 days
View full developer profile
Detection Fingerprints

How We Detect Query Wrangler

Patterns used to identify this plugin on WordPress sites during automated security audits and web crawling.

Asset Fingerprints

Asset Paths
/wp-content/plugins/query-wrangler/admin/css/qw-admin.css/wp-content/plugins/query-wrangler/admin/js/qw-admin-list.js/wp-content/plugins/query-wrangler/admin/js/qw-admin-edit.js/wp-content/plugins/query-wrangler/css/query-wrangler.css/wp-content/plugins/query-wrangler/js/query-wrangler.js/wp-content/plugins/query-wrangler/js/qw-frontend.js
Script Paths
query-wrangler/admin/js/qw-admin-list.jsquery-wrangler/admin/js/qw-admin-edit.jsquery-wrangler/js/qw-frontend.js
Version Parameters
query-wrangler/admin/css/qw-admin.css?ver=query-wrangler/admin/js/qw-admin-list.js?ver=query-wrangler/admin/js/qw-admin-edit.js?ver=query-wrangler/css/query-wrangler.css?ver=query-wrangler/js/query-wrangler.js?ver=query-wrangler/js/qw-frontend.js?ver=

HTML / DOM Fingerprints

CSS Classes
qw-query-option-wrapper
Data Attributes
data-qw-query-id
JS Globals
qw_admin_params
Shortcode Output
[query-wrangler]
FAQ

Frequently Asked Questions about Query Wrangler