Create custom post types, taxonomies and custom fields with ease making WordPress a more robust CMS.

The best content management system in the world just got better.


  • Add: Upload field


  • Add: Upload field

  • Fix warning messages "implode(): Invalid arguments passed..."

  • Fixed: register_taxonomies and register_post_types was hooking the after_setup_theme instead of init.
  • Fixed: created default POST params to avoid "Undefined index" notices.
  • Fixed: testing if field exists before trying to access it.
  • Fixed: testing hide_type field before accessing it.
  • Fixed: handling not found custom field to avoid output of Array.

  • = - 2014-07-06 Arnold Bailey
  • * Added "required" attribute override to the [ct_in] shortcode.
  • * Fixed network level taxonomy edit which was losing field settings.
  • * Allow ascending and descending sort of custom field options in dropdowns radio checkbox lists.
  • * Fixed radio button custom fields not setting to their default.

  • Fixed post type image column display.

  • Fixed Attachment custom fields save that got broken in WP 3.5

  • Changed Administrator capabilities setting.
  • Removed "date" class from DatePicker. Was causing problems with the validation

  • Changed Role dropdown to not display non-editable roles.
  • Changed CP_* defines to CPT_* to avoid naming collisions with CollabPress

  • BOM in file causing problems

  • Added Hide input for this Post Type which prevents showing a given Custom field on the admin input page for that post type.

  • Fixed glitch in custom column display in Admin
  • Refactored lazy loading of datepicker CSS

  • = = 2013-09-15 Arnold Bailey
  • * Fix for catching when all checkboxes are empty

  • Changes to checkbox custom field code.

  • Removed PHP 4 type constructors which now cause Warnings

  • Fix to save_custom_fields were it would delete meta data incorrectly on check boxes.

  • Removed add_taxonomy function because of name collision.

  • changes to assign_terms processing.

  • Changes to JS loading

  • = = 2013-06-08 Arnold Bailey
  • * Moved script loading to the footer so shortcodes can be scanned to see if the script is actually needed. Requires jQuery(document).ready() around script using them.
  • * Fixed default theme for datepicker

Version 1.3.3
  • = 1.3.3 = 2013-04-15 Arnold Bailey
  • * Fixed blank assign_terms due to order of processing settings

  • Fixed duplicate taxonomy menu when used on attachment post type
  • Fixed "attachments" assign_terms capability setting

  • Fixed display problem with multiple checkboxes

  • blocked post update when post moved between trash and active to prevent custom fields from being lost.

  • Added assign_terms capabilties to use the associated post_types.
  • Note that on multiple post types assigned to one taxonomy can only enable assign_terms for one post_type,
  • because assign_terms cannot accept an array.

  • Added missing quotes on datepicker call

  • Fixed problem with multiselect custom fields display

  • Added get_custom_fields_set($post_type)
  • Changed Map Meta Capabilities to default to True
  • Simplified display_custom_fields.php

  • Added CustomPress

Version 1.3.2
  • Added custom query var string for post types.
  • Added custom query var string for taxonomies.
  • Added EP Mask settings for post types, supports Endpoints.
  • Added EP Mask settings for taxonomies, supports Endpoints.
  • Changed flush_rewrite_rules to allow other plugins to setup rewrites before the global flush_network_rewrite_rules();
  • Added create_xxxxs capability which was added in WP v3.5

Version 1.3.1
  • Added show_admin_column attribute to the Taxonomy editor for Wordpress > v3.5

  • Added block on combining post types on Admin screens which apparently happens with some plugins.

  • Added dummy files for en and en-US datepicker language files.

  • Fixed problem when trying to erase all capabilities for a role.

  • Fixed problem with 'allow_per_site_content_types'.

  • Fixed problem with adding Network level custom types.

  • Fixed mixed local and network custom fields.
  • Display network custom types switch fix.

  • Fixed problem with Export menu not showing on non-multisite.

