WordPress plugin intelligence profile

SuperCPT

Insanely easy and attractive custom post types, custom post meta, and custom taxonomies

WP PlugIndex snapshot

Current directory snapshot

Tested up to WordPress 3.6
Current version0.2.1
WordPress coverageTested up to WordPress 3.6
Minimum stackWP 3.0 · PHP —
Directory statusactive
Last directory update10 Aug 201313y ago
Active installations600Adoption metric — not a quality score
WordPress.org rating5.0 / 5 from 14 ratings
Official packageDirect from WordPress.org

Repository metrics are context, not quality scores. Active installations measure adoption and can strongly reflect a plugin’s age and historical popularity. Ratings, recent updates and “Tested up to” metadata also do not guarantee modern code, error-free operation, security, feature completeness or suitability for a particular site. Why active installs don’t tell the whole story →

WP PlugIndex currently records SuperCPT version 0.2.1 as active, updated 13y ago and tested up to WordPress 3.6.

Overview

About this plugin

UPGRADE NOTICE

SuperCPT now uses Font Awesome instead of Glyphicons. Some icon names will carry over, but not all. If this is a considerable inconvenience for you for a project, simply do not update it.

It’s not a security release, so updating isn’t necessary.

Overview

” Simply put, SuperCPT:

  • DRYs up the Custom Post Type and Custom Taxonomy process (e.g. automatically adds the name to all the labels),
  • allows you to set default options for all your Custom Post Types and Taxonomies,
  • significantly simplifies the process of creating, saving, and displaying Custom Post Meta,
  • is sexy! Your custom fields are styled to look great and SuperCPT comes with 361 awesome icons courtesy of Font Awesome.

Demo Video

TextMate/Sublime Text 2 Bundle

If you use TextMate, Sublime Text 2, or another editor which supports TextMate bundles, check out this set of snippets to turbo-charge your development.

And more…

See the Other Notes tab for instructions and demo code. Find more demos and a full reference at GitHub.

Since you’re a hard-core coder, check this out on GitHub if you want to contribute!

Instructions

Depending on when and where you’re declaring your Custom Post Types and Taxonomies, you have different options for which action to hook onto. after_setup_theme is the safest bet, but if you’re referencing this in another plugin, plugins_loaded is a good choice. To avoid a fatal error if something goes awry, you should check to see if the class Super_Custom_Post_Type exists before referencing it.

Don’t worry about keeping up, reference code is below.

Custom Post Types

To define a new Custom Post Type, instantiate the Super_Custom_Post_Type class with a string for the post type. For example,

$movies = new Super_Custom_Post_Type( 'movie' );

It works very much like register_post_type. The first thing you gained by using this is that the labels all got setup with either ‘Movie’ or ‘Movies’. If our post type were ‘indie-film’, the labels would have “Indie Film” and “Indie Films” as appropriate.

Of course, you do have the ability to set the plural word in cases such as goose/geese. You also gained the ability to define your own custom post type defaults through a filter. Lastly, you gained access to Super_Custom_Post_Type ‘s parent class, Super_Custom_Post_Meta, for fast, clean, intuitive custom post meta, which we’ll go into shortly.

Lastly, if you’ve built a lot of custom post types, you’re probably sick and tired of the pushpin icon. SuperCPT comes with 350 gorgeous icons courtesy of Font Awesome that are extremely easy to implement. Here’s what it looks like:

$movies->set_icon( 'film' );

Custom Taxonomies

To define a new Custom Taxonomy, much like with Custom Post Types, you instantiate Super_Custom_Taxonomy with a string for the term name. For example:

$actors = new Super_Custom_Taxonomy( 'actor' );

Again, we got free labels for doing this, using either ‘Actor’ or ‘Actors’ as appropriate, without needing to specify the 16 labels individually.

Custom Post Meta

Custom Post Meta is where SuperCPT shines the brightest, because this process is typically the most time-consuming. Super_Custom_Post_Meta is a free-standing class that can be added to any post type, even built-in post types (posts and pages). This class has a method add_meta_box which does the bulk of the work, and somewhat mimics the WordPress function.

Here’s an example:

$movies->add_meta_box( array( 'id' => 'features', 'fields' => array( 'tagline' => array( 'type' => 'text' ) ) ) );

The method add_meta_box takes an array of parameters (unlike the core function which takes normal ordered arguments). g. "movie_details" would become “Movie Details”).

