PHPackages                             renatonascalves/bp-hooks - PHPackages - PHPackages  [Skip to content](#main-content)[PHPackages](/)[Directory](/)[Categories](/categories)[Trending](/trending)[Leaderboard](/leaderboard)[Changelog](/changelog)[Analyze](/analyze)[Collections](/collections)[Log in](/login)[Sign up](/register)

1. [Directory](/)
2. /
3. [Utility &amp; Helpers](/categories/utility)
4. /
5. renatonascalves/bp-hooks

AbandonedArchivedLibrary[Utility &amp; Helpers](/categories/utility)

renatonascalves/bp-hooks
========================

All the actions and filters from BuddyPress core in machine-readable JSON format.

00

Since Feb 14Pushed 4y agoCompare

[ Source](https://github.com/renatonascalves/bp-hooks)[ Packagist](https://packagist.org/packages/renatonascalves/bp-hooks)[ RSS](/packages/renatonascalves-bp-hooks/feed)WikiDiscussions main Synced 1mo ago

READMEChangelogDependenciesVersions (1)Used By (0)

BuddyPress Hooks Reference
==========================

[](#buddypress-hooks-reference)

All the actions and filters from BuddyPress core in machine-readable JSON format.

Last updated for BuddyPress 10.0.0.

Installation
------------

[](#installation)

- As a Composer package for use in PHP:

```
  composer require renatonascalves/bp-hooks
```

- As an npm package for use in JavaScript or TypeScript:

```
  npm install @renatonascalves/bp-hooks
```

Usage in PHP
------------

[](#usage-in-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 );
```

Usage in JavaScript
-------------------

[](#usage-in-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);
```

Importing in TypeScript
-----------------------

[](#importing-in-typescript)

```
import { hooks as actions } from '@renatonascalves/bp-hooks/hooks/actions.json';
import { hooks as filters } from '@renatonascalves/bp-hooks/hooks/filters.json';
```

Interfaces for the components of the hooks can be imported too, if you need them:

```
import { Hooks, Hook, Doc, Tags, Tag } from '@renatonascalves/bp-hooks/interface';
```

Actions, Filters, and Schemas
-----------------------------

[](#actions-filters-and-schemas)

- The actions can be found in [hooks/actions.json](hooks/actions.json)
- The filters can be found in [hooks/filters.json](hooks/filters.json)
- The JSON schema can be found in [hooks/schema.json](hooks/schema.json)
- The TypeScript interfaces can be found in [interface/index.d.ts](interface/index.d.ts)

Regenerating the Hook Files
---------------------------

[](#regenerating-the-hook-files)

Install the dependencies:

```
  npm i && composer i
```

Then run:

```
  composer generate
```

Some scripts are available for checking the data:

- Check everything:

    ```
    npm run check
    ```
- Find hooks with missing `@since` tags:

    ```
    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
    ```
- Find hooks with incorrect number of `@param` tags (not completely accurate, not sure why):

    ```
    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
    ```

###  Health Score

14

—

LowBetter than 2% of packages

Maintenance20

Infrequent updates — may be unmaintained

Popularity0

Limited adoption so far

Community6

Small or concentrated contributor base

Maturity27

Early-stage or recently created project

 Bus Factor1

Top contributor holds 100% of commits — single point of failure

How is this calculated?**Maintenance (25%)** — Last commit recency, latest release date, and issue-to-star ratio. Uses a 2-year decay window.

**Popularity (30%)** — Total and monthly downloads, GitHub stars, and forks. Logarithmic scaling prevents top-heavy scores.

**Community (15%)** — Contributors, dependents, forks, watchers, and maintainers. Measures real ecosystem engagement.

**Maturity (30%)** — Project age, version count, PHP version support, and release stability.

### Community

Maintainers

![](https://www.gravatar.com/avatar/329e1a0d659f71234f33926895d63b7a2a55546219cd4f5a67af50ffde174ff1?d=identicon)[renatonascalves](/maintainers/renatonascalves)

---

Top Contributors

[![renatonascalves](https://avatars.githubusercontent.com/u/19148962?v=4)](https://github.com/renatonascalves "renatonascalves (1 commits)")

### Embed Badge

![Health badge](/badges/renatonascalves-bp-hooks/health.svg)

```
[![Health](https://phpackages.com/badges/renatonascalves-bp-hooks/health.svg)](https://phpackages.com/packages/renatonascalves-bp-hooks)
```

PHPackages © 2026

[Directory](/)[Categories](/categories)[Trending](/trending)[Changelog](/changelog)[Analyze](/analyze)
