WPIntell

Source evidence

Plugins kills AJAX requests by throwing 403

Banner Management For WooCommerce · support · 2026-05-24T00:22:00+00:00

complaintsentiment
highseverity
0.76relevance
2replies
Evidence linked to opportunitycommercial context

Proof Health

Open evidence

Commercial opportunities need traceable source links before they are treated as build-worthy.

3 / 19 rows with source links

15.8% of this page's analysis has direct source links.

0 build-decision rows missing links

0 rows here require auditable proof before promotion.

16 rows with no attached evidence

0 rows have source counts but still need direct links.

Conversation

support
Stefan unresolved
Hi there, We ran into an issue where all of a site’s AJAX requests by logged out users were resulting in 403 errors. After testing and investigating, it appeared to come from this Banner Management plugin. After a look at the code, it appears the issue is here: public function wcbm_send_wizard_data_after_plugin_activation() { $send_wizard_data = filter_input( INPUT_GET, 'send-wizard-data', FILTER_SANITIZE_FULL_SPECIAL_CHARS ); if ( !current_user_can( 'manage_options' ) ) { wp_die( -1, 403 ); } if ( isset( $send_wizard_data ) && !empty( $send_wizard_data ) ) { ... } } This calls wp_die on any non-admin request, regardless of whether send-wizard-data is even present in the request. The capability gate should only apply when the wizard-data flow is actually being invoked: public function wcbm_send_wizard_data_after_plugin_activation() { $send_wizard_data = filter_input( INPUT_GET, 'send-wizard-data', FILTER_SANITIZE_FULL_SPECIAL_CHARS ); if ( empty( $send_wizard_data ) ) { return; } if ( ! current_user_can( 'manage_options' ) ) { wp_die( -1, 403 ); } // ...existing wizard logic } Can you take a look to confirm? Thanks Just to add this, a quick way to test the issue is by opening a site as a logged out user, with the Banner plugin active, open the Browser console, and enter fetch('/wp-admin/admin-ajax.php?action=heartbeat').then(r => console.log(r.status)); This appears to throw a 403 admin-ajax.php forbidden error with the plugin active, but shows 200 success with the plugin inactive. Hi Stefanst, Thanks for reaching out. We’ve fixed the issue you reported and released it in version 2.5.3 . Please update the plugin to the latest version to make it work properly. Thank you, Hitendra | Dotstore Team

Comments

2 shown
Stefan 2026-05-24T00:32:00+00:00

Just to add this, a quick way to test the issue is by opening a site as a logged out user, with the Banner plugin active, open the Browser console, and enter fetch('/wp-admin/admin-ajax.php?action=heartbeat').then(r => console.log(r.status)); This appears to throw a 403 admin-ajax.php forbidden error with the plugin active, but shows 200 success with the plugin inactive.

Hitendra Chopda 2026-06-01T14:43:00+00:00

Hi Stefanst, Thanks for reaching out. We’ve fixed the issue you reported and released it in version 2.5.3 . Please update the plugin to the latest version to make it work properly. Thank you, Hitendra | Dotstore Team