Custom Post Types — Integrations — Pure Metafields

Docs/Integrations/Custom Post Types

Custom Post Types

Register custom post types from a visual form under Pure Fields → Post Types — full control over labels, archive pages, REST/Gutenberg support and admin placement, with no register_post_type() by hand.

Pure Metafields admin screen: posttype
Creating a post type. Custom labels, REST API / Gutenberg support, optional archive pages and flexible columns — then Create Post Type.

Registration itself is visual-only — Pure Fields stores your configuration and calls WordPress's own register_post_type() with it on init. There's no separate filter for defining a post type in code; use the Post Type Builder screen. Everything downstream — attaching metaboxes, reading meta, querying posts — works exactly like any other post type.

Attach a metabox to your new post type

Use the post type's slug (set when you created it) in a metabox's post_type key, the same way you would for post or page:

PHP · functions.php
add_filter( 'tp_meta_boxes', function( $boxes ) {
    $boxes[] = [
        'metabox_id' => 'project_details',
        'title'      => 'Project Details',
        'post_type'  => [ 'project' ],  // your custom post type's slug
        'fields'     => [
            [ 'id' => 'project_client', 'type' => 'text',  'label' => 'Client' ],
            [ 'id' => 'project_year',   'type' => 'text',  'label' => 'Year' ],
        ],
    ];
    return $boxes;
} );

Read the values on your archive/single templates the usual way, with tpmeta_field( 'project_client' ) — see Developer Guide → Helper Functions.

Pairs well with

A custom taxonomy for organizing entries, and a repeater field for per-entry lists (e.g. a project's gallery of images).