soberwp / models
WordPress plugin to create custom post types and taxonomies using JSON, YAML or PHP files.
Installs: 68 626
Dependents: 3
Suggesters: 1
Security: 0
Stars: 172
Watchers: 13
Forks: 13
Open Issues: 3
Type:wordpress-muplugin
Requires
- php: >=5.6
- composer/installers: ^1.5
- hassankhan/config: ^1.0
- symfony/yaml: ^4.1
Requires (Dev)
README
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.
Installation
Composer:
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
Manual:
- Download the zip file
- Unzip to your sites plugin folder
- Activate via WordPress
Requirements:
- PHP >= 5.6.x
Setup
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.
Usage
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.
Post Types
Create a custom post type.
Required:
{ "type": "post-type", "name": "book" }
Basic:
{ "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"
.
Multiple:
[ { "type": "cpt", "name": "book", "supports": [ "title", "editor", "thumbnail" ] }, { "type": "cpt", "name": "album", "supports": [ "title", "editor", "comments" ] } ]
All Fields:
Post Type Tips:
"active": false
stops the post type from being created. Default is set totrue
."type": "post-type"
also accepts a shorthand"type": "cpt"
;
Taxonomies
Create a custom taxonomy.
Required:
{ "type": "taxonomy", "name": "genre" }
Basic:
{ "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"
Multiple:
[ { "type": "category", "name": "genre", "links": "book" }, { "type": "tag", "name": "author", "links": "book" } ]
"type": "category"
and "type": "tag"
shorthands are explained below under Tips.
All Fields:
Taxonomy 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.
Support
- Follow @withjacoby on Twitter
- Buy me a beer or pay my rent, paypal.me/darrenjacoby
Updates
Composer:
- Change the composer.json version to ^1.0.4**
- Check CHANGELOG.md for any breaking changes before updating.
$ composer update
WordPress:
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