Version 1.3
  • Added Map Meta Capability to Post Types editor. It was being overwritten when the custom post type was saved even if it was set by another program.
  • New custom post types automatically grant all capabilities to administrator role
  • Added Role Capabilities editor to post types. Roles can now be assigned capabilities where the capability type is not equal to "post"
  • Added [custom_field_block] shortcode to display a post's custom fields from a shortcode.
  • Added [custom_fields_input] shortcode to provide input of custom fields.
  • Added [ct_filter] shortcode to provide control of field order and usage by category.
  • Remove empty fields in block output.
  • Added Shortcodes instruction page to Content Types menu pages.
  • Changed Setting in the Network Admin settings to Enabled subsites content types and Network wide content types.
  • Added Export / Import for Custom types

  • Removed pass by reference that caused error in PHP 5.4

Version 1.2.4
  • Added Map Meta Capability to Post Types editor. It was being overwritten when the custom post type was saved even if it was set by another program.
  • New custom post types automatically grant all capabilities to administrator role
  • Added Role Capabilities editor to post types. Roles can now be assigned capabilities where the capability type is not equal to "post"
  • Added [custom_field_block] shortcode to display a post's custom fields from a shortcode.

  • Backup Buddy uses it's own version of Datepicker (timepicker) which was interfering with standard Wordpress Datepicker causing downstream thickbox to fail.
  • More fiddling with the language translation file loading.
  • Changed dynamic stylesheet loader.

  • Removed duplicate init_vars() overiding the object inheritance

Version 1.2.3
  • Added new update notification
  • Tested against WP 3.4
  • Added custom required error messages for custom fields
  • Added regular expression validation for custom text and textarea fields
  • Added custom required error messages for regex validation
  • Reworked Network and Local custom field handling.
  • Added regex options flags

  • Fixed double label on Show UI
  • Fixed display_custom_post_types() to handle multiple post_types.

  • Changed priority of when custom field shortcodes are expanded so they will occur first.
  • is allows other shortcodes to use the custom values for example
  • mbed][ct id="ct_Video_text_f2ed" property="value"][/embed]
  • ll now properly expand.

  • Fixed settings not saving from Network menu

  • Ensured that on custom Archive pages that the post_type query_var would be passed as a string if only one custom post_type. Multiple post_type pages pass as an array which will confuse some parts of WordPress. This is a Wordpress bug work around.
  • Out of order script queuing

Version 1.2.2
  • = 1.2.2 =
  • * filter the_category and the_tags to properly combine custom and standard taxonomies if selected in post_types.

  • Fixed bad url on Taxonomy when running under Multisite.

  • = =
  • * Fixed stripslashes problem with Gravity forms.
  • * Changes datepicker translation plugin loading sequence.

  • = = 2012-05-03 Arnold Bailey
  • * Added custom type display inclusion for Home, Front, Archive and Search pages

  • = = 2012-05-03 Arnold Bailey
  • * extraneous spaces causing header already sent problem

  • = = 2012-05-03 Arnold Bailey
  • * fixed improper supports tags in setup. Things like custom-fields were entered as custom_fields
  • * fixed numerous xhtml validation problems.
  • * Changed Custom field metabox name to CustomPress Fields so they won't be confused with Wordpress native custom fields editor
  • * Refactored objects so that they properly inherit and don't initialize the same thing 2 and 3 times.
  • * Blocked changes to Custom fields on Bulk Edit

  • = = 2012-04-30 Arnold Bailey
  • * changed script inclusion so the datepicker and validation can run on the front end for Directory and classifieds.

  • Fixed $_REQUEST parameter name collision of 'post_type' conflicting with wp admin.php
  • Fixes settings not being remembered for Post Type checkboxes.

  • Fixed error on display of radio and selectbox shortcodes
  • Fixed debug warnings in several places.

Version 1.2.1
  • Added field reordering to Custom Fields
  • Added Required fields
  • Added Date Picker
  • Added Datepicker themes
  • Added Datepicker date formats
  • Added individual date formats for each created field
  • Added shortcodes for Taxonomy [tax id="tax" before="your before text " separator=", " after=" your after text"]
  • Added shortcodes for Custom fields including metadata [ct id="field id" property=" title | description | value "] or leave out property entirely for default value.
  • Enabled shortcodes in widgets
  • Change embed codes to style for better error trapping. The old style still works so old templates aren't broken.
  • Corrected CP_PLUGIN_URL for SSL
  • Fixed double display of options on Radio buttons
  • Fixed Group checkbox problem
  • Added class exists exclusions
  • Verified function as a direct sub module for Classifieds, Directory etc.
  • Added stripslashes_deep on $_POST to handle apostrophes properly.

