Download and install like any WordPress plugin.
The WPGraphQL documentation can be found here. The FacetWP documentation can be found here.
- Requires WPGraphQL 1.0.4+
- Requires FacetWP 3.5.7+
This plugin exposes configured facets through the graph schema. Once registered for a type, a query is available. The payload includes both facet choices and information and a connection to the post type data. This allows for standard GraphQL pagination of the returned data set.
This plugin has been tested and is functional with SearchWP.
It is assumed that facets have been configured
To register a FacetWP query in the WPGraphQL schema for a WordPress post type (eg post
) simply call the following function:
// Register facet for Posts
add_action( 'graphql_register_types', function () {
register_graphql_facet_type( 'post' );
} );
This will create a WPGraphQL postFacet
field on the RootQuery
. The payload includes a collection of queried facets
and a posts
connection. The connection is a standard WPGraphQL connection supporting pagination and server side ordering. The connection payload only includes filtered posts.
A simple query might look like this:
query GetPosts($query: FacetQueryArgs, $after: String, $search: String, $orderBy: [PostObjectsConnectionOrderbyInput]) {
postFacet(where: {status: PUBLISH, query: $query}) {
facets {
selected
name
label
choices {
value
label
count
}
}
posts(first: 10, after: $after, where: {search: $search, orderby: $orderBy}) {
pageInfo {
hasNextPage
endCursor
}
nodes {
title
excerpt
}
}
}
}
Currently the plugin only has been tested using Checkbox and Radio facet types. Support for additional types is in development.