定制 kaiseki/wp-context 二次开发

按需修改功能、优化性能、对接业务系统,提供一站式技术支持

邮箱:yvsm@zunyunkeji.com | QQ:316430983 | 微信:yvsm316

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

GitHub 信息

  • Stars: 0
  • Watchers: 2
  • Forks: 0
  • 开发语言: PHP

其他信息

  • 授权协议: MIT
  • 更新时间: 2023-11-24

承接程序开发

PHP开发

VUE

Vue开发

前端开发

小程序开发

公众号开发

系统定制

数据库设计

云部署

网站建设

安全加固