mitcho Michael 芳貴 Erlewine

Linguist. Fifth year PhD student at MIT.

HookPress

Download HookPress v1.12 [zip]
Donate to mitcho (Michael Yoshitaka Erlewine) for this plugin via PayPal

Webhooks are a simple paradigm for developing instant notifications and mashups based on simple HTTP requests. With HookPress you can set up webhooks so that a specified URL (a public service or something you set up) is requested when certain WordPress actions occur. Possible uses include generating push notifications or using non-PHP web technology to extend WordPress.

A tutorial video is available on WordPress.tv.

As seen on WordPress.com!

To learn about the various hooks WordPress provides, please consult the WordPress Plugin API’s Action Reference and Filter Reference. Not all hooks are supported yet, but more are in the works.

To learn more about webhooks, take a look at the wikipedia page and also The Pushbutton Web by Anil Dash. Webhooks champion Jeff Lindsay’s excellent slides are a particularly good place to start.

To write and host a target script The easiest option is to set up a script on your own server to catch POST requests and act on them. Requestbin is a nice, free service which will host an endpoint, collect all requests, and let you inspect them, which is a great way to test requests generated by your webhooks. There is also a PHP script which does a simple version of this, test.php, included with HookPress.

Installation

Upload the HookPress plugin to your blog’s wp-content/plugins/ directory and activate. In the admin section, go to Settings > Webhooks to add new webhooks.

Other notes

FAQ

How does HookPress affect performance?

HookPress currently makes requests synchronously so can measurably affect performance. I highly recommend using a caching plugin such as WP-SuperCache to stem the performance hit. If your filters’ results are time-sensitive or dependent on external data sources as well, make sure to set an appropriate cache expiration time.

Changelog

1.12

  • Upgraded to work properly with jQuery 1.9+. Props liquidgecha.
  • Dropped the initial 0. in the version number, as that was just ridiculous. :)

0.1.11

  • Fix to register the right number of incoming arguments for actions.

0.1.10

  • No longer depends on the Snoopy library; uses wp_remote_post() instead. Note that the HTTP referer may no longer be sent correctly.
  • Added the hookpress_request filter.
  • Code cleanup

0.1.9

  • New snazzy options screen, with help from Automattic
    • added webhook editing
  • Various miscellaneous features: added nonces for security, modularized the code a bit, etc.

0.1.8

  • Added more filtersÑnow covers basic + comment filters
  • Marking as compatible through 2.9.9, because it should be.
  • Added version checking and beta offers to the options screen.

0.1.7

  • Now supports basically all actions. (Still no actions with no arguments.)
  • Added more filter optionsÑnow covers all basic database read filters.

0.1.6

  • Added another batch of actions. (Still no actions with no arguments, though… something to consider.)
  • Fixed hooks which referred to the users and links tables.

0.1.5

  • Now enforces sending the first field in filters and highlights the first field.
  • Added FAQ note on performance concerns and caching.

0.1.4

  • Bugfix: hooks with ID 0 can now be deleted
  • Made HookPress fully localizable - please email before you start localizing to claim your language.

0.1.3

  • A small bugfix to the filters list for save_pre
  • Initial support for filters with an short list of supported filters
  • Updated test.php to return first parameter (to trivially support filters)

0.1.2

  • Added support for the post_url field
  • Added support for parent_* post fields for save_post which are sent in case the post is a revision of a previous draft.
  • Fixes a PHP error which displayed on install
  • Disallowed redirects on the webhook - corrects duplicate records when used with PostBin

0.1.1

0.1

  • Initial release
    • supports webhooks based on WP actions

Future plans

  • Editing webhooks (rather than deleting and adding)
  • More custmization on a per-webhook basis