Custom REST Endpoints in WordPress

wp/v2 belongs to WordPress core. Your plugin needs its own namespace.

Real code from our plugins on wordpress.org:

  • 4WP FAQ: registerrestroute( ‘forwp-faq/v1’, ‘/settings’, … ) — namespace · version · resource.
  • One route, two doors: GET → editposts, POST → manageoptions. An Editor reads (200) but can’t write (403 rest_forbidden).
  • 4WP Weather: the public weather route uses permissioncallback ‘returntrue’ — public on purpose, and we said so to the reviewers.
  • 4WP Account: wp.org review flagged a hardcoded /wp-json/ callback URL. Fix: resturl() — it also works with plain permalinks (/?restroute=…).

Go deeper