Version 1.2
  • Compatibility with the Directory plugin;

Version 1.1.9
  • Fixed problem with "Allow for WP/plugins" when editing Custom Fields;
  • Added feature for assign regular taxonomies to Custom Post Type;

Version 1.1.8
  • Fixed Warning\Notice message;
  • Fixed problem with change selectbox on multiselectbox;
  • Fixed labels for Custom Fields on media page;
  • Fixed saving value of non checked checkbox(custom fields) on all pages;

  • Fixed problem of saving the custom hierarchical taxonomy on media page;
  • Fixed saving value of non checked checkbox(custom fields) on media page;

Version 1.1.7
  • Fixed problem with change type on "'radio, checkbox, selectbox, multiselectbox" when edit custom fields;
  • Fixed display checkbox of "Allow for WP/plugins" on Edit Custom Field page;
  • Added feature for display Custom Fields on media page (for Attachment post type);
  • Display terms of Attachment post type like submenu of the media menu;

Version 1.1.6
  • Display hierarchical taxonomy as tree of checkboxes for the 'attachment' post type.

Version 1.1.5
  • Fixed problem with upper case in name of taxonomy;
  • Fixed problem of display "An unidentified error has occurred" when click on "All ...";
  • Fixed problem with create custom template;
  • Changed style for Custom fields;
  • Changed some texts;

Version 1.1.4
  • Added label for block of Custom Fields ("Custom Fields block" on create/edit Post Type page).
  • Added option for allow use custom fields in WP and other plugins ("Allow for WP/plugins" on create Custom Fields page).
  • Added feature for add custom fields as columns on custome post type page ("Display Custom Fields columns" on edit Post Type page).
  • Added buttons for delete: "Field and values" for delete custom field and all its values from postmeta and "Only field " for delete only custom field.

Version 1.1.3
  • Fixed problem with navigation menu on home page

Version 1.1.2
  • Major update for WP 3.1 new features
  • Has Archive for post types.
  • Rewrites for post types - custom slugs, allow front base, feeds, pages
  • Rewrites for taxonomies - custom slugs, allow front base, hierarchical URL's
  • Better handling of network-wide/sub-site content types
  • Single .pot file
  • Code improvements / bug fixes

Version 1.1.1
  • Fix bug with Custom Fields not saving on edit.

Version 1.1
  • Fix "Quick Edit" deletion of custom fields bug.

Version 1.0.9
  • Fix minor bug.

Version 1.0.8
  • Updated for WordPress 3.1
  • New features added
  • Admin GUI improvements
  • Bug fixes
  • Code improvements

Version 1.0.7
  • Bug fixes.

