Introduction to what one would consider basic web communication
A few days ago I had written a post on my website and a colleague had written a reply on his own website. Because we were both using the W3C Webmention specification on our websites, my site received the notification of his response and displayed it in the comments section of my website. (This in and of itself is really magic enough–cross website @mentions!)
To reply back to him I previously would have written a separate second post on my site in turn to reply to his, thereby fragmenting the conversation across multiple posts and making it harder to follow the conversation. (This is somewhat similar to what Medium.com does with their commenting system as each reply/comment is its own standalone page.)
Instead, I’ve now been able to configure my website to allow me to write a reply directly to a response within my comments section admin UI (or even in the comments section of the original page itself), publish it, and have the comment be sent to his reply and display it there. Two copies for the price of one!

This means that now, WordPress-based websites (at least self-hosted versions running the WordPress.org code) can easily and simply allow multiple parties to write posts on their own sites and participate in multi-sided conversations back and forth while all parties maintain copies of all sides of the conversation on their own websites in a way that maintains all of the context. As a result, if one site should be shut down or disappear, the remaining websites will still have a fully archived copy of the entire conversation thread. (Let’s hear it for the resilience of the web!)
What is happening?
This functionality is seemingly so simple that one is left wondering:
- “Why wasn’t this baked into WordPress (and the rest of the web) from the start?”
- “Why wasn’t this built after the rise of Twitter, Facebook, or other websites which do this as a basic function?”
- “How can I get it tout suite?!” (aka gimme, gimme, gimme, and right now!!!)
While seeming simple, the technical hurdles aren’t necessarily because there had previously never been a universal protocol for the web to allow it. (The Webmentions spec now makes it possible.) Sites like Facebook, Twitter, and others enable it because they’ve got a highly closed and highly customized environment that makes it a simpler problem to solve. In fact, even old-school web-based bulletin boards allowed this!
But even within social media one will immediately notice that you can’t use your Facebook account to reply to a Twitter account. And why not?! (While the web would be far better if one website or page could talk to another, these sites don’t for the simple economic reason that they want you using only their site and not others, and not enabling this functionality keeps you locked into what they’re selling.)
I’ll detail the basic set up below, but thought that it would be highly illustrative to have a diagram of what’s physically happening in case the description above seems a bit confusing to picture properly. I’ll depict two websites, each in their own column and color-coded so that content from site A is one color while content from site B is another color.

