3

I am having trouble on creating custom endpoints to extend my Wordpress application.

After setting up the WordPress module, I can access the json data through the link given : http://localhost/wordpress/wp-json/

I tested different endpoints inside the document with link: https://developer.wordpress.org/rest-api/reference/

And now I am trying to create my own endpoints, but after many researched I could only find something like

add_action( 'rest_api_init', 'myplugin_register_routes' );

and then

function myplugin_register_routes() {
  register_rest_route( 'myplugin/v1', 'foo', array(
    'methods'  => WP_REST_Server::READABLE,
     'callback' => 'myplugin_serve_route',
  ));
}


function myplugin_serve_route( WP_REST_Request $request ) {
// Do something with the $request
// Return either a WP_REST_Response or WP_Error object
return $response;
}

But indeed where should I add these things? Also, I researched a lots and see the advanced endpoint controller practice, may anyone give a hand on me? Or I need to create my own plugin?

2 Answers 2

3

All the code goes to theme's functions.php file, or a plugin. After registered a REST route, it can be accessed via this URL:

www.example.com/wp-json/myplugin/v1/foo

Sign up to request clarification or add additional context in comments.

Comments

1

To save other's like me a bit of time, this is exactly what I posted in the function.php file.

/**
 * Custom API
 * 
 * This is our callback function that embeds our phrase in a WP_REST_Response
 */
function prefix_get_endpoint_phrase() {
    // rest_ensure_response() wraps the data we want to return into a WP_REST_Response, and ensures it will be properly returned.
    // I guess here we grab our data in the return method
    return rest_ensure_response( 'Hello World, this is my WordPress REST API' );
}

/**
 * This function is where we register our routes for our example endpoint.
 */
function prefix_register_example_routes() {
    // register_rest_route() handles more arguments but we are going to stick to the basics for now.
    register_rest_route( 'hello-world/v1', '/my-command', array(
        // By using this constant we ensure that when the WP_REST_Server changes our readable endpoints will work as intended.
        'methods'  => WP_REST_Server::READABLE,
        // Here we register our callback. The callback is fired when this endpoint is matched by the WP_REST_Server class.
        'callback' => 'prefix_get_endpoint_phrase',
    ) );
}

add_action( 'rest_api_init', 'prefix_register_example_routes' );

Now go to your browser and type:

http://yoursite.com/wp-json/game-thunder/v1/featured-games

This should help you start creating custom endpoints

Comments

Your Answer

By clicking “Post Your Answer”, you agree to our terms of service and acknowledge you have read our privacy policy.

Start asking to get answers

Find the answer to your question by asking.

Ask question

Explore related questions

See similar questions with these tags.