Custom Post Type

Use this to create a custom post type

It includes the custom post taxonomy and supports (like thumbnail, categories, and excerpt)

define('LW_TEXT_DOMAIN', 'lightweight');
$slug = 'portfolio';
$labels = 
array(
    // The plural form of the name of your post type.
    'name' => __( 'Portfolio',LW_TEXT_DOMAIN), 
     
    // The singular form of the name of your post type.
    'singular_name' => __('Portfolio',LW_TEXT_DOMAIN),
     
    // The rewrite of the post type
    'rewrite' => 
        array(
            // prepends our post type with this slug
            'slug' => __( 'portfolio' ,LW_TEXT_DOMAIN) 
        ),
         
    // The menu item for adding a new post.
    'add_new' => _x('Add Item', 'portfolio',LW_TEXT_DOMAIN), 
     
    // The header shown when editing a post.
    'edit_item' => __('Edit Portfolio Item',LW_TEXT_DOMAIN),
     
    // Shown in the favourites menu in the admin header.
    'new_item' => __('New Portfolio Item',LW_TEXT_DOMAIN), 
     
    // Shown alongside the permalink on the edit post screen.
    'view_item' => __('View Portfolio',LW_TEXT_DOMAIN),
     
    // Button text for the search box on the edit posts screen.
    'search_items' => __('Search Portfolio',LW_TEXT_DOMAIN), 
     
    // Text to display when no posts are found through search in the admin.
    'not_found' =>  __('No Portfolio Items Found',LW_TEXT_DOMAIN),
     
    // Text to display when no posts are in the trash.
    'not_found_in_trash' => __('No Portfolio Items Found In Trash',LW_TEXT_DOMAIN),
      
    // Used as a label for a parent post on the edit posts screen. Only useful for hierarchical post types.
    'parent_item_colon' => ''
);
 
// Set Up The Arguements
$args = 
array(
    // Pass The Array Of Labels
    'labels' => $labels, 
     
    // Display The Post Type To Admin
    'public' => true, 
     
    // Allow Post Type To Be Queried 
    'publicly_queryable' => true, 
     
    // Build a UI for the Post Type
    'show_ui' => true, 
     
    // Use String for Query Post Type
    'query_var' => true, 
     
    // Rewrite the slug
    'rewrite' => true, 
     
    // Set type to construct arguements
    'capability_type' => 'post', 
     
    // Disable Hierachical - No Parent
    'hierarchical' => false, 
     
    // Set Menu Position for where it displays in the navigation bar
    'menu_position' => 200, 
     
    // Allow the portfolio to support a Title, Editor, Thumbnail
    'supports' => 
        array(
            'title',
            'editor',
            'thumbnail'
        ) ,
        'rewrite' => 
        array(
            // prepends our post type with this slug
            'slug' =>  $slug
        ),
);
 
// Register The Post Type
register_post_type(__( 'portfolio' ,LW_TEXT_DOMAIN),$args);
 
 
 
// Register the Taxonomy
register_taxonomy(__( "filter" ,LW_TEXT_DOMAIN), 
 
// Assign the taxonomy to be part of the portfolio post type
array(__( "portfolio" ,LW_TEXT_DOMAIN)), 
 
// Apply the settings for the taxonomy
array(
    "hierarchical" => true, 
    "label" => __( "Categories" ,LW_TEXT_DOMAIN), 
    "singular_label" => __( "Categories" ,LW_TEXT_DOMAIN), 
    "rewrite" => array(
            'slug' => 'filter', 
            'hierarchical' => true
            )
    )
);
 
 
add_post_type_support( 'portfolio', 'excerpt' );

Comments