This plugin provides simple REST API for the popular search
WordPress search engine -
Relevanssi.
As far as this plugin provides API for the Relevanssi plugin, it should be installed.
Key features
- Search through posts of a certain type. By default all types.
- Results in pagination and optional.
- Sets X-WP-Total header with a total number of records, the same way as the default search API does.
- Sets X-WP-TotalPages header with a total number of pages, the same way as the default search API does.
- Multilingual websites support. Both WPML and Polylang are supported, but not tested well, so let me know if you will find any problems.
- Taxonomy filters are supported now. Some features may be missed, so feel free to report them.
- Ordering option added. It is also possible to order by meta_key/meta_value/meta_value_num.
Brief usage examples
- https://[your domain]/wp-json/relevanssi/v1/search?keyword=query
- https://[your domain]/wp-json/relevanssi/v1/search?keyword=query&per_page=5
- https://[your domain]/wp-json/relevanssi/v1/search?keyword=query&per_page=5&page=2
Define post type:
- https://[your domain]/wp-json/relevanssi/v1/search?keyword=query&per_page=5&page=2&type=post
Filter by taxonomy/taxonomies:
- https://[your domain]/wp-json/relevanssi/v1/search?keyword=test&tax_query[0][taxonomy]=category&tax_query[0][field]=id&tax_query[0][terms]=3
- https://[your domain]/wp-json/relevanssi/v1/search?keyword=test&tax_query[relation]=AND&tax_query[0][taxonomy]=category&tax_query[0][field]=id&tax_query[0][terms]=3&tax_query[1][taxonomy]=category&tax_query[1][field]=id&tax_query[1][terms]=2
Exclude category via taxonomies:
- https://[your domain]/wp-json/relevanssi/v1/search?keyword=test&tax_query[0][taxonomy]=category&tax_query[0][field]=id&tax_query[0][terms]=3&tax_query[0][operator]=NOT IN
For multilingual websites (WPML & Polylang):
- https://[your domain]/wp-json/relevanssi/v1/search?keyword=query&lng=en
- Results in order:
- https://[your domain]/wp-json/relevanssi/v1/search?keyword=test&type=post&orderby=modified&order=DESC
- https://[your domain]/wp-json/relevanssi/v1/search?keyword=test&type=post&orderby=modified&order=ASC
- https://[your domain]/wp-json/relevanssi/v1/search?keyword=test&type=post&meta_key=some_key&orderby=meta_value|meta_value_num&order=ASC
Demo website
You can try the plugin on our demo website
http://demo.erlycoder.com/demo1/. For example, you can try the following request:
Basic:
http://demo.erlycoder.com/demo1/wp-json/relevanssi/v1/search?keyword=test
Order posts by modification time:
http://demo.erlycoder.com/demo1/wp-json/relevanssi/v1/search?keyword=test&type=post&orderby=modified&order=DESC
http://demo.erlycoder.com/demo1/wp-json/relevanssi/v1/search?keyword=test&type=post&orderby=modified&order=ASC
Filter posts by taxonomy (one single category):
http://demo.erlycoder.com/demo1/wp-json/relevanssi/v1/search?keyword=test&tax_query[0][taxonomy]=category&tax_query[0][field]=id&tax_query[0][terms]=3
Filter posts by taxonomy (exclude category):
http://demo.erlycoder.com/demo1/wp-json/relevanssi/v1/search?keyword=test&tax_query[0][taxonomy]=category&tax_query[0][field]=id&tax_query[0][terms]=3&tax_query[0][operator]=NOT IN