A clean approach to organize your WordPress content - an alternative to post types and taxonomies.
PHP JavaScript
Fetching latest commit…
Cannot retrieve the latest commit at this time.
Failed to load latest commit information.


Build Status Code Climate Test Coverage Latest Stable Version License

Content Types

DO NOT USE YET! Development has just started.

This library implements a clean approach to organize your WordPress content. Posts and terms (post types and taxonomies respectively) are easy to extend, but use a bad database schema. This brings along all kinds of performance issues, especially on custom post types with a lot of meta. The database schema should reflect the type of content which is what this library aims to do. There is no meta in this library - all there is are dedicated database fields with a matching types and structures.


The main concept behind this library is that of an "item". An item can be considered the equivalent of a post or term. Every item has a specific type which is the equivalent to a post type or taxonomy. A major difference is that every type has its own database table - items of different types do not use a shared table.

Although post types and taxonomies are somewhat different, they have a lot of common ground, so this library does not make an obvious distinction between them. Instead, there is the concept of a "simple item" (and, related to it, a "simple type"). It behaves like a regular item, but it contains less data, and it can easily be created from another item's edit screen.

Installation and Setup

You can download the latest version from the WordPress plugin repository.

If you like, you can also use it as a must-use plugin by moving the directory into the wp-content/mu-plugins directory and then moving the main file content-types.php from the plugin's directory to the must-use plugins root directory (i.e. from wp-content/mu-plugins/content-types to wp-content/mu-plugins). Note that, while must-use plugins have the advantage that they cannot be disabled from the admin area, they cannot be updated through WordPress, so you're recommended to keep them up to date manually.

Contributions and Bugs

If you have ideas on how to improve the plugin or if you discover a bug, I would appreciate if you shared them with me, right here on GitHub. In either case, please open a new issue here!

You can also contribute to the plugin by translating it. Simply visit translate.wordpress.org to get started.