Skip to main content

Add a custom REST endpoint from your add-on

Free Intermediate Since v1.0.0

Extend Benecaster\REST\RestController in your add-on and register it via benecaster_boot. Your routes live under benecaster/v1/ with the same permission callbacks used by core. Use permission_callback_admin() for admin-only routes and permission_callback_subscriber() for subscriber-facing routes — no need to duplicate nonce or capability logic.

Code

<?php
namespace MyAddon;

class MyController extends \Benecaster\REST\RestController {

    public function register_routes(): void {
        register_rest_route( self::NAMESPACE, '/my-resource', [
            'methods'             => 'GET',
            'callback'            => [ $this, 'get_resource' ],
            'permission_callback' => [ $this, 'permission_callback_admin' ],
        ] );
    }

    public function get_resource( \WP_REST_Request $request ): \WP_REST_Response {
        return new \WP_REST_Response( [ 'data' => 'hello from my add-on' ], 200 );
    }
}

add_action( 'benecaster_boot', function ( \Benecaster\Container $container ) {
    $container->make( \MyAddon\MyController::class )->register();
} );

View on GitHub →

Hooks Used

  • benecaster_boot