Image
Image

Micropub

Description

Micropub is an open API standard that is used to create posts on your site using third-party clients. Web apps and native apps (e.g. iPhone, Android) can use Micropub to post short notes, photos, events or other posts to your own site, similar to a Twitter client posting to Twitter.com. Requires the IndieAuth plugin for authentication.

Once you’ve installed and activated the plugin, try a client such as Quill to create a new post on your site. It walks you through the steps and helps you troubleshoot if you run into any problems. A list of known Micropub clients are available here.

Supports the full Micropub spec.

As this allows the creation of posts without entering the WordPress admin, it is not subject to any Gutenberg compatibility concerns per se. Posts created will not have Gutenberg blocks as they were not created with Gutenberg, but otherwise there should be no issues at this time.

Available in the WordPress plugin directory at wordpress.org/plugins/micropub.

Filters and Hooks

Filters

before_micropub( $input )

Called before handling a Micropub request. Returns $input, possibly modified.

micropub_post_content( $post_content, $input )

Called during the handling of a Micropub request. Returns $post_content, possibly modified.

micropub_post_type( $post_type = 'post', $input )

Called during the creation of a Micropub post. Defaults to post but allows setting a custom post type.

micropub_tax_input( $tax_input, $input )

Called during the creation of a Micropub post. Allows setting custom taxonomy.

micropub_syndicate-to( $synd_urls, $user_id, $input )

Called to generate the list of syndicate-to targets.

micropub_query( $resp, $input )

Allows you to replace a query response with your own customized version.

micropub_suggest_title( $mf2 )

Allows a suggested title to be generated for the post slug.

pre_insert_micropub_post( $args )

Filters the arguments sent to wp_insert_post just prior to insertion.

Hooks

after_micropub( $input, $wp_args = null )

Called after handling a Micropub request. Not called if the request fails.

micropub_syndication( $ID, $syndicate_to )

Called only if there are syndication targets for the post.

Installation

Follow the normal instructions for installing WordPress plugins.

Automatic Plugin Installation

  1. Go to Plugins > Add New
  2. Search for “micropub”
  3. Click Install Now, then Activate

Manual Plugin Installation

  1. Download the plugin from GitHub or WordPress.org
  2. Upload to wp-content/plugins/
  3. Activate the plugin

FAQ

What is Micropub?

Micropub is a W3C Recommendation that defines an open API standard for creating, updating, and deleting posts on your own website.

I am experiencing issues in logging in with IndieAuth.

There are a series of troubleshooting steps in the IndieAuth plugin for this. The most common problem involves the token not being passed due the configuration of your hosting provider.

Why do I need the IndieAuth plugin?

For reasons of security it is recommended that you only use this plugin on sites that implement HTTPS. Authentication is not built into this plugin. The IndieAuth plugin provides the authentication layer.

What Micropub extensions are supported?

Supports Stable Extensions:

Supports Proposed Extensions:

What configuration options are available?

These configuration options can be enabled by adding them to your wp-config.php:

  • define('MICROPUB_NAMESPACE', 'micropub/1.0') – Change the namespace for the micropub endpoint
  • define('MICROPUB_DRAFT_MODE', 1) – Override default post status and set to draft for debugging

Reviews

Read all 3 reviews

Contributors & Developers

“Micropub” is open source software. The following people have contributed to this plugin.

Contributors

“Micropub” has been translated into 1 locale. Thank you to the translators for their contributions.

Translate “Micropub” into your language.

Interested in development?

Browse the code, check out the SVN repository, or subscribe to the development log by RSS.

Changelog

Project and support maintained on GitHub at indieweb/wordpress-micropub.

2.5.0

  • Add namespaces and PSR-4 autoloader
  • Refactor REST API to use WP_REST_Controller pattern
  • Fix q=source to return valid MF2 JSON for all properties
  • Fix REST response headers causing PHP warning
  • Replace admin notice with Site Health test for HTTPS check
  • Restructure test suite to match project conventions
  • Modernize build setup and workflows
  • Add PHPDoc documentation for all hooks and filters
  • Tested up to WordPress 7.0

2.4.0

  • Remove sole setting as no longer needed (see upgrade notice)
  • Remove settings page as no more settings
  • Bump minimum PHP version to PHP 7.2
  • Require IndieAuth plugin as a dependency
  • Switch to dynamic from static rendering on posts

2.3.3

  • Stop including visible text in reply contexts since they go inside e-content
  • Fix undeclared variables

2.3.2

  • Update readme
  • Fix client name bug

2.3.1

  • Made one little mistake

2.3.0

  • Sanitize media endpoint queries
  • Add mime_type filter for media queries
  • Update media endpoint query response
  • Set client application taxonomy id if present
  • Add display functions for showing the client or returning the client data
  • Normalize JSON inputs to ensure no errors
  • Add support for Visibility config return
  • Sets _edit_last property when a post is updated

2.2.5

  • Update readme links
  • Add filter to allow custom database insert
  • Latitude and longitude properties are now converted into a location property
  • Introduce new function to simplify returning a properly set datetime with timezone
  • Media Endpoint now supports a delete action
  • New query unit test revealed bug in new q=source&url= query previously introduced
  • Update media response to include published, updated, created, and mime_type

2.2.4

  • Add published date to return from q=source on media endpoint

2.2.3

  • Deduplicated endpoint test code from endpoint and media endpoint classes
  • Removed error suppression revealing several notices that had been hidden
  • Abstract request for scope and response into functions
  • Switch check in permissions to whether a user was logged in
  • Published, updated, name, and summary properties are no longer stored in post meta
  • Store the timezone offset for the post in meta

2.2.2

  • Fixed and updated testing environment
  • Fixed failing tests as a result of update to testing environment
  • Change return response code based on spec update from 401 to 403

2.2.1

  • Change category query parameter from search to filter
  • Fix permissions for Media Endpoint to match Endpoint
  • For source query on both media and micropub endpoint support offset parameter

2.2.0

  • Deprecate MICROPUB_LOCAL_AUTH, MICROPUB_AUTHENTICATION_ENDPOINT and MICROPUB_TOKEN_ENDPOINT constants
  • Remove IndieAuth Client code, will now require the IndieAuth plugin

2.1.0

  • Fix bug where timezone meta key was always set to website timezone
  • Fix issue where title and caption were not being set for images
  • Remove post scope
  • Add support for draft scope
  • Improve permission handling
  • Fix issue with date rendering in events
  • Return URL in response to creating a post
  • Introduce new filters for post type and taxonomy input

2.0.0

  • Rewrite using REST API
  • Add Media Endpoint
  • Improve error handling
  • Ensure compliance with Micropub spec