renatonascalves / bp-hooks
此包已被弃用,不再维护。没有建议的替代包。
所有 BuddyPress 核心的操作和过滤器都以机器可读的 JSON 格式提供。
dev-main
2022-02-14 14:38 UTC
Requires (Dev)
- buddypress/buddypress: 10.0.0
- erusev/parsedown: 1.8.0-beta-7
- johnbillion/wp-hooks-generator: 0.7.3
- oomphinc/composer-installers-extender: ^2
This package is auto-updated.
Last update: 2023-09-15 15:19:45 UTC
README
所有 BuddyPress 核心的操作和过滤器都以机器可读的 JSON 格式提供。
最后更新于 BuddyPress 10.0.0。
安装
- 作为 PHP 使用的 Composer 包
composer require renatonascalves/bp-hooks
- 作为 JavaScript 或 TypeScript 使用的 npm 包
npm install @renatonascalves/bp-hooks
PHP 中的使用
// Get hooks as JSON: $actions_json = file_get_contents( 'vendor/renatonascalves/bp-hooks/hooks/actions.json' ); $filters_json = file_get_contents( 'vendor/renatonascalves/bp-hooks/hooks/filters.json' ); // Convert hooks to PHP: $actions = json_decode( $actions_json, true )['hooks']; $filters = json_decode( $filters_json, true )['hooks']; // Search for filters matching a string: $search = 'permalink'; $results = array_filter( $filters, function( array $hook ) use ( $search ) { return ( false !== strpos( $hook['name'], $search ) ); } ); var_dump( $results );
JavaScript 中的使用
// Get hooks as array of objects: const actions = require('@renatonascalves/bp-hooks/hooks/actions.json').hooks; const filters = require('@renatonascalves/bp-hooks/hooks/filters.json').hooks; // Search for actions matching a string: const search = 'menu'; const results = actions.filter( hook => ( null !== hook.name.match( search ) ) ); console.log(results);
在 TypeScript 中导入
import { hooks as actions } from '@renatonascalves/bp-hooks/hooks/actions.json'; import { hooks as filters } from '@renatonascalves/bp-hooks/hooks/filters.json';
如果需要,也可以导入钩子组件的接口
import { Hooks, Hook, Doc, Tags, Tag } from '@renatonascalves/bp-hooks/interface';
操作、过滤器以及模式
- 操作可以在 hooks/actions.json 中找到
- 过滤器可以在 hooks/filters.json 中找到
- JSON 模式可以在 hooks/schema.json 中找到
- TypeScript 接口可以在 interface/index.d.ts 中找到
重新生成钩子文件
安装依赖
npm i && composer i
然后运行
composer generate
有一些脚本是用于检查数据的
-
检查所有内容
npm run check
-
查找缺少
@since
标签的钩子jq '.hooks[] | . as $d | .doc .tags | map(.name) | select( contains(["since"]) | not ) | $d' hooks/filters.json
jq '.hooks[] | . as $d | .doc .tags | map(.name) | select( contains(["since"]) | not ) | $d' hooks/actions.json
-
查找
@param
标签数量不正确的钩子(不完全准确,不确定为什么)jq '.hooks[] | select( .args == ( .doc.tags | map(.name) | select( contains(["param"]) ) | length ) ) | .name' hooks/filters.json
jq '.hooks[] | select( .args == ( .doc.tags | map(.name) | select( contains(["param"]) ) | length ) ) | .name' hooks/actions.json