Contributors: pfefferle, dshanske
Donate link: https://notiz.blog/donate/
Tags: webmention, pingback, trackback, linkback, indieweb, comment, response
Requires at least: 4.9
Tested up to: 5.9
Stable tag: 4.0.8
Requires PHP: 5.6
License: MIT
License URI: https://opensource.org/licenses/MIT
Enable conversation across the web. When you link to a website you can send it a webmention to notify it and then that website may display your post as a comment, like, or other response, and presto, you’re having a conversation from one site to another!
A Webmention is a notification that one URL links to another. Sending a Webmention is not limited to blog posts, and can be used for additional kinds of content and responses as well.
For example, a response can be an RSVP to an event, an indication that someone "likes" another post, a "bookmark" of another post, and many others. Webmention enables these interactions to happen across different websites, enabling a distributed social web.
The Webmention plugin supports the webmention protocol, giving you support for sending and receiving webmentions. It offers a simple built in presentation. To further enhance the presentation, you can install Semantic Linkbacks.
Webmention is a simple way to automatically notify any URL when you link to it on your site. From the receivers perpective, it's a way to request notification when other sites link to it.
Webmention is an update/replacement for Pingback or Trackback. Unlike the older protocols, the specification is recommended by the W3C as well as an active community of individuals using it on their sites.
On the Settings --> Discussion Page in WordPress:
- On the Webmention Settings page, decide which post types you want to enable webmentions for. By default, posts and pages.
- Set a page to redirect homepage mentions to. This will automatically enable webmentions for that page.
- If you want to enable a webmention form in the comment section, check the box.
You can use the send_webmention($source, $target)
function and pass a source and a target or you can fire an action like do_action('send_webmention', $source, $target)
.
When declaring your custom post type, add post type support for webmentions by either including it in your register_post_type
entry. This can also be added in the webmention settings.
You can enable receiving webmentions for attachments in webmention settings. You can enable sending webmentions for media links in the settings. Please note that most receivers of webmentions do not support receiving them to image, audio, and video files. In order to support receiving them on WordPress, webmention endpoint headers would have to be added at the webserver level.
Webmentions should be allowed on all URLs of a blog, however WordPress does not support this as only posts can have comments attached to them. The plugin currently handles only Webmentions on posts and allows you to set a page to receive homepage mentions.
Even though it is not done automatically, it is very simple to add support for archives and URLs on your site by providing a post/page to show collect mentions. The plugin provides a simple filter for that.
In the below example, if there is no page returned it will send mentions to a catch-all post. You can also have unique posts per URL.
function handle_other_webmentions($id, $target) {
// do nothing if id is set
if ($id) {
return $id;
}
// return "default" id if plugin can't find a post/page
return 9247;
}
add_filter("webmention_post_id", "handle_other_webmentions", 10, 2);
The URL for the webmention endpoint, which you can view in the source of your pages, should be excluded from any server or plugin caching.
As Webmention uses the REST API endpoint system, most up to date caching plugins should exclude it by default.
Webmentions have the ability to act as rich comments. This includes showing avatars. If there is an avatar discovered, the URL for it will be stored in comment meta. This can either be reflect something from the media library or a URL of a file.
Since webmentions do not usually have email addresses, Gravatar, built into WordPress, is not necessary. WordPress returns even the anonymous avatars from Gravatar. Therefore, if there is no email the plugin will simply return a local copy of the Mystery Man default avatar. If there is an email address, the plugin will cache whether a Gravatar exists and serve the local file if it does not. It defaults to a week, but you can change it to a day, or any number by adding below to your wp-config.php file.
define( 'WEBMENTION_GRAVATAR_CACHE_TIME', DAY_IN_SECONDS );
Webmention headers are only shown if webmentions are available for that particular URL. If you want to show it regardless, you can add below to your wp-config.php file.
define( 'WEBMENTION_ALWAYS_SHOW_HEADERS', 1 );
Project and support maintained on github at pfefferle/wordpress-webmention.
- Add
onerror
handling also forsrcset
( props @florianbrinkmann for testing )
- Re-add
onerror
handling for broken images ( props @snarfed )
- Updated requirements
- Remov
Webmention_Notification
class until proper tested/used
- Update dependencies
- Fix WordPress warnings
- Move comment approve list and auto approve to the
wp_allow_comment
function called by thewp_new_comment
function. - Minor fix to avatar function to account for the fact comments have an empty comment type
- Cache in cases where stored avatar is a gravatar
- Show webmention form only if
pings_open
- Show webmention form also if comments are disabled
- Add settings for enabling webmention support by public post type
- Add setting for disabling sending media links...URLs attached to image, video, or audio tags
- Switch from sending webmentions to all URLs in post content to only ones with proper HTML markup
- Support handling avatars if stored in meta
- Support serving a local anonymous avatar if no email and cache whether there is a gravatar for a definable period of time
- Store a webmention protocol property in comment meta
- Do not show webmention headers if URL does not support webmentions
- Update webmention meta template to use separate file which is shown on the edit comment screen
- Minimum PHP version bumped to 5.4. WordPress currently has a minimum of 5.6 but we support back to version 4.9
- For compatibility reasons, load a version of
is_avatar_comment_type
(introduced 5.1) andget_self_link
(introduced 5.3) for use in this plugin - Improve all settings and template forms ( props @tw2113 )
- Minor bug fix
- Always enable webmentions on basis that using plugin means you want webmentions instead of using default pingback setting
- Fix auto approve based on domain
- Small HTML template changes
- Added NodeInfo(2) support
- Fixed default value of
webmention_avatars
on the settings page
- Fixed default value of
webmention_avatars
- Set correct default value for the "Show comment form" setting
- Store vouch property
- Preliminary vouch support disabled by default. As Vouch is experimental can only be enabled by adding define( 'WEBMENTION_VOUCH', true )
- Changed setting for avatar to consider null to be the same as yes
- Fixed PHP issue
- Updated GDPR text suggestion
- Fixed old settings links
- Made Webmention comment-form text customizable (#175)
- Better handling of
wp_add_privacy_policy_content
call
Thanks Sebastian Greger
- Added GDPR recommendation text
- Implemented help tab
- Form Improvements
- Domain allowlist
- Add avatar settings control
- Text improvements
Thanks Sebastian Greger, David Shanske and Chris Aldrich
- Added "threaded comments" support
- Send delete Webmentions
- Receive delete Webmentions
- Added nicer HTML views for non API calls
- Added german translations (thanks to @deponeWD)
- Be sure to disable the old
webmention-for-comments
plugin
- Add filter to allow setting of webmention form text
- Move register settings to init due new default options not being set if admin only
- Add
edit_webmention
hook due comment array filtering - Display Webmention Meta on Edit Comment page
- Added settings link
- Added link to Homepage Webmention page
- Enable pings for Homepage Webmentions
- Add setting for homepage mentions (thanks @dshanske)
- Remove deprecated functions due 4.8 release
- moved endpoint discovery to functions.php
- added missing i18n strings
- removed polyfill
- Enable option for page support
- Allow custom post types to declare support for webmentions as a feature which will enable pings.
- Remove new meta properties from being added during preprocessing as these are added after Semantic Linkbacks Enhancement.
- Move new meta properties to being built into webmention code
- Store webmention source in comment meta but fall back to checking
comment_author_url
if not set. - Store webmention creation time in comment meta as comment time is overridden by Semantic Linkbacks allowing to determine if a comment has been modified.
- URLEncode/Decode source and target
- Webmention Comment Type now declares support for avatars
- Meta keys are now registered for
webmention_target_url
andwebmention_target_fragment
- Target URL is stored instead of derived from the permalink to ensure permanance
- Target fragment is stored to support fragmentions. Can also suport comments when reply is to a comment.
- added page support (server and client)
- moved
webmention_post_id
filter to a global function (thanks @dshanske) - fixed https://wordpress.org/support/topic/form-for-entering-manual-pings-stays-on/
- fixed some typos
- Show endpoint discovery on every page again, to prevent several problems.
- Plugin refactored to use API infrastructure.
- Visiting the endpoint in a web browser now returns a webmention form.
- Plugin now compliant with draft specification although remains synchronous.
- Deprecation of webmention_title and webmention_content filters in favor of a single targeted webmention comment data filter.
- webmention_post_send action now fires on all attempts to send a webmention instead of only successful ones. Allows for logging functions to be added.
- Supports adding additional parameters when sending webmentions
- Fix incompatibility with Ultimate Category Excluder plugin.
- removed duplicate request for HTML via get_meta_tags
- refactoring
- limits to same domain
- add salmon/crossposting-extension support (props @singpolyma)
- disable self-pings via settings
- do not unapprove already-approved webmention (props @singpolyma)
- some code improvements
- switched to WordPress Coding Standard
- some fixes and improvements
- added filter for webmention endpoint (to add/require additional paramaters: pfefferle#39 or pfefferle#41)
- added more params to
webmention_post_send
(props to @snarfed) - removed rescedule of webmentions (props to @snarfed)
- use error-code 403 instead of 500 if pingbacks/webmentions are disabled for a post (thanks @snarfed)
- added
webmention_comment_parent
filter
- nicer
title
andcontent
discovery - added post-id to
webmention_links
filter - improved
publish_post_hook
function - disabled flood control
- nicer response value
- some more filters/actions
- added a default request "action" to be more flexible and to handle more than mentions on posts and pages
- a lot of small fixes
- prevent selfpings
- added support for https and http
- optimized some methods
- fixed pseudo hook
- fixed some warnings
- now ready to use in a bundle
- nicer feedback for the Webmention endpoint
- nicer
title
andcontent
discovery - added post-id to
webmention_links
filter - improved
publish_post_hook
function
- small fixes
- nicer excerpt extractor
initial release
Follow the normal instructions for installing WordPress plugins.
To add a WordPress Plugin using the built-in plugin installer:
- Go to Plugins > Add New.
- Type "
webmention
" into the Search Plugins box. - Find the WordPress Plugin you wish to install.
- Click Details for more information about the Plugin and instructions you may wish to print or save to help setup the Plugin.
- Click Install Now to install the WordPress Plugin.
- The resulting installation screen will list the installation as successful or note any problems during the install.
- If successful, click Activate Plugin to activate it, or Return to Plugin Installer for further actions.
There are a few cases when manually installing a WordPress Plugin is appropriate.
- If you wish to control the placement and the process of installing a WordPress Plugin.
- If your server does not permit automatic installation of a WordPress Plugin.
- If you want to try the latest development version.
Installation of a WordPress Plugin manually requires FTP familiarity and the awareness that you may put your site at risk if you install a WordPress Plugin incompatible with the current version or from an unreliable source.
Backup your site completely before proceeding.
To install a WordPress Plugin manually:
- Download your WordPress Plugin to your desktop.
- Download from the WordPress directory
- Download from GitHub
- If downloaded as a zip archive, extract the Plugin folder to your desktop.
- With your FTP program, upload the Plugin folder to the
wp-content/plugins
folder in your WordPress directory online. - Go to Plugins screen and find the newly uploaded Plugin in the list.
- Click Activate to activate it.
This update brings the plugin into compliance with the draft standard. As a result, some filters and actions have changed. Please check any dependent code before updating.
This plugin doesn't support the microformts stuff mentioned in the IndieWebCamp Wiki. To enable semantic linkbacks you have to use https://github.com/pfefferle/wordpress-semantic-linkbacks