johnbillion/wp-hooks

该软件包已被 弃用 并不再维护。作者建议使用 wp-hooks/wordpress-core 软件包。

WordPress 核心中的所有动作和过滤器都以机器可读的 JSON 格式提供。

1.8.0 2024-07-15 16:47 UTC

README

WordPress 核心中的所有动作和过滤器都以机器可读的 JSON 格式提供。

最后更新于 WordPress 6.6。

安装

  • 作为用于 PHP 的 Composer 软件包
    composer require wp-hooks/wordpress-core
  • 作为用于 JavaScript 或 TypeScript 的 npm 软件包
    npm install @wp-hooks/wordpress-core

PHP 中的使用

// Get hooks as JSON:
$actions_json = file_get_contents( 'vendor/wp-hooks/wordpress-core/hooks/actions.json' );
$filters_json = file_get_contents( 'vendor/wp-hooks/wordpress-core/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('@wp-hooks/wordpress-core/hooks/actions.json').hooks;
const filters = require('@wp-hooks/wordpress-core/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 '@wp-hooks/wordpress-core/hooks/actions.json';
import { hooks as filters } from '@wp-hooks/wordpress-core/hooks/filters.json';

如果需要,也可以导入钩子组件的接口

import { Hooks, Hook, Doc, Tags, Tag } from '@wp-hooks/wordpress-core/interface';

动作、过滤器和模式

我能用它做什么?

任何需要以编程方式访问可用钩子列表的东西,例如

重新生成钩子文件

将 composer.json 中的 roots/wordpress-full 版本更改为所需的 WordPress 版本,或使用 dev-main 以获取夜间版本。

安装依赖项

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

插件钩子文件

您希望您的最爱插件具有相同的钩子文件吗?本存储库中的钩子文件使用 wp-hooks-generator 生成。它可以为核心以及插件和主题生成钩子文件。

赞助商

我维护这个库和其他库的时间部分由以下赞助商赞助

Automattic

以及所有我的GitHub上的慷慨赞助商

Sponsors

点击此处了解支持此库以及我的其他 WordPress 开发工具和插件的信息.