PHPackages                             saltus/framework - 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. [Framework](/categories/framework)
4. /
5. saltus/framework

ActiveLibrary[Framework](/categories/framework)

saltus/framework
================

A WordPress framework for building plugins around custom post types, taxonomies, meta boxes, settings pages, and admin tooling.

v1.3.5(yesterday)112↑2900%1[1 issues](https://github.com/SaltusDev/saltus-framework/issues)GPL-3.0-onlyPHPPHP &gt;=7.4CI passing

Since Aug 18Pushed todayCompare

[ Source](https://github.com/SaltusDev/saltus-framework)[ Packagist](https://packagist.org/packages/saltus/framework)[ Docs](https://saltus.dev/)[ RSS](/packages/saltus-framework/feed)WikiDiscussions main Synced today

READMEChangelog (3)Dependencies (12)Versions (15)Used By (0)

Saltus Framework
================

[](#saltus-framework)

Saltus Framework helps you develop WordPress plugins that are based on Custom Post Types.

We built it to make things easier and faster for developers with different skills. Add metaboxes, settings pages and other enhancements with just a few lines of code.

Visit saltus.dev for more information.

Version
-------

[](#version)

### Current version \[1.3.5\] - 2026-06-20

[](#current-version-135---2026-06-20)

See [change log file](CHANGELOG.md) for full details.

### Features

[](#features)

```
* Create Custom Post Types easily
* Control all labels and messages
* Add administration columns
* Add administration lists
* Add settings pages
* Add metaboxes
* Enable cloning
* Enable single entry export
* Enable drag&drop reordering
* Create Taxonomies easily
* Control labels
* Associate with any existing post type
* Add quick edit fields

```

### Requirements

[](#requirements)

Saltus Framework requires PHP 7.4+

### Installation

[](#installation)

Install the framework in your plugin with Composer:

```
composer require saltus/framework
```

Getting Started
---------------

[](#getting-started)

### Demo

[](#demo)

Refer to the [Framework Demo](https://github.com/SaltusDev/framework-demo) for a complete plugin example and to the [Wiki](https://github.com/SaltusDev/saltus-framework/wiki) for complete documentation.

Once the framework is installed and Composer's autoloader is loaded by your plugin, you can initialize it the following way:

```
    $autoload = __DIR__ . '/vendor/autoload.php';
    if ( is_readable( $autoload ) ) {
      require_once $autoload;
    }

    if ( class_exists( \Saltus\WP\Framework\Core::class ) ) {

      /*
      * The path to the plugin root directory is mandatory,
      * so it loads the models from a subdirectory.
      */
      $framework = new \Saltus\WP\Framework\Core( dirname( __FILE__ ) );
      $framework->register();

      /**
       * Initialize plugin after this
       */

    }
```

The framework will search for a model file, by default in the folder `src/models`. This can be changed using a filter.

A model file should return one array or a multidimensional array of models to build the Custom Post Types or Taxonomies. Simple example:

```
    return [
        'type'     => 'cpt',
        'name'     => 'movie',
    ];
```

The above example will create a Custom Post Type 'movie'.

Several models in same file:

```
    return [
    [
        'type'     => 'cpt',
        'name'     => 'movie',
    ],
    [
            'type'         => 'category',
            'name'         => 'genre',
            'associations' => [
                ‘movie’,
            ],
        ],
    ];
```

The above example will create a Custom Post Type 'movie' and a hierarchical Taxonomy 'genre' associated with the Custom Post Type 'movie'.

Models
------

[](#models)

Currently there are 2 types of Model, one for **Custom Post Types** and another for **Taxonomies**. Depending what you define, you’ll have different parameters available.

### Model type = ‘cpt’

[](#model-type--cpt)

ParameterDescriptionactive`boolean` - sets this model to active or inactivetype`string` - type of modelname`string` - identifier of the custom post typefeatures`array` - Features that this CPT will support (More Info Soon)supports`array` - refer to the supports argument of the [register\_post\_type](https://developer.wordpress.org/reference/functions/register_post_type/) function from WordPresslabels`array` - Everything related with labels for this custom post type (More Info Soon)options`array` - Refer to the second argument in the [register\_post\_type](https://developer.wordpress.org/reference/functions/register_post_type/) function from WordPressblock\_editor`boolean` - if the Block Editor should be enabled or notmeta`array` - Information for the Metaboxes for this CPT (More Info Soon)settings`array` - Information for the Settings page of this CPT (More Info Soon)Example File for a CPT Model (Soon)

### Model type = ‘category’ or ‘tag’

[](#model-type--category-or-tag)

ParameterDescriptiontype`string` - ‘category’ // or 'tag' to set it to non-hierarchical automaticallyname`string` - identifier of this taxonomyassociations`string` - to what CPT it should be associatedlabels`array` - Everything related with labels for this custom post type (More Info Soon)options`array` - Refer to the third parameter for register\_taxonomy function from WordPressExample File for a Taxonomy Model (Soon)

Filters/Hooks
-------------

[](#filtershooks)

Saltus Framework provides several hooks to customize its behavior.

### Actions

[](#actions)

HookDescriptionParameters`saltus/framework/duplicate_post/after`Triggered after a post is successfully duplicated.`string $post_type`, `int $original_post_id`, `int $new_post_id``saltus/framework/admin_filters/filter_output/{$filter_id}`Allows overriding the HTML output of a specific admin filter.`SaltusAdminFilters $instance`, `array $filter_args`, `string $element_id``saltus/framework/drag_and_drop/update_menu_order`Triggered after the menu order is updated via drag and drop.None### Filters

[](#filters)

HookDescriptionParametersDefault`saltus/framework/modeler/priority`Filters the priority of the `init` hook used to register models.`int $priority``1``saltus/framework/services`Filters the list of service classes to be registered.`array $services`Core services array`saltus/framework/models/path`Filters the directory path where model files are located.`string $path``{project_path}/src/models/``saltus/framework/models/extra_models`Allows adding extra model configurations programmatically.`array $extra_models``[]``saltus/framework/admin_filters/category_list`Filters the term name shown in taxonomy dropdown filters.`string $name`, `WP_Term $term``$term->name``saltus/framework/meta/matched_fields`Filters the mapping between Saltus field types and Codestar field types.`array $field_map`Built-in map`saltus/framework/duplicate_post/args`Filters the data used to create a new duplicated post.`array $args`, `int $original_post_id`Copied post data`saltus/framework/duplicate_post/excluded_meta_keys`Filters meta keys that should not be copied during duplication.`array $keys``['_wp_old_slug', '_edit_lock', '_edit_last']``saltus/framework/admin_filters/{$post_type}/filter_query/{$filter_id}`Filters the query arguments for a specific admin filter.`array $vars`, `array $query`, `array $filter``[]`Credits and Licenses:
---------------------

[](#credits-and-licenses)

Includes a simplified version of SoberWP/Models. Their license is in lib/sobwewp/models/LICENSE.md. Is used to load php/json/yaml models of CPT.

Includes the [Codestart Framework](https://codestarframework.com/) which is [licensed under GPL](https://codestarframework.com/license/).

### Patching Codestar Framework

[](#patching-codestar-framework)

Every time the Codestar Framework is updated, our custom fixes may be overwritten. To re-apply the patches located in `lib/codestar-framework/patches`, run the following command from the repository root:

```
for f in lib/codestar-framework/patches/*; do git apply "$f"; done
```

Includes support for [github-updater](https://github.com/afragen/github-updater) to keep track on updates through the WordPress backend.

- Download [github-updater](https://github.com/afragen/github-updater)
- Clone [github-updater](https://github.com/afragen/github-updater) to your sites plugins/ folder
- Activate via WordPress

Building
--------

[](#building)

### Disadvantages of classmap

[](#disadvantages-of-classmap)

As we move from 'files' to 'classmap', heed this:

> Manual Updates: If you add new classes, you must regenerate the classmap by running composer dump-autoload.

###  Health Score

47

—

FairBetter than 93% of packages

Maintenance98

Actively maintained with recent releases

Popularity11

Limited adoption so far

Community9

Small or concentrated contributor base

Maturity59

Maturing project, gaining track record

 Bus Factor1

Top contributor holds 81.9% 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.

###  Release Activity

Cadence

Every ~254 days

Total

3

Last Release

1d ago

PHP version history (2 changes)v1.1.3PHP &gt;=7.2

v1.3.4PHP &gt;=7.4

### Community

Maintainers

![](https://avatars.githubusercontent.com/u/162017?v=4)[goodomens](/maintainers/goodomens)[@GoodOmens](https://github.com/GoodOmens)

---

Top Contributors

[![LC43](https://avatars.githubusercontent.com/u/48201?v=4)](https://github.com/LC43 "LC43 (294 commits)")[![carmoreira](https://avatars.githubusercontent.com/u/2347807?v=4)](https://github.com/carmoreira "carmoreira (65 commits)")

---

Tags

frameworkwordpressSettingsadmintaxonomiescustom-post-typesmeta-boxes

###  Code Quality

TestsPHPUnit

Code StylePHP\_CodeSniffer

### Embed Badge

![Health badge](/badges/saltus-framework/health.svg)

```
[![Health](https://phpackages.com/badges/saltus-framework/health.svg)](https://phpackages.com/packages/saltus-framework)
```

###  Alternatives

[redux-framework/redux-framework

Build better and beautiful sites in WordPress, faster.

1.8k6.2k](/packages/redux-framework-redux-framework)[alleyinteractive/pest-plugin-wordpress

WordPress Pest Integration

273.9k1](/packages/alleyinteractive-pest-plugin-wordpress)

PHPackages © 2026

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