Each site composes and owns its own content and sends the replies to the other site.
It really seems nearly incomprehensible to me how this hasn’t been built into the core functionality of the web from the beginning of at least the blogosphere. Yet here we are, and somehow I’m demonstrating how to do this from one WordPress site to another via the open web in 2017. To me this is the entire difference between a true Internet and just using someone else’s intranet.
Implementation
Prerequisites
While this general functionality is doable on any website, I’ll stick to enabling it specifically on WordPress, a content management system that is powering roughly 30% of all websites on the internet. You’ll naturally need your own self-hosted WordPress-based website with a few custom plugins and a modern semantic-based theme. (Those interested in setting it up on other platforms are more than welcome to explore the resources of the IndieWeb wiki and their chat which has a wealth of resources.)
Plugins
As a minimum set you’ll want to have the following list of plugins enabled and configured:
- Webmentions
- Semantic Linkbacks
- IndieWeb Plugin (optional)
Other instructions and help for setting these up and configuring them can be found on the IndieWeb wiki, though not all of the steps there are necessarily required for this functionality.
Themes
Ideally this all should function regardless of the theme you have chosen, but WordPress only provides the most basic support for microformats version 1 and doesn’t support the more modern version 2 out of the box. As a result, the display of comments from site to site may be a bit wonky depending on how supportive your particular theme is of the microformats standards. As you can see I’m using a relatively standard version of the TwentySixteen theme without a lot of customization and getting some reasonable results. If you have a choice, I’d recommend one of the following specific themes which have solid semantic markup:
Plugin
The final plugin that enables sending comments from one comment section to another is the WordPress Webmention for Comments plugin. As it is still somewhat experimental and is not available in the WordPress repository, you’ll need to download it from GitHub and activate it. That’s it! There aren’t any settings or anything else to configure.
Use
With the plugin installed, you should now be able to send comments and replies to replies directly within your comments admin UI (or directly within your comments section in individual pages, though this can not require additional clicks to get there, but you also don’t have the benefit of the admin editor either).
There is one current caveat however. For the plugin to actually send the webmention properly, it will need to have a URL in your reply that includes the microformats u-in-reply-to class. Currently you’ll need to do this manually until the plugin can properly parse and target the fragmentions for the comments properly. I hope the functionality can be added to the plugin to make the experience seamless in the future.
So what does this u-in-reply-to part actually look like? Here’s an example of the one I used to send my reply:
<a class="u-in-reply-to" href="https://islandinthenet.com/manually-adding-microfomats-markup/">Khürt</a>
The class tells the receiving site that the webmention is a reply and to display it as such and the URL is necessary for your webmention plugin to know where to send the notification. You’d simply need to change the URL and the word (or words) that appear between the anchor tags.
If you want to have a hidden link and still send a webmention you could potentially add your link to a zero width space as well. This would look like the following:
<a class="u-in-reply-to" href="http://www.example.com">​</a>
Based on my experiments, using a <link> via HTML will work, but it will send it as a plain webmention to the site and it won’t show up natively as a reply.
Sadly, a plain text reply doesn’t work (yet), but hopefully some simple changes could be made to force it to using the common fragmentions pattern that WordPress uses for replies.
Interestingly this capability has been around for a while, it just hasn’t been well documented or described. I hope now that those with WordPress sites that already support Webmentions will have a better idea what this plugin is doing and how works.
Future
Eventually one might expect that all the bugs in the system get worked out and the sub-plugin for sending comment Webmentions will be rolled up into the main Webmentions plugin, which incidentally handles fragmentions already.
Caveats
In addition to the notes above, I will say that this is still technically experimental code not running on many websites, so its functionality may not be exact or perfect in actual use, though in experimenting with it I have found it to be very stable. I would recommend checking that the replies actually post to the receiving site, which incidentally must be able to accept webmentions. If the receiving website doesn’t have webmention support, one will need to manually cut and paste the content there (and likely check the receive notification of replies via email, so you can stay apprised of future replies).
You can check the receiving site’s webmention support in most browsers by right clicking and viewing the pages source. Within the source one should see code in the <head> section of the page which indicates there is a webmention endpoint. Here is an example of the code typically injected into WordPress websites that you’d be looking for:
<link rel="webmention" href="http://example.com/wp-json/webmention/1.0/endpoint" />
<link rel="http://webmention.org/" href="http://example.com/wp-json/webmention/1.0/endpoint" />
Also keep in mind that some users moderate their comments, so that even though your mention was sent, they may need to approve it prior to it displaying on the page.
If you do notice problems or issues or have quirks, please file the issue with as full a description of what you did and what resulted as you can so that it can be troubleshot and made to work not only for you, but hopefully work better for everyone else.
Give it a try
So you’ve implemented everything above? Go ahead and write a reply on your own WordPress website and send me a webmention! I’ll do my best to reply directly to you so you can send another reply to make sure you’ve got things working properly.
Once you’re set, go forward and continue helping to make the web a better place.
Special Thanks
I wanted to take a moment to give special thanks to Aaron Parecki, Matthias Pfefferle, and David Shanske who have done most of the Herculean work to get this and related functionality working. And thanks also to all who make up the IndieWeb community that are pushing the boundaries of what the web is and what it can accomplish. And finally, thanks to Khürt Williams who became the unwitting guinea pig for my first attempt at this. Thank you all!
Looks interesting, adding it to my reading list.
Chris, happy I was able to help. I’ve already installed the code. It works. I don’t see any issues so far.
Threaded Replies and Comments with Webmentions in WordPress by Chris Aldrich (Chris Aldrich | BoffoSocko)
Hi Chris, please reply to this – I’m curious what the webmention my site gets looks like!
, I’m still doing some modifications to my mark up to improve what is sent using this method, since it is presently slightly different than a traditional webmention. But either way, here you go!
Hi Chris, please reply to this – I’m curious what the webmention my site gets looks like!
Threaded Replies and Comments with Webmentions in WordPress by Chris Aldrich (Chris Aldrich | BoffoSocko)
This is fracking bloody awesome!
Syndication Links :
islandlife.blog TwitterTwitter
Like this:
Like Loading…
<img alt="" src="https://secure.gravatar.com/avatar/7fa94585b903e6e183d6164b16b1b573?s=42&r=pg" srcset=""><h2><span>Author:</span> Khürt Williams</h2>
Gen X-er near Princeton University in Montgomery Township, New Jersey, with a passion for aquariums, terrariums, technology, and photography. I love hiking in the woods, and my eclectic musical tastes span soca, Afrobeat, calypso, 1990s rap, grunge rock, and alternative genres. <a href="https://islandinthenet.com/author/khurtwilliams/" rel="author">
View all posts by Khürt Williams </a>
Syndicated copies:
Oh, wow. That’s amazing; I didn’t know this was something possible on the web.
Usenet shall be reborn!
Threaded Replies and Comments with Webmentions in WordPress by Chris AldrichChris Aldrich (Chris Aldrich | BoffoSocko) Introduction to what one would consider basic web communication
A few days ago I had written a post on my website and a colleague had written a reply on his own website. Because we were both using the W3C Webmention specification on our websites, my site received the notification of his response an…
Have you tried it yet ?
Threaded Replies and Comments with Webmentions in WordPress boffosocko.com/2017/12/15/thr…
Threaded Replies and Comments with Webmentions in WordPress #IndieWeb boffosocko.com/2017/12/15/thr…
Threaded Replies and Comments with Webmentions in WordPress
#webmentions#syndication #web #internet #wp #wordpress #indieweb
Not yet, I haven’t yet really got the hang of replies in general, but I’ll be sure to try it out soon. And thanks for the great post.
A reflection on developing a site building upon the ideas of the #IndieWeb to bring together all my disparate pieces around the web in one place.
Just when I thought I had enough sites, I decided to create another one. A feed that could be used in a platform like Micro.blog. My intent this time was to create a space where I could reclaim my pieces on the web. In part I was inspired by Tom Woodward’s API driven portfolio, as well as Alan Levine’s concept of co-claiming.
I was also interested in exploring the possibility of WordPress beyond the standard post format and the implications that this has with the choice of themes. Associated with this, I wondered if there was a possibility of automating the sharing of content created elsewhere, such as videos and images.
I started the site by creating three key categories: participation, posts and creations. Each offering the potential to be broken down further.
Participation
My first step was to focus on presentations and publications. This involved transferring my various slides, resources and publications from a single page on my main blog to separate posts. The focus on one page worked in the beginning, but started to become busy as more and more items were added, even if I added Page Jumps.
My next step was to capture the various references and contributions on the web. Similar to what Audrey Watters does with her ‘In the News’ posts. These extracts include:
Podcasts (Ed Tech Crew, Teachers Education Review, Today in Digital Education and Design and Play)
Newsletter Contributions (ICTEV, AEU and eSMART)
Participation (Why a Creative Commons Certificate, Alan Levine’s ‘Story of Connection’, Amy Burvall’s ‘#3ofme’ Project, EduTweetOz and various Twitter chats)
Although I am still thinking about how I could visually present all these posts to tell a clearer story, as Tom Woodward and Ian O’Byrne have done, I think splitting them into individual posts is more functional. It also means that when I present I can link to resources that might be kept on an event page, rather than continually update a particular blog post all the time.
Posts
When I started Read Write Collect, I wondered about creating a feed of all my posts, whether it be on social media, my Wikity site, contributions to other blogs and posts from this blog. I also wanted to somehow automate this process.
I started by dragging in content from sites that I was no longer using. For example, a few years ago, I created an instance of Known for shorter, incomplete thoughts and ideas. It was framed around the question of ‘what if’? I decided to import this content.
I also decided to make a copy of my two newsletters (Read Write Respond and eLearn Updates) posted in third-party sites, such as Tiny Letter and Global2. I was not sure whether to publish these or to keep them private. However, I made them public and maybe will stop using those other spaces when I have worked out a clear workflow.
In regards to other content spread around the web, such as my Diigo bookmarks and Wikity cards, I have yet to work out how I will manage these pieces. I started exploring Zapier and some built-in solutions, but have since fallen back to IFTTT. I am mindful though of depending on third-party solutions.
For the posts on this site, I have yet to find a workflow I am happy with. In part, I am unsure what Post Kind I should use – Article or Bookmark – and how I would structure each post. I guess I could close the comments and provide a summary, this is something Doug Belshaw does when sharing his DML Central articles, but I am not sure how I would do this for all my 400+ posts, especially as writing extracts has only been a new addition to my process.
It feels that the further I have dived into the site, the more my priorities changed. I began to explore other aspects of the #IndieWeb. I had installed the plugin when I set the site up, something I had done with this site and had therefore done out of habit. However, I started to wonder what else I could do. My desire to automate was replaced by an interest in control over my presence. This led me to start replying to posts from my blog. Although it can be argued that this process involves more effort, it has resulted in me being more mindful of the comments that I leave. This is something Chris Aldrich touches upon in his introduction to the IndieWeb.
It also touches on Audrey Watters’ call for a more ethical (and equitable) practice in her rethinking of comments:
I would like to think that as there is more take-up of the microformats standards that things like this will become more of the norm as further generations take it up.
Creations
The other pieces that I wanted to collect together were my various creations on the web, whether they be images, videos and audio. I have tinkered with posting to Flickr before with another Known instance, but gave up when it seemed to break. I think that this was as much frustration at the workflow as it was lack of perseverance. I therefore wonder about co-claiming by posting to Flickr and then collecting a weekly or even monthly summary on my own site. I know that this is something Tom Woodward does. As with my bookmarks, I am currently tinkering with IFTTT for this, but would like my own solution in the long run.
Like Flickr, I find publishing to YouTube an easier solution in regards to the few videos that I have. One of my interests was exploring the possibility to generate posts for older videos. Although IFTTT will create a post for videos just published, I was after an automated workflow that might go back through a channel and produce a post for each video. I found a plugin that said it would do it, but I have not managed to get it to do anything so am sceptical about purchasing the premium version. I also tested out posting via RSS, but this failed to embed the content.
In addition to images and video, I have been a long contributor to other people’s podcasts, but never really found the time and space to do my own. I was therefore taken by the idea of microcasting. The intent behind microcasting is that recordings are meant to be short recordings with minimal production. I have therefore taken to recording with Voxer and posting the MP3 in a post. I also syndicate this to Huffduffer so that others can listen as a podcast.
So that is my new site so far. In my next iteration, I am interested in investigating ‘Post Kinds to further to document other elements, such as what I am listening to and reading, especially in regards to long reads. This may replace my Awesome Tables, especially if they start charging. I am also interested in capturing more of my creations, such as my Instagram posts and gifs shared at Giphy. I am not sure if that constitutes a ‘commitment‘, but it is at least a start.
So what about you? What is something you are working on at the moment? Do you have any thoughts and suggestions for my new space? As always, comments welcome.
Also posted on IndieNews
If you enjoy what you read here, feel free to sign up for my monthly newsletter to catch up on all things learning, edtech and storytelling.Share this:EmailRedditTwitterPocketTumblrLinkedInLike this:Like Loading…
Co-claiming and Gathering Together – Developing Read Write Collect by Aaron Davis is licensed under a Creative Commons Attribution-ShareAlike 4.0 International License.
Great news for #indieWeb enthusiasts and anyone who wants to own our content. Eager to try this #WordPress plugin. Thanks for the great writeup @ChrisAldrich.
This is a collection of code that I often turn to when working with WordPress
Every time that I feel comfortable with my level of knowledge associated with WordPress, there is a problem that leads me to discover a particular attribute that I don’t know how I lived without. This time it is the code seemingly obfuscated beyond the WYSIWIG editor and the dashboard.
For some this code is about command line, while others it is about the bashing out the building blocks. My interest here is the everyday code, the little snippets that find there way in here or there while I work with WordPress, many of which have come from wandering through Chris Aldrich’s commonplace blog:
Webmentions
Webmentions are the building block for conversations across the web. However, with WordPress, they often get caught in moderation and/or flagged as spam by Akismet and other spam filter plugins. To prevent this, you can add this PHP snippet to your theme’s functions.php file:
function unspam_webmentions($approved, $commentdata) { return $commentdata['comment_type'] == 'webmention' ? 1 : $approved; } add_filter('pre_comment_approved', 'unspam_webmentions', '99', 2);
Alan Levine has documented the process of creating a child theme, which is useful when customising the code, while Gregor Morrill has developed code to approve webmentions from domains previously approved.
Microformats
Microformats is a data format built upon adopted standards and prior developments. There are a number of specifications, which can be manually added within the existing HTML. It provides the foundation for software to automatically process information. People like David Shanske and Matthias Pfefferle have developed plugins and themes to mark-up content in the backend. You can also use this site to check the microformats on your site, while for a more extensive introduction, listen to Tantek Çelik on the future of web apps.
Two microformats I have worked with are comments and rel=me.
Comment
Although the appropriate microformats are usually built into the Webmentions plugin. The plugin for theaded comments can be a bit more tempremental. Chris Aldrich recommends manually adding the reply class and URL just to make sure:
<a class="u-in-reply-to" href="http://www.example.com"></a>
I have come to do this out of habit for replies now.
Rel-me
Another microformat incorperated into many Indieweb sites is Rel-me. It is used to consolidate identity, as well as domain sign in.
<ul> <li><a href="https://twitter.com/aaronpk" rel="me">@aaronpk on Twitter</a></li> <li><a href="https://github.com/aaronpk" rel="me">Github</a></li> <li><a href="https://google.com/+aaronpk" rel="me">Google</a></li> <li><a href="mailto:me@example.com" rel="me">me@example.com</a></li></ul>
Chris Aldrich has taken rel-me to its extremes by creating a page in which he records all his accounts. I have also started my own. For more on rel-me, watch Ryan Barrett’s keynote at IndieWeb Summit 2017.
Page Bookmarks
I remember coming across in plugin in Edublogs that allowed you to add a table of contents. This reminded me of the functionality in Google Docs and one of the things I noticed in both was the presence of a hashtag at the end of the URL. (Interestingly, now every heading in Google Docs has a unique identifier automatically created.) In Docs, this is something that can be added using the Bookmark feature, I wondered if the same could be done in WordPress. I discovered that within the tags, you insert ‘name=”unique-name”‘:
<a name="unique-name">Target Text</a>
This can then be used to guide readers to a specific point in your text.
Custom URLs for Post Kinds
Using the Post Kinds plugin provides a list a unique urls associated with the kinds of posts on the site. Chris Aldrich provides some guides in how to use these to create custom urls to generate a specific post screen. This can then be used to create a bookmarklet:
http://example.com/wp-admin/post-new.php?kind=bookmark&kindurl=@url
Dariusz Kuśnierek provides some other examples of custom URLs, which help in U deratamding the way urls work in general.
RSS Feeds
RSS provides a means of following a site without checking in all of the time. To access a feed to follow in WordPress, you simply add ‘/feed/’ to the end:
http://www.example.com/feed
As some feeds can contain a range of content, it is possible to hone down to particular categories by adding ‘?cat=[category id]’ to the end.
http://www.example.com/feed?cat=[category id]
This can be useful if you only want to follow a specific subject or area.
Taking this a step further, you can also produce an RSS based on Post Kinds. Although not all blogs use these, for those that do it can be a useful demarcation. Similar to categories, you add ‘?kind=type’ to the end of the feed.
http://www.example.com/feed/?kind=bookmark
For more on RSS feeds, see this post from Chris Aldrich.
OPML
Where as RSS is used for a single feed, OPML allows a user to aggregate. I have written about them before. It is possible to store an OPML in WordPress. To access this you add the append ‘/wp-links-opml.php’ to the end.
http://www.example.com/wp-links-opml.php
In addition to this, Chris Aldrich has documented how to split a file into categories:
?link_cat=[category id]
I have yet to categorise my links, however Aldrich provides an extensive example.
So what about you? What little bits of code do you use? As always, comments welcome.
If you enjoy what you read here, feel free to sign up for my monthly newsletter to catch up on all things learning, edtech and storytelling.Share this:EmailRedditTwitterPocketTumblrLinkedInLike this:Like Loading…
Hidden in the Code by Aaron Davis is licensed under a Creative Commons Attribution-ShareAlike 4.0 International License.
Syndicated copies:
@c Just read over your post on Threaded Replies at Boffosocko. Thanks for explaining the implementation so clearly and with such enthusiasm. I’m still working at understanding the nuances of the Indie Web with my own site. Your post helps.
@andrewford I keep a collection of related posts that you might appreciate as well: http://boffosocko.com/research/indieweb/
Syndicated copies:
@c Thanks for the heads-up. I’m just reading about the Post Kinds plugin. I’m trying to use the provided WordPress remove_filter code in functions.php so I can customise the display, but it doesn’t appear to prevent the plugin from injecting it’s code before the content. Do you know anything about how this is meant to work?
Syndicated copies:
@andrewford I’ve not tried that specifically before, so I’m not 100% sure. I know you can customize individual templates as well too. Your best bet is to catch GWG in the IndieWeb WordPress chat channel. He wrote the plugin and is always happy to help. He’s also home most of the day today for a snow day… https://chat.indieweb.org/wordpress/
Syndicated copies:
@sadlerjw You’ve certainly found a few of the remaining pain points within the broader community and specifically with WordPress. There are obviously some UI bits like properly threaded conversations across multiple syndicated silos that could be better. I’ve written a tad about how threaded comments work between sites using WordPress, though didn’t touch on the idea of doing so also using Twitter or micro.blog: http://boffosocko.com/2017/12/15/threaded-replies-with-webmentions-in-wordpress/
Ideally in the end, everything would support Webmention and needing to syndicate to outside services would be somewhat moot.
As long as the conversation for something on micro.blog starts on your own site, the replies that occur there will generally flow back to your site via Webmention, but sadly one needs to use some manual chicanery to get a similar back and forth effect with other services like Twitter.
I suspect that in the coming months/year(s) things on this end will improve as the community marches forward.
Either way, congratulations on what you’ve done with you’re site! Hope to see you around either via reader or micro.blog.
Syndicated copies:
This is fascinating Chris, thanks for sharing. This functionality reminds me a bit of the GNU Social plug-in for WordPress, which was created to allow comments on a WP blog to appear both on the blog, and in the poster’s timeline on the GNU Social host they microblog on.
I’m not sure if this WP-plugin is being actively used any more. If it is, it will soon need a major rebuild to use the ActivityPub standard that will effectively replace OStatus over the next year or two, as the flagship standard for decentralized microblogging. It would then become compatible not just with GNU Social, but with all the federated social network apps collectively known as the “fediverse” (except for Diaspora).
Further research shows there’s already more actively developed OStatus plug-in for WordPress that supports both GNU Social and Mastodon, and a bunch of other WP-plugins for Mastodon, which between them provide some or all of the required functions for AP support. There’s also the WordPress plug-in for the Charitable platform, who are now promoting their AP support. I presume all of this work depends on the WP-plugin for ActivityStreams, one of the protocols used in both OStatus and ActivityPub.
BTW Somewhat ironic that were are both advocates of a decentralized web, and critics of the corporate datafarms (“someone else’s intranet” as you put it), yet here we are making contact on a corporate datafarm, created by a founder of one of the current titans of datafarming 😉 I’m curious, do you mirror your writing here to increase discoverability, or do you write separate streams of content for your WP site and for Medium?
Syndicated copies:
Danyl, sorry I hadn’t seen your response until now. I don’t spend much time on Medium and don’t see notifications from it.
I’m all-in on the IndieWeb philosophy of POSSE (Post to your Own Site, Syndicate Elsewhere), so all my content originates on my personal site and is syndicated out, typically to reach friends, family, and additional audience. Most platforms I syndicate to, I have means of getting responses backfed to my site using Webmention to provide notifications of interaction. Sadly Medium doesn’t play nicely on this front.
I watch a lot of this space pretty closely and know most of the programmers and players in the space. HongPong, who you link to, I know more as a Drupalista than a WordPresser. The OStatus/AP related plugins you’ve linked to are from Mathias Pfefferle who is one of my favorite programmers and my personal site relies on quite a bit of his work.
One effort you have missed which is very interesting is Ryan Barrett’s Fed Brid.gy effort which is well worth looking at for it’s ability to work across multiple platforms and bridge the worlds of IndieWeb and Activity Pub protocols.
Syndicated copies:
Bookmarked Hidden in the Code by Aaron (Read Write Respond) This is a collection of code that I often turn to when working with WordPress Every time that I feel comfortable with my level of knowledge associated with WordPress, there is a problem that leads me to discover a particular attribute that I don’t know how I lived without. This time it is the code…
Not sure how I missed this. Some useful stuff for indieweb in WordPress. More links and rabbit holes in the comments too. Bookmarked for the summer holidays. Comment
Although the appropriate microformats are usually built into the Webmentions plugin. The plugin for theaded comments can be a bit more tempremental. Chris Aldrich recommends manually adding the reply class and URL just to make sure:
I have come to do this out of habit for replies now.
Among other interesting snippets. Like this:Like Loading…
I’ve written about threading comments from one WordPress website to another before. I’ve long suspected this type of thing could be done with Twitter, but never really bothered with it or necessarily needed to do it, though I’ve often seen cases where others might have wanted to do this.
For a post today, I wrote on my own site and syndicated it to Twitter and got a reply back via webmention through Brid.gy. This process happens for me almost every day, and this all by itself feels magical. The real magic however, and I don’t think I’ve done this before or seen it done, was that I replied to the backfed comment on my site inline and manually syndicated to Twitter using a permalink of the form
http://www.example.com/standard-permalink-structure/?replytocom=57527#respond, where 57527 is the particular comment ID for my inline comment. (This comment ID can typically be found by hovering over the “Reply” or “Comment” button on one’s WordPress website in most browsers.)Where to find the comment ID to provide the proper permalink to get properly nested comments backfed to your site.
When a reply to my second syndicated Twitter post came in, Brid.gy properly sent it as a comment to my comment AND nested it properly!
I’ve now got a nested copy of the conversation on my site that is identical to the one on Twitter.
I suspect that by carefully choosing the URL structure you syndicate to Twitter, you’ll allow yourself more control over how backfed comments from Brid.gy nest (or don’t) in your response section on your site.
Perhaps even more powerfully, non-WordPress-based websites could also use these permalinks structures for composing their replies to WordPress sites to have their replies nest properly too. I think I’ve seen Aaron Parecki do this in the wild.
Since the WordPress Webmention plugin now includes functionality for sending webmentions directly from the comments section, I’ll have to double check that the microformats on my comments are properly marked up to see if I can start leveraging Brid.gy publish functionality to send threaded replies to Twitter automatically. Or perhaps work on something that will allow automatic replies via Twitter API. Hmmm…
Despite the fact that this could all be a bit more automated, the fact that one can easily do threaded replies between WordPress and Twitter makes me quite happy.
Thread onward!
For more on my IndieWeb explorations with Twitter, see my IndieWeb Research page.
Syndicated copies:
Op Twitter, Instagram, Facebook, Mastodon en LinkedIn is het vrij normaal om andere gebruikers te vermelden door hun accountnaam in je update te noemen. Groot gemaakt door Twitter is de @-mention nu een bekend fenomeen op het web. De netwerken zijn zo slim om deze gebruiker een notificatie te sturen, die dan weet dat hij is vermeld in de update. Wat weer interactie op gang kan brengen, meer tijd op het netwerk zelf etcetera. Ik vind het een fantastisch mechanisme wat inmiddels gemeengoed is op het sociale web. Helaas hebben de netwerken kunstmatige muren gebouwd rondom hun eigen notificaties. Als je er over nadenkt is dat een vreemde situatie. Het web is van oorsprong een open netwerk waar je ongeacht de plaats waar je bent, met elkaar kunt communiceren
Maar ik kan met mijn Twitter account niet een vriend op LinkedIn account noemen zodat deze een notificatie krijgt. Of als ik een Facebook post zie waar ik op wil reageren, dan moet ik dat via Facebook doen. Ik kan niet op mijn Mastodon tijdlijn iets posten met een @-mention naar een Facebook gebruiker. Het businessmodel van het internet is je aandacht vooral op het eigen netwerk te houden, je tijd daar te maximaliseren zodat de waarde van het netwerk groter wordt. Niet voor jou, maar voor aandeelhouders en adverteerders.
Stel je eens voor dat je met een KPN abonnement alleen kunt bellen en appen met andere KPN gebruikers. Wil je iemand bellen die een T-Mobile abonnement heeft, dan is dat niet mogelijk. Er zouden vrij snel vragen uit de politiek en publiek komen, die verandering eisen.
Wat zijn webmentions?
De laatste jaren is er gewerkt aan Webmentions. Dit is een nieuw protocol, makkelijker te implementeren dan de oudere pingbacks, minder spamgevoelig en het geeft je de mogelijkheid om je eigen website als een node in een sociaal netwerk te gebruiken. Sinds de officiële bekendmaking begin 2017 zijn er al meer dan 1 miljoen webmentions verstuurd. Het is een open systeem, wat betekent dat persoonlijke websites van alle soorten en maten met elkaar kunnen communiceren. Ongeacht welk CMS systeem er achter zit, op wat voor server het draait of hoe de technologie draait. Het belangrijkste is dat de site het protocol moet ondersteunen en de binnenkomende webmentions kan weergeven. Op deze manier kan een WordPress blog communiceren met een Jekyll blog of een site op het Micro.blog netwerk.
Webmention is een gestandaardiseerde wijze waarmee een site een notificatie kan sturen naar een andere site om te laten weten dat de eerste een link bevat naar de laatste. Precies zoals je het kent van alle sociale netwerken. Maar dan zonder de kunstmatige muren. Webmentions stellen het web weer open, zoals het oorspronkelijk is bedoeld. Als ontvangende site kun je tevens de webmention verifiëren op echtheid en er voor kiezen dat het bericht waar je in bent genoemd onder jouw post wordt geplaatst. Zo kan er een discussie over een artikel plaatsvinden onder het artikel, waarbij alle deelnemers in de discussie hun updates plaatsen op de eigen site.
Het systeem werkt als volgt (Met dank aan Sebastiaan en Chris!)
Mario heeft een weblog waar hij een post schrijft over zijn favoriete hobby, over paddestoelen springen en muntjes vangen.
Luigi heeft eveneens zijn eigen blog. Hij vindt Mario’s post geweldig en schrijft op zijn eigen blog een artikel, waar hij linkt naar de post van Mario.
Als Luigi zijn artikel publiceert, zal zijn publicatie-software automatisch de software van Mario’s blog een notificatie sturen dat zijn artikel is gelinkt bij Luigi. Dit is het Webmention protocol.
De publicatiesoftware van Mario verifieert dat de post van Luigi inderdaad een link bevat naar zijn eigen artikel. Mario’s software heeft de mogelijkheid om onder het artikel van Mario automatisch een reactie te plaatsen die verwijst naar Luigi’s post. Dit is de Webmention weergave.
Mario kan in de templates van zijn blog zelf bepalen wat hij op welke manier laat zien van Luigi’s bericht. Alleen een melding dat Luigi iets heeft gepost, of een deel van de post bijgevoegd, een link terug, een avatar.
Sterker nog, Mario kan nu weer op zijn eigen site reageren op Luigi’s post door een nieuwe post te schrijven, waarin hij Luigi’s reactie vermeld. Zo ontvangt Luigi weer een webmention van Mario. Zo kunnen websites met elkaar communiceren zonder tussenkomst van een derde partij. De start van nieuwe sociale netwerken?
Webmentions bieden rijke interactie mogelijkheden
Tot nu hebben we het alleen over reacties op elkaar posts. Webmention is een protocol wat veel andere interactie-mogelijkheden in zicht heeft. Je kunt aangeven dat je een site hebt gebookmarkt, een like hebt gegeven, een RSVP bij een event doet, iets hebt geluisterd, bekeken of gelezen. De webmention zelf is een heel eenvoudig protocol, maar het open web biedt enorme mogelijkheden om er op verder te bouwen. Hoe werkt dit in combinatie met WordPress plugins? Dat gaan we nu bekijken.
Hoe installeer je de WordPress Webmention plugin?
De Webmention plugin is te vinden in je beheer onder Indieweb > Extensions of via de officiele WordPress plugin repository. Installeer en activeer de plugin om er mee te kunnen werken.
Wat stel je in na installatie
Na de activatie van de Webmention plugin vind je in het beheer onder het Indieweb tab de configuratie mogelijkheden van de Webmention plugin. Je ziet direct een notificatie op het scherm. De plugin verzorgt primair de werking van het Webmention protocol tussen jouw site en andere sites. De weergave van de binnenkomende Webmentions kan er vreemd uit zien, omdat er zoveel smaken publicatiesoftware en Webmention implementaties zijn. Je krijgt de aanbeveling om de Semantic Linkbacks Plugin te installeren. Deze plugin leg ik uit in een volgende blogpost. Voor nu zal ik deze stappen doen zonder de genoemde plugin.
Webmention Sender
Allereerst stellen we in hoe jouw website Webmentions zal versturen. Hier is één optie, namelijk de Self-Ping settings. Het zal geregeld voorkomen dat je linkt naar oudere artikelen op je eigen site. Wil je dan dat er Webmentions naar jezelf worden verstuurd, zodat bij de oudere artikelen weer links komen te staan naar meer recente posts op je site? Er zijn scenario’s waar dat interessant kan zijn. Je kunt deze optie uitzetten als je het liever niet hebt. Dit kan door de self-pings op dezelfde URL uit te zetten, door self-pings op je complete domein uit te schakelen en het uitschakelen van webmentions als je een afbeelding plaatst op je eigen site. In WordPress heeft elke afbeelding standaard zijn eigen pagina. Als je in je artikel een afbeelding plaatst, kan een webmention gaan naar de afbeeldingspagina. Nogmaals, het kan een interessant scenario zijn in sommige gevallen, maar veelal is het onnodig.
Webmention Receiver
Met de plugin kun je eveneens webmentions ontvangen. Hier heb je ook een aantal configuratie mogelijkheden. Allereerst kun je kiezen voor welke post-types je webmentions wilt ontvangen. Alleen je blogposts, of ook je pagina’s? Tevens kun je een standaard pagina kiezen voor webmentions die binnenkomen op je homepage. Als iemand dus linkt naar je homepage in plaats van een specifieke artikelpagina, kun je deze ook weergeven op een aparte pagina. Of op de homepage zelf natuurlijk. (Let op: Deze functionaliteit is nog niet 100% werkend na installatie, zie onder bij Eigenaardigheden hoe je dit kunt fixen…)
Vervolgens kun je een whitelist maken van domeinen waar je automatisch webmentions van wilt ontvangen. Als een binnenkomende webmention niet in deze lijst staat zul je hem eerst moeten goedkeuren.
Nu je webmentions kunt ontvangen is het mogelijk dat je naast je reactieformulier een extra veld toevoegt. Als we teruggaan naar bovenstaande voorbeeld, stel dat Luigi’s site geen webmentions kan versturen. Nu kan Luigi onder de post van Mario de URL plaatsen van zijn artikel. Als in dit artikel een link staat naar de post van Mario, dan zal de plugin van Mario de post van Luigi accepteren en weergeven als reactie.
Tenslotte kun je er nog voor kiezen om avatars wel of niet weer te geven bij de reacties.
Hoe test je de Webmention plugin
Er zijn allerlei manieren om de Webmention plugin te testen, zowel met een testsuite als je eigen site of andere sites. Zo kun je prima mijn testsite gebruiken om je implementatie van Webmentions te testen. Je kunt eventueel oudere blogposts van jezelf gebruiken om naar te linken en te zien of webmentions binnenkomen.
De pagina Webmention Rocks geeft je allerlei instrumenten om webmentions te testen op je site. Het gaat buiten de scope van dit artikel om de complete testsuite uit te leggen. Kort gezegd, met het blokje “Webmention Endpoint Discovery” kun je een post maken op je eigen site met links naar de verschillende tests op de suite. Hiermee test je het versturen van webmentions van jouw site naar andere sites. Met het blokje “Testing your Receiver” kun je nagaan of jouw site webmentions kan ontvangen en weergeven. Mijn advies is om hier een testpost of oudere post voor te gebruiken.
Eigenaardigheden
De Webmention plugin is een paar jaar oud. Zoals ik in het begin al zei, hij werkt eigenlijk het beste met de Semantic Linkback Plugin om de weergave van Webmentions beter te maken op je site. De makers van deze plugins zijn bezig om de twee samen te voegen. Ten tijde van publicatie van dit artikel was er nog geen tijdlijn bekend. Er zijn nog altijd een paar eigenaardigheden in de plugin, die niet altijd even eenvoudig zijn op te lossen.
Whitelisting werkt niet consistent
In de plugin kun je een whitelist maken van domeinen waar je automatisch de webmentions van wilt accepteren. Mijn ervaring is dat dit niet altijd 100% werkt. Ondanks dat ik domeinen toevoeg aan de whitelist moet ik webmentions van diezelfde domeinen toch nog goedkeuren voor plaatsing. Hou dus je reacties in de gaten, want je zult zo nu en dan reacties alsnog moeten goedkeuren.
Webmention naar je homepage.
Webmentions naar je homepage sturen werkt nog niet direct na het instellen. Je moet hier nog wat extra stappen voor zetten. Op veel WordPress sites is het standaard niet mogelijk om reacties te sturen naar pagina’s. Dit moet je expliciet aanzetten per pagina. Het probleem is dat dit met je homepage, een lijst met je laatste blogposts, niet direct kan. Daarom kies je in de configuratie van je Webmention plugin een pagina waar je de webmentions wilt ontvangen.
Vervolgens ga je naar het edit scherm voor deze specifieke pagina en zet je de optie aan “Reacties toestaan”. Dit is er zowel in de Gutenberg editor en de klassieke editor. Maar je moet het aanpassen in de klassieke editor, want de optie “Reacties toestaan” zorgt er alleen voor dat er op je pagina reacties worden weergegeven. In de klassieke editor zit eveneens de optie “Trackbacks en pingbacks toestaan” die je moet aanzetten om webmentions te ontvangen op je pagina. Pas dan zul je webmentions kunnen ontvangen op je homepage en ze weergeven op de speciale pagina die je opgeeft in de configuratie van de Webmentions Plugin.
Hoe nu verder?
Met dit artikel heb ik je een eerste indruk gegeven hoe @-mentions tussen websites kunnen communiceren en worden weergegeven. Er is al veel over webmentions geschreven, met name de technische achtergrond van het protocol. Wil je meer weten over webmentions, dan kan ik je de volgende artikelen aanraden:
A List Apart: Webmentions: Enabling Better Communication on the Internet
Aaron Parecki’s Sending your First Webmention from Scratch
Sebastiaan Andeweg’s fraaie uitleg De magie van webmentions
Webmentions zijn naar mijn idee de meest krachtige bouwsteen van het open internet. Maar tegelijk bieden ze hoofdbrekens om goed te doorgronden en ze goed werkend te krijgen op je site. Maar het kán wel! Veel themes en plugins werken nog niet lekker met de weergave van Webmentions. Daarom is er de Semantic Linkback plugin, waarmee je de weergave van binnenkomende webmentions een stuk aangenamer kunt maken!
Tevens is er nog de mogelijkheid om discussies die op Twitter plaatsvinden over jouw artikel, op je site te tonen. Dit gebeurt eveneens met Webmentions en heet Backfeed. Dit zal ik eveneens in een apart artikel uitleggen hoe je hier mee aan de slag kunt.
Lees eveneens mijn eerdere artikelen over WordPress en de Indieweb plugins:
Hoe installeer je de Indieweb plugin?
De IndieAuth plugin om in te loggen met je eigen domein
Micropub geeft je nieuwe manieren om artikelen te schrijven
De Post Kinds plugin geeft je een rijkjeid aan nieuwe soorten posts op je blog
And for WordPress you can already use the Webmention plugin and optionally the Semantic Linkbacks plugin to implement sending and receiving them for your own site.
In many cases, sites sending these notifications with the proper microformats mark up means that you can get some really beautiful replies to show up in your comments section (esp. in relation to how the old linkbacks/trackbacks looked). Webmention also has some structure as well as potential extensions to prevent the spam that the prior implementations encouraged.
If you reply to my syndicated copy of this post on Twitter, I’m also using the free service Brid.gy to have Twitter send these notifications to my personal website, so I’ll see your reply on my original post without actually needing to visit Twitter directly. This means that not only can I do threaded replies between my site and another WordPress site (or any other site that supports Webmention), but I can do threaded conversations between my site and Twitter.
Now if you want to take this the next few logical steps, add Micropub support to your website, and start using a social reader like Indigenous. That will let you write replies to content in your reader that will automatically post those repsonses/replies to your website, but then your site can ping the site you were responding to! The specifications allow a true social media experience between websites running different software on different URLs. Some documentation for the WordPress side of things: https://indieweb.org/Getting_Started_on_WordPress
The more sites that support these specifications, the richer the ecosystem becomes.
Source: Threaded Replies and Comments with Webmentions in WordPress
Just a quick test, sorry for the spam.
Share this post
<h3><em>Related</em></h3>