Hook: post.query.builder
Overview
Type: Filter
Location: app/Http/Controllers/Api/V1/PostController.php
Modifies the Eloquent query builder for post listings. Use this to add custom scopes, joins, or where clauses to post queries from modules.
Parameters
| Param | Type | Description |
|---|---|---|
$query |
Builder | Eloquent query builder instance |
$request |
Request | HTTP request object |
Return
Must return the modified Builder instance.
Usage Example
Exclude posts tagged as "internal" from public listings:
Hook::addFilter('post.query.builder', function ($query, $request) {
if (!$request->user()?->hasRole('admin')) {
$query->whereDoesntHave('tags', fn($q) => $q->where('slug', 'internal'));
}
return $query;
});
Related Hooks
- product.query.builder - Same pattern for products
PolyCMS is an open-source content management system for modern web applications, inspired by the WordPress plugin and theme ecosystem but built on top of the Laravel framework. It is designed to provide a complete foundation for content publishing, e-commerce, multi-language support, and extensible module architecture — powered by a Vue 3 admin panel with data served entirely through RESTful APIs.
Whether you're building a blog, a documentation site, an online store, or a multi-tenant SaaS platform, PolyCMS aims to give you a comprehensive starting scaffold so you can ship quickly and extend easily through integrated modules and themes. In particular, themes in PolyCMS follow a multi-theme architecture — one Main theme and an unlimited number of Sub themes can run side by side on the same installation.
We hope this ready-made foundation proves useful for building your next website, blog, or web app, saving you from having to start completely from scratch.