15 versions
WPDiscuz history.
Every release of WPDiscuz is archived here with its changelog, file size, and security scan result. Use the archive to roll back to a stable release or audit what changed between updates.
15 of 15 releases scanned clean
v7.6.74Latest
October 29, 20266.8 MBScanned
Fixed
- Security. A commenter whose name contained a placeholder such as {TEXT} could make their comment run JavaScript for moderators viewing it while pending, and for every visitor once it was approved. Names with braces are now shown as plain text. Reported by Patchstack.
Other
- [See the changelog for all versions](https://plugins.svn.wordpress.org/wpdiscuz/trunk/changelog.txt)
October 25, 20266.8 MBScanned
Fixed
- The Facebook login button signed a visitor in through a client-side flow that trusted a Facebook user ID sent with the request, which was not tied to the access token it arrived with. Because an account's Facebook ID doubles as its user name and the account's email address was derived from that ID when Facebook returned none, this could sign a request in as another visitor's account. Facebook login now always uses the server-side OAuth2 flow, which reads the account from the token's own owner, and social accounts are matched by their verified provider user ID rather than by an email address built from it. The legacy flow and the "Use Facebook OAuth2" setting have been removed. Sites that used the legacy flow must add their site's OAuth redirect URI, wp-admin/admin-ajax.php?action=wpd_login_callback&provider=facebook, to the Valid OAuth Redirect URIs of their Facebook app for the button to keep working.
Improved
- On the settings page, the preview of an addon that isn't installed described its rating structured data and one shortcode attribute as they used to work. It now matches the current addon.
Other
- [See the changelog for all versions](https://plugins.svn.wordpress.org/wpdiscuz/trunk/changelog.txt)
October 7, 20266.8 MBScanned
Fixed
- A comment whose image was refused for its width or height was saved anyway, and the error message was empty. The `wpdiscuz_mu_preupload` action now fires before the comment is saved, so a file it refuses stops the comment.
- The on/off switches on the settings page showed their state by color alone and could not be used from the keyboard. They now show a cross when off and a check mark when on, and can be reached with Tab and toggled with Space. Switches in addon settings tabs get the same fix.
Other
- [See the changelog for all versions](https://plugins.svn.wordpress.org/wpdiscuz/trunk/changelog.txt)
September 16, 20266.8 MBScanned
Fixed
- The comment bubble and the live comment update never showed comments posted without an email address to visitors who have no email address themselves, visitors who have not commented yet and guests who comment anonymously. A visitor's own new comments are left out of these updates by their email address, and an empty address matched every comment posted without one, so anonymous commenters were hidden from each other and from everyone who has not commented. The email address is now only used when the visitor has one, a guest commenting anonymously keeps their own comments out of the update through the ones already on their screen.
- The new comment message of the comment bubble described the newest comment of the post, even when the bubble was not notifying about that comment, the visitor's own comment or one already on their screen. It now describes the newest comment the visitor is being notified about, and is left out of the response when that comment cannot be read, a private comment an addon keeps from the visitor for instance, where it used to be built from nothing.
- The Cookies Consent and Agreement checkbox labels were printed on the comment form, and on the comment edit form, without being escaped. The labels are cleaned when the form is saved, but that only applies to what is saved from then on, so a label stored before v7.6.13 kept whatever markup it was given and was still printed as markup to every visitor. The labels are now filtered where they are printed, the agreement label by the same rules its own save path allows and the cookies consent label by a narrow set that keeps links and inline formatting, so a label that still holds script no longer runs it. The field name is escaped in the wrapper class of the cookies consent and text area fields as well, as it already was in the other field types.
- The info icon of the "powered by wpDiscuz" line below the comments carried its behaviour in an inline onclick attribute, which a Content Security Policy that forbids inline script blocks outright, leaving the icon unresponsive with nothing to explain why. It also reached the link through fixed element ids, so a page showing more than one comment form always toggled the first one, and it could not be reached from the keyboard at all. The icon is now handled from wpdiscuz.js, is operable by keyboard, toggles the block it belongs to, and moves focus to the link it reveals.
- The minimal theme carried none of the styles for the "powered by wpDiscuz" line. That stylesheet loads instead of the default theme one rather than alongside it, so the wpDiscuz link was shown permanently and unstyled, and the info icon beside it toggled nothing a reader would notice.
- The HTML field printed its markup on the comment form without being filtered. The markup is cleaned when the form is saved, but that only applies to what is saved from then on, so an HTML field stored before v7.6.13 kept whatever markup it was given and was still printed as markup to every visitor, and cloning a form or importing one copies such a value across untouched. It is now filtered where it is printed, by the same rules its own save path allows, so a field that still holds script no longer runs it. Its code is shown as plain text until the field is cleared. The number field description is escaped where it is printed as well, as it already was in the other field types.
- The titles of the comment editor toolbar buttons were passed through the translation function a second time where they are printed, against wpDiscuz's own text domain. The titles are already translated by that point, so the title of a button added by an addon was looked up in a text domain it does not belong to, and a title the addon had already escaped was escaped a second time, which shows the escape sequence itself to the reader in any title holding an apostrophe or an ampersand. The titles are now only escaped where they are printed.
- The icon height and the tab title of each card on the settings dashboard, and the icon class of the file attachment button on the comment form, were printed without being escaped. All three are supplied through settings arrays and filters an addon can extend, so a value holding a quote or a tag was printed as markup rather than as the value it was meant to be. They are now escaped where they are printed, as the values beside them already were.
- Replies from guests were rejected as spam on sites where an anti-spam plugin fills in its own hidden fields with JavaScript once the page loads, La Sentinelle for instance, while the first comment posted through the main form went through. A reply form is built by copying the markup of a hidden form on the page, and markup carries the values the page was served with rather than the ones those scripts set, so every reply went out with an untouched honeypot and timer. A second comment from the main form was rejected the same way, because the form is cleared after a comment is posted and clearing it put those fields back to the values the page wa
v7.6.70Unavailable
September 11, 20266.8 MBScanned
Fixed
- Vote buttons showed guests the wrong state and tooltip when "Allow Guests to Vote for Comments" is disabled (buttons looked active, or blamed the visitor's IP address, then clicking answered "You Must Be Logged In To Vote").
- Guests whose IP address is removed by a privacy plugin or a `pre_comment_user_ip` filter all shared a single post-rating identity. The first such guest locked the rating for every other one, or overwrote it when "Enable rate editing" is enabled, and they were all counted as one rating in the post average and rating count. Guest rating now requires a usable IP address, the same way comment voting has since 7.6.67.
- The "Enable rate editing" form setting never reached the front-end script, so the confirmation before changing an existing rating was never asked. The form settings were read one line before they were loaded.
- Pages displaying more than one Article Rating repeated the `wpd-post-rating` id and sent every rating click to the post of the page. Each rating is now a `.wpd-post-rating` element carrying its own post ID, so any eligible post can be rated wherever the wpDiscuz script is loaded. The legacy id remains on the page's own rating at the first checked built-in position, or on a manual placement when no position is checked.
- The Article Rating schema was repeated whenever the page's own rating appeared more than once. It now follows the rating that owns the legacy id. The template tag's third argument and the shortcode's `page_rating` attribute can explicitly give or deny a manual placement that ownership when the settings cannot determine it.
- "Display ratings on non-singular pages" loaded a stylesheet that did not style the Article Rating block. The standalone rating styles now cover it and use the configured star colours, allowing template-tag and shortcode ratings to display read-only on archives, listings, and other pages where the wpDiscuz script is not loaded when that option is enabled.
- Selecting comment attachments more than once replaced the files already selected. New selections now accumulate up to the configured limit, and duplicate files are ignored.
Added
- The `wpdiscuz_post_rating()` template tag prints the standalone Article Rating anywhere in a theme or page builder template, and `wpdiscuz_get_post_rating()` returns the same HTML. Pass a post ID to display that post's rating with its own form settings, or pass false as the second argument for read-only output. WooCommerce products continue to use WooCommerce's own rating.
- The `[wpdiscuz_post_rating]` shortcode provides the same output for page builders and content editors, with `post_id`, `can_rate`, and `page_rating` attributes. Disable unneeded built-in Article Rating positions to avoid displaying the rating more than once.
v7.6.69Unavailable
September 7, 20266.7 MBScanned
Fixed
- Logging in with X (Twitter) ended on a blank page showing "0" instead of signing the visitor in. The callback URL and the requested scopes were placed in the authorization request without being URL-encoded.
- The Stick and Close actions under a comment on the WordPress Comments page never completed. The requests carried no wpDiscuz nonce, so they were rejected with "Nonce is invalid." and the button spinner kept turning. Both buttons also restore their icon now when a request fails, instead of spinning forever.
Improved
- The Google social login button now uses the official multicolor Google "G" logo.
v7.6.68Unavailable
September 3, 20266.7 MBScanned
Added
- The `wpdiscuz_comment_rejected_response` filter lets moderation plugins provide a clear explanation when a new comment is stored as spam or trash.
- The `wpdiscuz_hide_readonly_vote_buttons` filter hides those buttons again, restoring the `wpd-vote-readonly` markup used before this release.
Fixed
- Main and inline comment forms now show a moderation plugin's rejection explanation while keeping the standard wpDiscuz spam or trash phrase when no plugin provides one.
- Inline comments stored as spam or trash no longer create subscription records or send mention notifications.
- Comment insertion failures, including duplicate-comment and flood checks, now return a valid AJAX error instead of terminating the request with an unusable response.
- Plus signs and encoded data are preserved in inline commenter names and email addresses, the comment-author email cookie, and submitted website URLs.
Improved
- The Phrases screen now identifies the spam and trash rejection fields separately.
- Voting buttons now stay visible in a disabled state for visitors who cannot vote on a comment, instead of being hidden. Hiding them left visitors unaware that the site has voting at all. The buttons carry a `wpd-vote-disabled` class and a tooltip with the reason, and clicking one still shows the existing message.
Other
- Security: The Google Client Secret is no longer included in the front-end JavaScript settings.
v7.6.67Unavailable
August 29, 20266.7 MBScanned
Fixed
- Registered users can vote independently when they share an IP address, while registered authors are still blocked from voting on their own comments with the correct message.
- Guests no longer fall into one shared voting identity when privacy software removes visitor IP addresses. Affected guests must log in to vote even when guest voting is enabled.
- Vote totals remain visible when voting buttons are hidden by self-vote restrictions, and `wpdiscuz_show_vote` can now reliably hide other eligible voting components.
- Disabling comment voting now blocks the vote action through both native WordPress AJAX and the custom wpDiscuz AJAX endpoint.
Added
- The `wpdiscuz_deny_vote_from_same_ip` filter lets site owners show voting buttons and allow votes for same-IP guest comments without changing registered-user voting. Guests on that IP still share one voting identity.
Improved
- The voting settings now explain the global request gate and IP-based guest identity, including shared-IP behavior and the login requirement when no visitor IP is available.
Other
- Note: Existing vote records and totals are preserved; this update changes future voting behavior and does not recalculate historical votes.
v7.6.66Unavailable
August 27, 20266.9 MBScanned
* Security: Fixed an unauthenticated comment disclosure vulnerability in AJAX comment loading. Reported by Jakub Herman via WPScan.
v7.6.65Unavailable
August 25, 20266.9 MBScanned
Added
- The Reviews add-on teaser lists the new "Allow guest reviews" option.
- wpdScrollToOption() is exposed on the window object, so an add-on whose options sit in an accordion of its own can scroll to an option once it has opened it.
Improved
- The settings search shows which email a result belongs to. Eight options are labelled "Email subject" and eight "Email content", so a search for "email" returned an indistinguishable list; every result now carries its section, such as "Subscription Type: Post new comment".
- The settings search also matches those section names, so searching for "mentioned" or "follow confirmation" finds the email templates belonging to them.
- A settings search result for one of the email templates now opens the accordion holding it, instead of leaving the option hidden behind a collapsed panel.
- Saved phrases are now merged into the default phrases instead of replacing them. Phrases introduced by a plugin update are no longer printed empty on websites where the phrases table has not been filled with them yet, which happens when the plugin is updated without the WordPress dashboard ever being opened.
- The comment editing information is not printed at all when its phrase is empty, instead of printing a lone edit icon which tells nothing about who edited the comment and when.
Fixed
- A settings search result for an option inside a collapsed accordion scrolled to the top of the page instead of to the option, because the scroll measured the option row while it was still hidden and a hidden row reports a position of zero.
- Clicking a second settings search result belonging to an accordion that was already open closed it, because the accordion was toggled rather than opened.
- The Reviews add-on teaser said the WooCommerce ratings import skips guest reviews. The import includes them.
- The Reviews add-on teaser described the review gate as limiting who may submit a review. It sets submitted reviews to pending and does not vet users.
- The comment editing information printed only the edit icon, without the name of the editor and the time of the edit, on websites whose phrases table does not contain the "Last edited %1$s by %2$s" phrase.
- Visitors whose email address contains an apostrophe could not subscribe to comments. The address was checked for validity before the backslash WordPress puts in front of the apostrophe was removed, so the subscription form rejected it and reported nothing.
- Comment subscriptions were looked up by matching the email address as a SQL pattern instead of comparing it exactly. Since the % and _ characters are allowed in an email address, a subscriber using such an address matched the other subscribers of the same post, received their unsubscribe link, and removed their comment thread subscriptions.
Removed
- The Phrases settings page had fields for the VKontakte and Odnoklassniki share button titles. Those share buttons are no longer part of wpDiscuz and the two phrases behind the fields were neither defined nor saved anywhere, so the page raised an "Undefined array key" warning on every load.
Why archive
Sometimes the latest release isn't the one you need. The archive lets you pin WPDiscuz to a known-good version, or roll back while a bug is investigated. Every release stays scanned and reachable.