Models is a WordPress plugin allowing you to create custom post types and taxonomies using JSON, YAML or PHP files.
You can now set post types and taxonomies using Intervention 2.x.x.
Recommended methods:
$ composer require soberwp/models:1.1.0
Models is a mu-plugin so it doesn't have to be activated.
$ composer require soberwp/models:1.1.0-p
- Download the zip file
- Unzip to your sites plugin folder
- Activate via WordPress
- PHP >= 5.6.x
By default, create folder models/
within the active theme directory.
If you are a Roots Sage the default folder is app/models/
Alternatively, you can define a custom path using the filter below within your themes functions.php
file:
add_filter('sober/models/path', function () {
return get_stylesheet_directory() . '/your-custom-folder';
});
That's it, now go ahead and add model-name.json
files, in the folder or subfolders to begin creating your models. Use Unravel to automatically move the config files outside of your theme path for better separation of concerns.
The data structure follows a similar data structure to WordPress taxonomies and post types arrays, so if an config option is missing from the examples below, follow the developer's reference and place it within "config": {}
If values are not specified, defaults are the same as WordPress defaults.
Additionally, if the Extended CPTs library is available, Models will use it when registering your post types and taxonomies instead allowing extended functionality within your Models.
Extracted examples presented below are in JSON format.
Create a custom post type.
{
"type": "post-type",
"name": "book"
}
{
"type": "cpt",
"name": "book",
"supports": [
"title", "editor", "thumbnail"
],
"labels": {
"has_one": "Book",
"has_many": "Books",
"text_domain": "sage"
}
}
In the above example, "labels": {}
are redundant because "Book"
and "Books"
would have been generated from "name"
.
[
{
"type": "cpt",
"name": "book",
"supports": [
"title", "editor", "thumbnail"
]
},
{
"type": "cpt",
"name": "album",
"supports": [
"title", "editor", "comments"
]
}
]
"active": false
stops the post type from being created. Default is set totrue
."type": "post-type"
also accepts a shorthand"type": "cpt"
;
Create a custom taxonomy.
{
"type": "taxonomy",
"name": "genre"
}
{
"type": "tax",
"name": "genre",
"links": [
"post", "book"
],
"labels": {
"has_one": "Book Genre",
"has_many": "Book Genres",
"text_domain": "sage"
}
}
"links": (string|array)
assigns the taxonomy to post types. Defaults to "links": "post"
[
{
"type": "category",
"name": "genre",
"links": "book"
},
{
"type": "tag",
"name": "author",
"links": "book"
}
]
"type": "category"
and "type": "tag"
shorthands are explained below under Tips.
"active": false
stops the taxonomy from being created. Default is set totrue
."type": "taxonomy"
also accepts shorthands;"type": "tax"
"type": "category"
or"type": "cat"
creates a category taxonomy."type": "tag"
creates a tag taxonomy.
- Follow @withjacoby on Twitter
- Buy me a beer or pay my rent, paypal.me/darrenjacoby
- Change the composer.json version to ^1.0.4**
- Check CHANGELOG.md for any breaking changes before updating.
$ composer update
Includes support for github-updater to keep track on updates through the WordPress backend.
- Download github-updater
- Clone github-updater to your sites plugins/ folder
- Activate via WordPress