Ready to get started?Download WordPress

Plugin Directory

GigaOM Custom Post Type Factory

Makes defining custom post types as easy as creating a widget. Includes example code to get you started.

This is a convenience class and collection of methods to make creating new custom post types with their own metaboxes easy.

The general idea is to define a function that's hooked to the register_post_types action. The function defines a class for your post type that extends the GO_Cpt class. This follows a design pattern established by the modern widgets API (as introduced in WP 2.8) http://codex.wordpress.org/Widgets_API#Developing_Widgets .

The result is a new custom post type and much easier creation and updating of custom meta associated with that post type. You'll also have a convenient object you can use to access the metadata associated with each post.

function my_customposttype()
    class My_CustomPostType extends GO_Cpt
        function __construct()
            // execute the parent constructor with the name 
            // and definition for the custom post type
            parent::__construct( $post_type_name , $post_type_definition );
        function metabox( $post , $meta )
            // print out the form here
            // this method is optional, only use it if you want to 
            // add a metabox to your custom post type

        function update( $new_meta , $old_meta )
            // sanitize and validate the metadata
            // then return $meta so it can be saved
            // this method is required if a 
            // metabox() method is included

    global $my_customposttype;
    $my_customposttype = new My_CustomPostType;

// hook that function to the register_post_types action
add_action( 'register_post_types' , 'my_customposttype' );

Backstory: defining the post type class inside the function avoids issues with loading order and fatal errors resulting from attempting to extend a class that might not exist yet. Isn't PHP awesome?

See the included hello world example: http://plugins.trac.wordpress.org/browser/go-cptfactory/trunk/example-helloworld-cpt.php

To access the meta associated with a post, you can call $my_customposttype->get_meta( $post_id );

You can easily add a method and hook to filter the_content or the_excerpt to insert custom values that may have been entered in the post meta. Simply add add_filter( 'the_content' , array( $this , 'the_content' )); in the __construct() and then define another method in the My_CustomPostType class such as:`

    function the_content( $content )
        $meta_print = print_r( $this->get_meta( get_the_ID() ) , TRUE ); 
        return $meta_print . $content 


Requires: 3.3 or higher
Compatible up to: 3.4.2
Last Updated: 2012-8-13
Downloads: 370


5 stars
5 out of 5 stars


Got something to say? Need help?


Not enough data

0 people say it works.
0 people say it's broken.