fields is an array of all the fields in the meta box. It’s an associative array, where the keys in the array are the field names and the values are another associative array of attributes for the field. g.

passing 'data-src' => 'foo' would become the HTML attribute data-src="foo" in the field). See the reference for the full gamut of options, both for the add_meta_box argument array and the fields array.

Long story short, using this class means you don’t have to do any additional work to store data, retrieve data, style the boxes, and so on.

Helper Functions

SuperCPT has a couple of helper functions for displaying your post meta. get_scpt_formatted_meta and the_scpt_formatted_meta

Demo Code

Here is the full demo code:

function scpt_demo() { if (! class_exists( 'Super_Custom_Post_Type' ) ) return;

$demo_posts = new Super_Custom_Post_Type( 'demo-post' );

# Test Icon. Should be a square grid. $demo_posts->set_icon( 'th-large' );

# Taxonomy test, should be like tags $tax_tags = new Super_Custom_Taxonomy( 'tax-tag' );

# Taxonomy test, should be like categories $tax_cats = new Super_Custom_Taxonomy( 'tax-cat', 'Tax Cat', 'Tax Cats', 'category' );

# Connect both of the above taxonomies with the post type connect_types_and_taxes( $demo_posts, array( $tax_tags, $tax_cats ) );

# Add a meta box with every field type $demo_posts->add_meta_box( array( 'id' => 'demo-fields', 'context' => 'normal', 'fields' => array( 'textbox-demo' => array(), 'textarea-demo' => array( 'type' => 'textarea' ), 'wysiwyg-demo' => array( 'type' => 'wysiwyg' ), 'boolean-demo' => array( 'type' => 'boolean' ), 'checkboxes-demo' => array( 'type' => 'checkbox', 'options' => array( 'one', 'two', 'three' ) ), 'radio-buttons-demo' => array( 'type' => 'radio', 'options' => array( 'one', 'two', 'three' ) ), 'select-demo' => array( 'type' => 'select', 'options' => array( 1 => 'one', 2 => 'two', 3 => 'three' ) ), 'multi-select-demo' => array( 'type' => 'select', 'options' => array( 'one', 'two', 'three' ), 'multiple' => 'multiple' ), 'date-demo' => array( 'type' => 'date' ), 'label-override-demo' => array( 'label' => 'Label Demo' ) ) ) );

# Add another CPT to test one-to-one (it could just as easily be one-to-many or many-to-many) $linked_posts = new Super_Custom_Post_Type( 'linked-post', 'Other Post', 'Other Posts' ); $linked_posts->add_meta_box( array( 'id' => 'one-to-one', 'title' => 'Testing One-to-One relationship', 'context' => 'side', 'fields' => array( 'demo-posts' => array( 'type' => 'select', 'data' => 'demo-post' ), 'side-wysiwyg' => array( 'type' => 'wysiwyg' ) ) ) ); $linked_posts->set_icon( 'cogs' );

} add_action( 'after_setup_theme', 'scpt_demo' );<h3>To-Do</h3>

1. Add better support for multiple fields for one meta key

2. g. in fields array, a parameter might be 'rss' => 'PubDate' to prefer that field’s data over the post’s publication date.

WordPress.org metadata

Plugin tags

Topics listed for this plugin in the WordPress.org directory.

  • custom field
  • custom fields
  • custom post type
  • custom post types
  • cms
Compatibility & maintenance

Compatibility & maintenance

Tested up to WordPress 3.6

Not yet marked as tested with WordPress 7.1. WordPress.org currently lists Tested up to 3.6.

Current WordPress releaseWordPress 7.1
WordPress.org Tested up to3.6
Minimum requirementsWordPress 3.0 · PHP not listed
Update activity10 Aug 201313y ago

“Tested up to” is directory metadata supplied by the plugin author. WP PlugIndex does not turn an older declaration into a claim that the plugin is incompatible.

Changes recorded by WP PlugIndex

Recent tracked changes

No tracked version or compatibility changes have been recorded by WP PlugIndex yet.

Tracking & source

WP PlugIndex tracks public WordPress.org directory metadata and records selected version, compatibility and availability changes as they are detected.

Plugin watchlist

Watch this plugin

Sign in to your WP PlugIndex account or create a free account. Free accounts can watch up to 5 plugins and see what changed.

Watch limit

Watchlist limit reached

You have reached your current active watch limit.