A built-in commenting system is one of the reasons people reach for WordPress (and often stay there long-term). While I do think having a comment system is compelling (and as big of a fan of building on WordPress as I am), I find the comments system on WordPress quite crusty. It needs some love! There is so much more potential there! Here’s my list.
I don’t have any inside WordPress knowledge to inform me about how difficult any of these ideas would be, what other things they may affect, and what conversations have already been had around them. While I personally like these ideas, I’m fully aware that software decisions, particularly at this scale, are not lightly made. So all that said, this wishlist is almost like a design exercise and could be considered user feedback.
Comments should be user-owned and editable.
I find it highly weird that a logged-in user can leave a comment, but the comment isn’t “owned” by them. There doesn’t seem to be a direct connection between their account and the comment they just left. Seems like if you actually have an account, that would be an obvious thing to attach. People leave typos in comments all the time and it would be much less frustrating for them if they could just edit them. Maybe there could be a way to offer that edibility even without an account, like some editing timeout window.
Is this something BuddyPress does? I don’t know. I know with bbPress that users own (and thus can edit) their topics and replies (possibly time-limited), but that functionality doesn’t seem to extend to post comment threads.
There should be social auth for comments.
Having to manually type out your name and email address and all that to leave a comment feels like too much effort these days. I’d bet that alone detracts many would-be commenters. Commenting systems like Disqus make this quick and easy, and with social media I’m so used to being able to type a reply and respond immediately. On a WordPress comment form, I should be able to click a button to have the legwork of knowing my name and email and such taken care of for me. That might even be my ticket for editing it later.
Jetpack offers social media auth for comments, but if you turn that on, the UI for commenting is
<iframe>d, so you have no design control or anything.
Also, the UI where it first shows up as a little narrow textarea block that you click into to expand into a comment area is also unchangeable and just doesn’t work that well with my style. I wouldn’t mind if this was Jetpack-powered functionality, I just want more control.
There should be a HTML tag whitelist.
I find when people type a
<div>, they don’t expect to have to escape it lest it be stripped. They expect it to just show
<div>. Even web developers.
I see people “screw up” (not entirely their fault) the HTML in comments like this a ton. Jetpack offers Markdown in comments, which is a massive improvement because it becomes so easy to use backticks. I think native WordPress should support that. But even then, not everyone knows Markdown, let alone how it deals with HTML (e.g. when does it escape HTML and when does it not).
I’ve been thinking about this for a decade and I’m still not sure the best solution, but a whitelist seems like it could help a lot. For example, you can use a
<em> and it will make text italic, but a tag like
<section> is not on the whitelist and is automatically escaped.
Comments should be previewable.
A preview gives people a chance to make sure their comment looks right, and probably just as importantly, one more chance to think before hitting the submit button.
Replies should generate email notifications.
Jetpack offers a feature that allows users to subscribe either to your blog itself (email notifications of newly published posts) or to comments on the particular post the user is commenting on.
In the case of new blog post emails, those come from WordPress.com, and you don’t have any control over them (e.g. design control or control over what kind of posts trigger them). It’s still kind of a cool feature, but if you’re serious about delivering new content to users, you might be better off with a more custom workflow.
Notifying users of new comments seems like a great feature for any commenting system. When I leave a comment, I feel invested, and there is a good chance I want to follow the continued conversation. Although, even more likely, I’d just want to hear about replies to my specific comment. WordPress already generates so many emails for things, this doesn’t feel out of scope.
Replies should show parent comment(s).
When looking at the site itself, replies are fairly obvious. They are nested under the parent comment they reply to. Context is always there. But there are other places where you can see a reply comment and be totally missing that context:
- Email notifications of reply comments don’t include the parent thread
- The comments area in the admin (or WordPress app)
The later includes a “In Reply To [Name]” link, but all it does is link to the front end of the site where that parent comment lives, it doesn’t do anything extra helpful like expand inline or show a popup preview.
Comment emails should be better looking.
I have a plugin on CSS-Tricks called Clean Notifications that hasn’t been updated in 13 years and it still works just fine. All it does is clean up the emails so there aren’t long gnarly URL’s in them, and instead, just have regular HTML links.
I’d vote that the default WordPress-generated emails could have a whole round of design love. Basic HTML email usage would allow link usage and basic typography that would make them all much nicer.
Comment emails should have actionable links
There are links to Delete and Spam a comment, but they don’t actually do those things, they take you to a page where then you have to click another link to perform the action. If I’m auth’d, it should just do the action.
Comment actions (particularly leaving a new comment) should be doable without requiring a full page refresh. Full page refreshes feel old in the same way that lacking quick social auth feels old.
More comment actions
I’ve long run a plugin to help me “feature” or “bury” comments in a thread. It’s not particularly complex, as it just updates some metadata on individual comments, then lets me apply those states with a class and style them in CSS. I don’t know that all sites need this kind of thing, but… Jetpack offers the ability to add a button to “Like” a post like you can on WordPress.com. Why not comments too? If people could vote on comments, it could do useful things like allow the default sort of comments to be based on up-votes or likes rather than chronological order alone. I think people care far more about interesting comments than they do about seeing them in date-time order.
So perhaps additional comment actions could be…
- Report as spam
- Report as harmful (or a Code of Conduct violation)
- Save / Pin
Speaking of voting, if comments were owned by users, and comments had data about quality, perhaps users with lots of good comments could be rewarded in various ways. Right now, you essentially have to choose to either moderate all comments or not, but it could be that you only moderate comments from people with low/bad/no quality scores. Not to mention calling out comments in threads from known-good commenters.
Assuming we get some sort of voting system for comments, it makes sense for comments to be ordered by votes by default. Or at least an option for sorting in addition to the chronological order.
I think it would be neat if you could do all the things you can do on the back end with a comment on the front end. For example, edit the comment, delete it, spam it, update metadata, etc.
Permissions role for comment moderator
On sites with thriving comment threads (like all sites would be if they had these awesome changes amiright?) it would be nice to be able to invite trusted community members to moderate comment threads. Not admins of the whole site. Not authors or editors. Just people who have permission to deal with comments and comments alone.
This was partially inspired by Jeremy Felt’s recent post and partially a continuation of my own thoughts. Jeremy mentions ideas like private comments (interesting, but not mega compelling to me) and Webmentions support (yes please!). Maybe this will go somewhere.
How about a new Plugin doing all of this that you stated?
It would take more or less a month for me to build it.
What do you say
Can some of this be solved using the REST API? For example, avoiding page refresh. Notifying a user when their comment has a reply by adding middleware to send an email. Lazy loading comments with AJAX. Using ACF to add and upvote field and sorting by votes? And a few other things perhaps. I’m note sure but you tell me.
That would be awesome. I also thought about the same. I am not the most experienced WordPress developer but would love to contribute on something like this.
Well, that’s cool. Have you developed the Plugin already?
Glad to see this list Chris, comments are the one killer feature of WP that keeps me on WP (for about 15 years).
It’s a big differentiator against SSG and making them better would widen the gap between what WP can do and what a static site generator can
The plugin WP-Discuz does most if not all of this. But it is a bit clunky and the settings screens are not that intuitive. Everything you mentioned should be folded into core.