kaiseki/wp-context
Composer 安装命令:
composer require kaiseki/wp-context
包简介
Composable WordPress context filters (current user, post type, page template, content)
README 文档
README
Composable WordPress context filters (current user, post type, page template, content).
A context filter is any object implementing ContextFilterInterface —
__invoke(?WP_Post $post = null): bool. It answers a yes/no question about the current request
(or a given post): "is this a page?", "can the current user edit posts?", "does the content contain
this block?". ContextFilterPipeline ANDs several filters together (and is itself a filter, so
pipelines nest), which makes it easy to gate behavior on a combination of conditions.
Installation
composer require kaiseki/wp-context
Requires PHP 8.2 or newer.
Usage
use Kaiseki\WordPress\Context\Filter\ContextFilterPipeline; use Kaiseki\WordPress\Context\Filter\CurrentUserCan; use Kaiseki\WordPress\Context\Filter\IsPostType; $filter = new ContextFilterPipeline( new IsPostType('page'), new CurrentUserCan('edit_pages'), ); if ($filter($post)) { // the request is a 'page' AND the current user can edit pages }
Each filter is invokable on its own and accepts an optional WP_Post; when omitted it resolves the
current post / global context. ContextFilterPipeline returns false as soon as one filter fails.
Included filters
| Filter (and its negation) | True when |
|---|---|
ContextFilterPipeline |
every contained filter passes |
IsPostType / IsNotPostType |
the post matches the given post type |
IsFrontPage |
the post is the configured front page |
IsPageTemplate / IsNotPageTemplate |
the post uses the given page template |
IsPageTemplateFileName / IsNotPageTemplateFileName |
the post's page template matches the given file name |
IsUserLoggedIn / IsUserNotLoggedIn |
a user is logged in |
CurrentUserCan / CurrentUserCanNot |
the current user has the given capability |
CurrentUserHasRole / CurrentUserHasNotRole |
the current user has the given role |
CurrentUserHasEmail / CurrentUserHasNotEmail |
the current user has the given email |
CurrentUserIsAdmin / CurrentUserIsNotAdmin |
the current user is an administrator |
ContentContainsBlock / ContentDoesNotContainBlock |
the post content contains the given block |
ContentContainsRegex / ContentDoesNotContainRegex |
the post content matches the given pattern |
Write your own by implementing ContextFilterInterface:
use Kaiseki\WordPress\Context\Filter\ContextFilterInterface; use WP_Post; final class IsSticky implements ContextFilterInterface { public function __invoke(?WP_Post $post = null): bool { return $post !== null && is_sticky($post->ID); } }
Development
composer install
composer check # check-deps, cs-check, phpstan
License
MIT — see LICENSE.
统计信息
- 总下载量: 1.04k
- 月度下载量: 0
- 日度下载量: 0
- 收藏数: 0
- 点击次数: 4
- 依赖项目数: 2
- 推荐数: 0
其他信息
- 授权协议: MIT
- 更新时间: 2023-11-24