Everyone seems to agree that in an ideal WordPress world, comments would be disabled by default. I believe a better ideal of convivial comments can be realized. We can make comments better with webmentions and customizations to keep our feedback human, healthy, and manageable.
Instead of comments, try webmentions.
Instead of — or alongside — comments you can add support for the Webmentions protocol to WordPress with the Webmentions plugin.
Webmentions are a newer, better alternative to pingbacks and trackbacks. (You’re unlikely to get spam links from a webmention.) If something you’ve published gets linked to by another cool person using software that supports the webmentions protocol, you’ll get a “mention” that appears in the WordPress comment manager alongside the pings, trackbacks, and regular comments unless you’ve disabled those.
How to set up comments, if you must!
If you enable comments anywhere, here are the additional settings and customizations that will help you maximize good outcomes and mitigate the most horrible but common things humans and machines always do with comment forms.
- Enable comments only where (and when) they are needed. Just because you use comments doesn’t mean you want them everywhere.
It would be nice to have a global setting in WordPress to enable or disable comments per content type, especially if custom post types are being used. By default WordPress allows you to activate comments per post or page (and potentially other content types) in their individual discussion settings but not globally. There are some plugins that do this but not ones I want to recommend. You can find code snippets and examples to learn how to do this very simply with a custom function or plugin.
You should also make use of the global Discussion Settings in WordPress that define a period of time for comments to be enabled on a newly published item. Unless you’re writing a lot of evergreen content, why would a legitimate commenter show up with something useful to say a year after you publish something? (It would be nice to have this expiration feature variable per post type or individual content item too.)
- Enable a spam blocker. If comments are enabled anywhere and anonymous visitors (or bots) can leave them, you need spam protection. There are some simple and foolproof antispam techniques everyone should use. Take a look at Gulshan Kumar‘s Forget Comment Spam plugin.
- Disable nested comments. You don’t need nested or “threaded” comments if you’re not Reddit or Slack. (Consider P2 or bbPress or anything else before using them.)
If you allow random people to reply specifically to other commenters, this opens up all kinds of trouble. You’re replicating Twitter and forum-style features with little or no protection. You should not do this without a login-to-comment requirement and/or active moderation.
If you do use nested comments, parent-child structure should be indicated and editable inwp-admin. Stephen Cronin‘s old Show Parent Comment does this nicely, but if you want to be able to change parent-child relationships, Modify Comment Parent, Change Comment Parent, and Yoast Comment Hacks offer different approaches.
- Enable private comments. Let commenters define the scope of their audience and answerability. Not all comments need to be for everyone. If commenters can identify their message and intentions as private, they may communicate more comfortably with the author of the item being commented on, or to site admins, etc.
The Private Comments plugin achieves this. CommentXpert is a new, little-used plugin I’ve never heard of that has a lot of features on this list and then some, including private comments that can be made public by admins.
- Restrict comments and commenting privileges by role. This is a novel idea that might make sense for certain community sites. Comments can be semi-private if they are readable and/or writeable to logged-in users in or above a certain role group. There’s an old WordPress StackXchange thread suggesting some ways to achieve this. The code examples there could probably use some updating and rethinking. 🤔
Now let’s think about the back-end interface or “wp-admin” if you have multiple users operating there and a lot of commenters to deal with.
- Create a Moderator role. The Moderator role is the only role that has access to the comment controls in wp-admin and receives comment notifications by default. A Subscriber, Contributor, Author, Editor, or Administrator would have to be assigned a secondary Moderator role for the privilege of being bothered with comments.
- Give Moderators nice comment notification emails with actionable links. See the Comment Approval Notifications plugin by Kaspars Dambis.
Note: By default, WordPress sends its mail through the PHP user viamail()as it’s used bywp_mail()by default. Take care to configure this approach properly or use alternative methods, like SMTP or an external mail platform. Many managed hosts provide alternatives. - Let commenters opt-in for notification emails when there is a direct (nested) reply to their comment, or when any new comment is added. Kaspars explains how to do some of this with his Comment Approval Notifications plugin
A lot of good things become possible and easier if most commenters are known, logged-in users whose identity (and maybe more) is federated and available for use across any/all platforms. Consider taking the time to set up…
- Single-sign on (SSO) with many platforms or (even better) a Federated Identity Management (FIM) system, like Gravatar.
As an alternative or fallback, why not…
- Simple, lightweight HTML/CSS avatars with the commenters’ initials and a unique background colour if there’s no Gravatar connected to their email address, or if Gravatars are disabled. There are several plugins that do this; it’s a pretty old but not commonly used on WordPress sites.
Ten more things you can do to make comments better.
Finally, here is a cluster of comment interface features that introduce feedback and simple automations to discourage abuse.
- Visitors can vote comments up or down.
- Comments might publicly display upvote and downvote totals separately, summed against each other as a rating or “karma,” or keep them hidden, for internal and algorithmic use.1
- Visitors can report comments.
- A specified number of downvotes triggers moderation rules and/or notifications.
- Enable comment throttling for 5 minutes if 5 comments have been submitted within the past 5 minutes by fewer than 5 commenters. (Something like that.)
- Option to prevent the last commenter from commenting again until someone else has commented or 24 hours have passed.
- Commenter-submitted “Website” field disabled by default.
- There are default, variable minimum and maximum lengths for comments.
- HTML and/or Markdown allowed with a preview.
- No refresh necessary after commenting to see the result.
- Optionally redirect after comment submission to an arbitrary URL. (This might be a good place for some friction and creative redirection.)
- Comments are editable by the commenter within a set time limit after they are published/ (Requires comment cookies or only applies long-term to comments that belong to known/logged-in users.)
- Bonus: Joost‘s fix for performance/caching issues caused by comment cookies, and Yoast Comment Hacks, now Comment Experience by Progress Planner.
Solutions exist (or have come and gone) for all of these enhancements. For some reason or another, they never came together in a single effective plugin that caught on — for WordPress and similar platforms. As a result, unmoderated comments on sites that got a lot of comments tended to result in less-than-ideal outcomes, and site owners eventually shut them down, by and large. That’s too bad. Human moderation matters, but the following technical features and interface parameters make moderation manageable.
Notes
- The early history of social media as a less-than-wonderful thing might begin with public comment “karma” and the incentive to “game” it. At its simplest, comment ratings, or “karma,” provide social feedback about an individual comment. If the downvotes reach a certain threshold, moderators should be alerted and step in, or other automated processes might kick in that silently demote or disappear bad comments, while promoting good ones.
Attaching karma to a user goes a step further as an enduring personal reputation rating. At scale, that’s a social credit scoring system — a status indicator that certainly increases the incentive to leave quality comments, or not to leave bad ones that upset local norms. (The “wisdom of the crowd,” such as it is.) But there are many other troubling side effects.
The math involved in algorithmically determining the “best” comments is interesting. It’s not done by taking the average of comments made and upvotes received. A clever and widely-adopted early method made use of a binomial proportion confidence interval, also known as the Wilson score confidence interval. This method of statistical analysis evaluates the success/failure (e.g., upvote/downvote) outcomes for a series of repeated experiments. (These experiments, known to statisticians as Bernoulli trials, could be anything with a binary outcome, like comments that get +/- ratings.) A commenter’s Wilson score is a range of values that is “likely to contain (after repeated sampling) the true value of an unknown,” such as the future rating of their next comment.
↩︎


Leave a Reply