Arha Routes

Description

WordPress plugin that helps to serve content through REST routes and gives
customizability to developers through filters.

Available Routes

  • /wp-json/arha/v1/post
  • /wp-json/arha/v1/page
  • /wp-json/arha/v1/options
  • /wp-json/arha/v1/archive

Example queries

  • /wp-json/arha/v1/post?post_type=POST_TYPE&slug=SLUG
  • /wp-json/arha/v1/page?path=PATH
  • /wp-json/arha/v1/options
  • /wp-json/arha/v1/archive?post_type=POST_TYPE&posts_per_page=POSTS_PER_PAGE&paged=PAGED&orderby=ORDERBY&order=ORDER

tax_query and meta_query in archive-route

  • tax_query and meta_query are supported and they work how the query is built for it in new WP_Query()
  • both needs their values to bes passed in as stringified json

Multiple post_types in archive-route

  • To pass multiple post_types in archive-route, use syntax that lets PHP read GET-param as an array. https://stackoverflow.com/a/9547490

Filters

  • To exclude querying specific post types from post– and archive-routes, you
    can use following filters:

    `
    add_filter(‘arha_routes/archive_excluded_post_types’, ‘exclude_post_types’);
    add_filter(‘arha_routes/post_excluded_post_types’, ‘exclude_post_types’);

function exclude_post_types($excluded_post_types) {
$excluded_post_types = [‘post’];
return $excluded_post_types;
}
`

  • To format post-route’s post before it’s served to client, use arha_routes/format_post-filter
    `
    add_filter(‘arha_routes/format_post’, ‘format_post’);

function format_post($post) {
return $post;
}
`

  • To format page-route’s post before it’s served to client, use arha_routes/format_page-filter
    `
    add_filter(‘arha_routes/format_page’, ‘format_page’);

function format_page($page) {
return $page;
}
`

  • To format archive-route’s posts before they are served to client, use arha_routes/format_archive_post-filter

    add_filter('arha_routes/format_archive_post', 'format_archive_post');
    function format_archive_post($post) {
    return $post;
    }

  • options-route returns empty result by default. To add content to it, use arha_routes/format_options-filter
    `
    add_filter(‘arha_routes/format_options’, ‘format_options’);

function format_options($options) {
return $options;
}
`

  • By default Arha Routes returns only published content with post-, page- and archive-route, this can be modified by adding following filters.
    `
    // for archive route
    add_filter(‘arha_routes/allowed_post_statuses_archive’, ‘allowed_post_statuses’);
    // for post route
    add_filter(‘arha_routes/allowed_post_statuses_post’, ‘allowed_post_statuses’);
    // for page route
    add_filter(‘arha_routes/allowed_post_statuses_page’, ‘allowed_post_statuses’);
    function allowed_post_statuses($post_statuses) {
    // … change post_statuses array

    return $post_statuses;
    }
    `
    After adding setting up these filters, request can include “post_status” parameter and it will be compared to $post_statuses array.

SearchWP

Arha Routes supports SearchWP-plugin, which lets WP users to make keyword search engine for their content.

Activating SearchWP-plugin adds optional keyword-search functionality to archive-route. This is done by adding s=KEYWORD to the route
– Example: /wp-json/arha/v1/archive?post_type=products&posts_per_page=10&paged=1&orderby=date&order=ASC&s=monitor

Polylang

Arha Routes supports Polylang-plugin, which allows users to create content in multiple languages.

Activating Polylang changes how endpoints work:

  • All routes require additional lang-param
    • Example: /wp-json/arha/v1/archive?post_type=products&posts_per_page=10&paged=1&orderby=date&order=ASC&lang=en
  • page-route doesn’t support language prefix in path
    • Example: Permalink /zh/info, use like this /wp-json/arha/v1/page?path=/info&lang=zh
    • Example: Permalink /en/info/test, use like this /wp-json/arha/v1/page?path=/info/test&lang=zh
  • options-route passes lang-param forward to arha_routes/format_options-filter
    add_filter('arha_routes/format_options', 'format_options', 10, 2);
    function format_options($options, $lang) {
    return $options;
    }

Polylang + SearchWP

In order to make these two plugins work together, you need to add extra plugin to WP installation.

https://searchwp.com/extensions/polylang-integration/

Reviews

There are no reviews for this plugin.

Contributors & Developers

“Arha Routes” is open source software. The following people have contributed to this plugin.

Contributors

Translate “Arha Routes” into your language.

Interested in development?

Browse the code, check out the SVN repository, or subscribe to the development log by RSS.