Version 1.0.5
    Downloads 61,618 Compatibility WordPress 4.3.1Multisite 4.3.1BuddyPress 2.3.5

    CustomPress is the ultimate plugin for transforming WordPress from a blogging platform into a full content management system.

    Take WordPress to the next level with CustomPress. Manage more content, more efficiently with custom post types.

    Create custom post types for a truly custom CMS.
    Create custom post types for a truly custom CMS.

    Power, Organization and Control

    Create and sort content into custom post types for everything from movies, to books, to real estate listings, to design galleries.

    Add control and flexibility for content management and design consistency.

    Create Your Own Custom Fields

    Distinguish your new post types with custom fields. Add text boxes, radio buttons, dropdown menus and checkboxes.

    Assign each field its own design and include tools to make organization and management fit your needs better.

    Create beautiful designs around custom fields and taxonomies.
    Create beautiful designs around custom fields and taxonomies.

    Fit Any Theme

    Make custom post types, complete with tags, categories, custom fields and design elements – including dashboard icons (we thought of everything).

    The automatically generated theme files and shortcode library make it easy to style for a perfect design fit.

    For help and information on installing plugins you can view our Installing WordPress Plugins Manual.

    If you are using a Multisite please note: There are TWO ways to use CustomPress:

    1. Network Activate. In the Network Admin>CustomPress>Settings Menu you will need to enable subsite contents. There will be two checkboxes there: first enables the Content Type menu on subsites in the CustomPress section. The second allows subsites to use any Network level defined custom types. When network activate you can define custom types at the Network level and these will appear on all subsites. If enabled you can also define custom types at the subsite level and they will be restricted to just that subsite.

    2. Activate Site by Site. Each site creates their own content and it is restricted to that site.

    Important: if you wish to allow the creation of content types on each sub-site when the plugin is not network-activated, you must first network-activate it and enable sub-site content types. Then network-deactivate.

    Pay attention to the above: You cannot move content around after it has been created so you would have to delete and re-enter. In most cases you probably should not network activate and activate locally on those that need CustomPress.

    Before starting with creating your post types and content you should do a quick layout of how you see your Post Type, Taxonomies and Custom Fields working together. This will save you time later. CustomPress is a pretty big plugin and has lots of features, you shouldn’t walk into using it without being prepared. To learn more about Post Types in WP CLICK HERE.

    OK Onward!

    The Network Admin >Content Types menu is where you create your network content types.

    Custompress dash

    Let’s create a Custom Post Type setup for a new website. This site is going to be a beginning gardening guide. So I’ll follow my own advice and make a list of what I’ll need to make this comprehensive.

    Post Type outline

    Now that I know what I’m going to be doing let’s make a Post Type!

    First things First! Name your post type, and be sure you like it. It cannot be changed!

    Then you select the features that you want your post type to support. Title and Editor are defaults, everything else is up to you!

    **Multisite installs can find the Content Types menu on the Network Admin

    Add post type 1

    Add post type 2

    Quick Tour of the remaining settings:

    • Support Regular Taxonomies: translates to “do you want to use the default tags and categories for this Post Type?”
    • Capability Type: Should leave at default unless you know what you’re doing. If you want to learn more CLICK HERE.
    • Map Meta Capabilities: More advanced stuff, default is good here too. If you want to learn about it CLICK HERE.
    • Labels: What wording your post type will use across your site. Each has an explanation and a default value.
    • Description: this one is easy! A summary of what the Post Type is (not required)
    • Menu Position: Where it displays on the Dashboard Menu. Default is just above first divider.
    • Menu Icon: Optional. Load 16px x 16px image into your media library. Copy the URL here.
    • Display Custom Fields Columns: You’ll only see this once you’ve added custom fields to your post type.
    • Public: You can choose to make the post type public or not. If you want granular control over the visibility you can set the following 4 parameters by selecting Advanced.
    • Show UI, Show in Nav Menus, Publicly Queryable and Exclude From Search: will all be grey and will mimic the True or False setting in the Public menu option. They become individually changable when you choose Advanced in the Public menu.
    • Hierarchical: Does your post type use a hierarchy? Regular Post Types don’t. If you’re doing a simple single post type, leave this False.
    • Has Archive: determines if the post type is treated as having it’s own archive.
    • Rewrite: allow permalinks to be rewritten at any time.
    • EP Mask: enables endpoint masks for permalinks. For more on this, see HERE and HERE.
    • Query Var: allows your post to be query-able <— is that a word? spellcheck says so, so I guess it must be…
    • Can Export: another easy one, do you want to be able to export these?

    PHEW! OK done with that! See not as hard as you thought, But you’re not done yet!

    I need a way to categorize my Plant post type. So, I’m going to need a Taxonomy.

    What kind of taxonomy you say? Well I will tell you! I use a hierarchical taxonomy (fancy phrase for Category!). I don’t need a non-hierarchical taxonomy (another fancy word for tags) because I am using the WP tags for this post type. Remember that “Support Regular Taxonomies:” setting? Aha! It’s making sense now isn’t it!?

    So here I go with my Taxonomy

    Add Taxonomy 1

    Add Taxonomy 2

    You’ve seen most of these settings already, so let’s pick out the one we haven’t touched on. They all tie in together so you’ll see the same rules as you saw in the post type, just applied to your taxonomy now.

    Post Type: you will have to pick a post type to assign this taxonomy to. Yes you can select more than one. HOLD ON! I see those wheels turning, just stay with me! We have one more thing to do before we can start making custom posts.

    Remember the Hierarchical setting here will determine if your taxonomy behaves like categories or tags.

    OK last go round in Custom Fields

    I actually have a few in my post type, but we only need to look at one, the settings are the same for all. It’s just how you use them that will change.

    Add Custom Field

    All that Embed stuff at the top is important, but we don’t need it yet, so it’s OK to skip over it right now. Just don’t forget about it!

    Field Title: where you determine your title and if it’s a required field. You can also allow or deny other plugins or posts to use this field.

    Field Type: Your entry method. Text, multi-line text, radio button, check boxes, drop-down select, multiselect and date picker, are all options. Just choose and add the options or parameters accordingly.

    See, you’re a pro at this now, you already know what the last two fields do!

    Now let’s check out what we have!

    new plant


    Content Part is done! Easy Peasy right?

    Now to get it show up on our site to our users. Right now, we have lots of great info but it won’t display on the front end just yet. We have to add it to our page template. You can do this by using the Embed Code that is created when you create a new content type. Since the Post Type option uses the default Post values when created we don’t need to do anything special to get it to show. Here is a screenshot of what it looks like now:

    Post pre-embed

    As you can see, the Post Title , Content, Tags and default Post items are showing fine, but our Custom Taxonomies and Custom Fields are not showing. We will use the Embed Codes that were created when we created our custom content to get these to show up on the post page.

    You will find the embed codes by hovering the item you want to add to the page template and clicking Embed Code. You’ll find this on both Taxonomies and Custom Fields, as well as some additional info on the Custom Fields tab about using these codes.

    1. Embed code 2. Shortcode
    1. Embed code
    2. Shortcode

    You can use these Embed Codes 2 ways:

    1. Simply enter the shortcode created on any page or post, directly in the WordPress editor, or
    2. You can embed the php embed code in the page template so that you don’t have to manually add the shortcode to each post. To do this follow the instructions below:

    First you need to find the page template you want to embed these into. You can create your own from scratch or you can copy your existing single.php and use the format “single-[post_type].php” . This is easily done by connecting to your site via FTP, opening your single.php template for the active theme in a Notepad editor (NOT WORD..if you need one try your built in Notepad or THIS) and ‘Save As’ the new file-name. Then just put it back in your theme folder via FTP.

    There is a built in template creator that does what I have just described above, you will find it on the CustomPress>Settings menu. It only does what I have described above, it will NOT embed your custom taxonomies or fields. It’s best to do create the template yourself if you are comfortable doing so.

    *NOTE: If you defined a rewrite slug in the post type, your naming format must be “single-[rewrite_slug].php”

    Page Template

    Now we just embed the php codes in our new page template somewhere inside The Loop.

    With Custom Fields you have the option of displaying your items all with one shortcode. This save the various entires that you need to make of each shortocode to display the Label and Value each individually.


    Here it is in my template:

    1. The loop 2. The shortcode
    1. The loop
    2. The shortcode

    Save and upload the changes via FTP.

    Now lets see how it looks on the site!

    Shortcode on Site

    Not too bad! A couple of CSS tweaks and we’re looking good! :)

    CustomPress also provides a few additional Shortcodes, you can see these under the Shortcodes tab on the CustomPress menu (what? too obvious?) They give you a bit more advanced control over the Custom Field Input, Custom Field Filters and Custom Field Blocks.

    And that’s it! Not so bad ‘eh?!

    Incredible Flexibility

    Manage all types of content by adding a new level of customization to WordPress.

    • Create custom post types
    • Assign custom taxonomies
    • Custom labels
    • Description
    • Custom menu icons
    • Add a WordPress dashicon
    • Custom post UI
    • Create archive
    • Shortcode integration library
    • Export option
    • Hide custom types
    • Add custom fields
    • Simple ordering for custom fields
    • Multi-line text boxes
    • Radio buttons
    • Assign check boxes
    • Custom dropdown menus
    • Theme integration embed codes
    • Theme files for each custom post type