Since v3.1.0, Contextual Related Posts has included support for viewing the related posts via the WordPress REST APIOpens in a new window.

The plugin registers one namespace i.e. contextual-related-posts/v1 that can be used to retrieve the related posts for a particular post ID.

Requirements

To use the latest version of the REST API you must be using:

  • Contextual Related Posts 3.1+.
  • WordPress 6.6+.
  • Pretty permalinks in Settings > Permalinks so that the custom endpoints are supported. Default permalinks will not work.
  • You may access the API over either HTTP or HTTPS, but HTTPS is recommended where possible.

Endpoint

The plugin registers one namespace contextual-related-posts/v1 and currently, there is a single endpoint available at posts.

GET https://example.com/wp-json/contextual-related-posts/v1/posts/<id>/

Arguments

ParameterDescription
idPost ID. This is also passed as part of the path as noted above. This is mandatory
limitNumber of posts to retrieve. You can also use posts_per_page instead
post_typesComma-separated list of post types to which the related posts belong to. Alternatively use post_type
same_post_typeOnly retrieve posts from the same post type as that of the post with the id as above
same_authorOnly retrieve posts from the same author as that of the post with the id as above
exclude_post_idsComma-separated list of post IDs to exclude
exclude_categoriesComma-separated list of Taxonomy IDs from which posts are excluded

HTML endpoint (Pro)

Contextual Related Posts Pro registers a second endpoint that returns the rendered related posts HTML instead of a list of post objects:

GET https://example.com/wp-json/contextual-related-posts/v1/posts/<id>/html

This endpoint powers the Lazy Load Related Posts feature, so display arguments (args) are only honored when accompanied by a valid sig — an HMAC signature generated server-side when the placeholder is rendered. Requests without a matching signature fall back to the default arguments for that post; there is no way to render arbitrary arguments for a post from the client side.

Limiting the number of posts returned

The limit parameter is capped at 100 by default. Use the crp_rest_api_max_limit filter to change the maximum:

/**
 * Filters the maximum number of related posts the REST API will return.
 *
 * @param int $max Maximum allowed limit. Default 100.
 */
add_filter( 'crp_rest_api_max_limit', function ( $max ) {
    return 20;
} );

Was this article helpful?