QueryUtil
QueryUtil is an utility class for executing validated and multi-site-aware queries using WP-Node’s query builders.
Description
- Centralizes logic to build and execute validated queries.
- Supports all core WordPress entities: posts, terms, users, comments, etc.
- Allows custom query builders via
.custom()
. - Multi-site compatible via
.usingBlog()
and.resetBlog()
. - Uses validators to strongly type results using Zod.
Usage
const context = await Application.getContext();
const posts = await context.utils.query.posts((query) => {
query.where("ID", 1);
});
Methods
usingBlog
usingBlog(id: number): this
Sets the blog ID to scope queries when in multisite mode.
resetBlog
resetBlog(): this
Resets blog scoping to default (unscoped).
custom
custom<C, T extends types.validating.Parser>(
clazz: types.Constructor<C>,
formatter: T,
func: (query: C, builders: QueryBuilders) => void
): Promise<types.validating.ParserReturnType<T> | undefined>
Executes a custom query builder and formatter.
posts
posts<T extends types.validating.Parser = typeof val.query.postsResult>(
func: (query: PostsQuery, builders: QueryBuilders) => void,
formatter?: T
): Promise<types.validating.ParserReturnType<T> | undefined>
Builds and runs a query on the posts
table.
terms
terms<T extends types.validating.Parser = typeof val.query.termsResult>(
func: (query: TermsQuery, builders: QueryBuilders) => void,
formatter?: T
): Promise<types.validating.ParserReturnType<T> | undefined>
Builds and runs a query on the terms
table.
comments
comments<T extends types.validating.Parser = typeof val.query.commentsResult>(
func: (query: CommentsQuery, builders: QueryBuilders) => void,
formatter?: T
): Promise<types.validating.ParserReturnType<T> | undefined>
Builds and runs a query on the comments
table.
users
users<T extends types.validating.Parser = typeof val.query.usersResult>(
func: (query: UsersQuery, builders: QueryBuilders) => void,
formatter?: T
): Promise<types.validating.ParserReturnType<T> | undefined>
Builds and runs a query on the users
table.
blogs
blogs<T extends types.validating.Parser = typeof val.query.blogsResult>(
func: (query: BlogsQuery, builders: QueryBuilders) => void,
formatter?: T
): Promise<types.validating.ParserReturnType<T> | undefined>
Builds and runs a query on the blogs
table.
sites
sites<T extends types.validating.Parser = typeof val.query.sitesResult>(
func: (query: SiteQuery, builders: QueryBuilders) => void,
formatter?: T
): Promise<types.validating.ParserReturnType<T> | undefined>
Builds and runs a query on the site
table.
options
options<T extends types.validating.Parser = typeof val.query.optionsResult>(
func: (query: OptionsQuery, builders: QueryBuilders) => void,
formatter?: T
): Promise<types.validating.ParserReturnType<T> | undefined>
Builds and runs a query on the options
table.
meta
meta<Table extends types.MetaTable, T extends types.validating.Parser = ...>(
type: Table,
fn: (query: MetaQuery, builders: QueryBuilders) => void,
formatter?: T
): Promise<types.validating.ParserReturnType<T> | undefined>
Builds and runs a meta query (e.g., postmeta, usermeta). Automatically selects the appropriate formatter.
common
common<
Table extends "signups" | "links" | "registration_log",
T extends types.validating.Parser = ...,
Query = CommonQuery<Table>
>(
table: Table,
fn: (query: Query, builders: QueryBuilders) => void,
formatter?: T
): Promise<types.validating.ParserReturnType<T> | undefined>
Builds and runs a query on a common table like signups
, links
, or registration_log
.