Fixed report button not appearing on custom post type pages when “Allow Guest Reporting” is enabled — auto_append_button() now validates the post ID before passing it to render_button() so secondary/builder loops that reset the global $post cannot cause a false already_reported or rate_limited result; the button_appended_via_content flag is now only set when render_button() actually produces HTML, ensuring the wp_footer fallback runs and uses the correct queried-object ID when the content filter fails to insert the button
1.6.4
Fixed report button not appearing on custom post type pages when “Allow Guest Reporting” is enabled — render_modal() now uses get_queried_object() instead of get_post_type() so the modal is reliably rendered even when a CPT theme or page builder has reset the global $post by the time wp_footer fires; without the modal the JS event binding was silently skipped, leaving buttons inert
Fixed report button being incorrectly appended to widget and secondary-loop content on singular pages — auto_append_button() now only fires inside the main WordPress query loop (in_the_loop + is_main_query guards); page builders that render outside the loop automatically fall back to the wp_footer output path
Fixed redundant Frontend hook registration on each AJAX report submission — AJAX handler now reuses the existing Frontend singleton instead of instantiating a new object
1.6.3
Fixed report button not appearing on standard posts and custom post types when auto-append is enabled — restored the_content filter as the primary insertion method so the button appears inline with post content on standard themes; wp_footer is now a fallback for page builder / CPT templates that skip the_content
1.6.2
Fixed bulk “Delete Reports” security check when the list form uses GET (nonce and IDs read from request correctly)
Fixed frontend report button staying unusable after admin deleted reports (no longer leaves the button disabled in the browser)
Report button auto-append outputs in wp_footer using the main queried post so custom post types and themes that skip the_content still show the button
Optional setting: require captcha (reCAPTCHA / Turnstile) for logged-in users when a provider is configured
1.6.0
Added optional Cloudflare Turnstile support for guest report submissions
Added optional Google reCAPTCHA v2 checkbox support for guest report submissions
Added optional Google reCAPTCHA v3 invisible support with configurable score threshold
Added new Captcha / Spam Protection settings section
Added server-side captcha verification before saving guest reports
Updated privacy documentation for optional third-party captcha providers
1.5.0
Added comment reporting — visitors can now report individual comments
Added admin email notifications on new report submission
Added threshold actions — automatically unpublish, trash, or get alerted when a post exceeds a report count
Added data retention — automatically delete reports older than a configurable number of days
Added privacy notice — optionally display a GDPR notice inside the report form
Added CSV export — download all reports (with active filters applied) as a spreadsheet
Added honeypot spam protection to the report form
Added five report filters: Post Type, Report Status, Item Type, Reason, and Date Range
Added “Reported” column to admin list (Post / Comment / Post + Comment)
Added Notifications & Automation settings section with eight new options
Improved admin list table column layout and added white-space: nowrap to narrow columns
Database table extended with item_type and comment_id columns (existing installs upgraded automatically)