A wordpress api client
npm install pp-wapiA Wordpress api client
======================
A very simple Javascript client for accessing a Wordpress site's API \
Currently only offers access to Posts and Terms following the standard schema \
(very unstable)
1. Instantiate a WPClient instance passing in your wordpress site's url
2. Call either WPClient::getPosts or WPClient::getTerms passing in a callback and args
3. Receive Result
A WPResponse contains meta data about the query as well as the received content
``typescript
interface WPResponse
meta: QueryMeta
content: T // currently either BasicPost[] or Term[]
}
// not in all queries so possibility to be undefined, will move to Maybe
interface QueryMeta {
count: number | undefined,
totalPages: number | undefined
}
`
Currently getPosts and getTerms are curried*
* To call them either pass in callback then args like so:
`typescript`
WPClient::getPosts(callback)(args)
`
* Or save to a variable:
typescript`
const query = WPClient::getPosts(callback)
query(args)
* Uses fetch and promises, use polyfills if supporting legacy browsers
* Caches fetch requests in memory during a session
`typescript
import { WPClient, unwrap } from "pp-wapi"
// Instantiate client
const client = new WPClient("www.testwp.com")
// Callback to run on request completion
const callback = result => console.log(unwrap(result))
// Post query args, see below for list of possible values
const args = {
page: 2,
categories: [ 1, 4 ]
}
client.getPosts(callback)(args)
`
`typescript`
interface PostQueryArgs {
type?: string
page?: number
per_page?: number
p?: number
slug?: string
search?: string
after?: string
categories?: number[]
categories_exclude?: number[]
tags?: number[]
tags_exclude?: number[]
author?: number[]
author_exclude?: number[]
exclude?: number[]
include?: number[]
offset?: number
order?: Order
orderby?: PostOrderBy
status?: string
}
`typescript``
interface TermQueryArgs {
type: string
term_id?: number
page?: number
per_page?: number
search?: string
exclude?: number[]
include?: number[]
order?: Order
orderby?: TermOrderBy
hide_empty?: boolean
parent?: number
slug?: string
}