preloader

How to Build Custom Post Types and Dynamic Content With JetEngine

JetEngine is the most capable plugin in the Crocoblock Jet suite. Where most Elementor addons add widgets and styling options, JetEngine adds data infrastructure: custom post types, custom taxonomies, custom meta fields, and dynamic tags that pipe that data into Elementor templates. If you need to build a directory, job board, real estate listing, or any site where structured data drives the frontend display, JetEngine is what makes it possible without writing PHP.

Understanding What JetEngine Actually Does

JetEngine works at the data layer, not the visual layer. It creates the containers (custom post types), the fields (meta fields), the categories (custom taxonomies), and the connections (relations between post types). Elementor then uses dynamic tags from JetEngine to pull that data into page templates. A property listing post type with meta fields for bedrooms, price, and location becomes a visual property card through an Elementor template that uses JetEngine dynamic tags for each field.

This separation between data structure and visual presentation is JetEngine’s main design principle. The data exists independently of the template, which means you can create multiple visual templates for the same data (a card view and a list view for the same property listings) and update the data structure without touching the templates.

Step 1: Create a Custom Post Type

Go to JetEngine -> Post Types -> Add New. Configure:

  • Name and slug – the post type identifier used in URLs and code
  • Labels – singular and plural display names
  • Settings – whether it has archives, supports comments, is publicly queryable
  • Admin columns – which fields appear in the WordPress admin list for this post type

After creating, the post type appears in the WordPress admin menu. You can create posts of this type immediately, though the real value comes after adding meta fields in the next step.

Need help building with Jet plugins? Describe your project and get a free estimate.

Step 2: Add Meta Fields

Go to JetEngine -> Meta Fields -> Add New. Create a field group and assign it to your new post type. Add fields relevant to your content type. JetEngine supports a complete field library: text, number, date, select, checkbox, gallery, video, map, repeater, and more. For a property listing:

  • Price (number field)
  • Bedrooms (number)
  • Bathrooms (number)
  • Property Type (select with options: house, apartment, villa)
  • Location (map field with Google Maps integration)
  • Gallery (gallery field for multiple images)
  • Available From (date field)

Field names become the meta keys used in dynamic tags and custom queries. Use consistent, clear naming (property_price not just price) to avoid conflicts with other plugins’ meta keys.

Step 3: Create a Custom Taxonomy

Taxonomies organise posts into categories. For a property directory, you might want a Location taxonomy (cities) and a Property Type taxonomy (house, apartment, commercial). Go to JetEngine -> Taxonomies -> Add New. Assign the taxonomy to your custom post type. After creating, terms appear as a filterable category system for your listings.

Step 4: Build an Elementor Template

Go to Templates -> Add New in Elementor. Create a Loop Item template – this is the card template for a single post. Design the card using Elementor widgets, then use JetEngine dynamic tags to pull data into each element. Click any text or image element, open the dynamic data settings, and select the JetEngine meta field you want to display. The Price field shows the price, the Gallery field shows the property images.

Create a second template for the Archive/Listing page that shows a grid or list of these cards. Use the JetEngine Listing Grid widget to output the collection of post cards using your Loop Item template.

Code Examples: Querying JetEngine Data Programmatically

While JetEngine is designed for no-code use in Elementor, understanding the underlying data structure helps when debugging or extending with custom code. JetEngine stores meta field values in the standard WordPress wp_postmeta table. Query them with standard WP_Query meta_query arguments:

$args = array(
    'post_type'  => 'property',
    'meta_query' => array(
        'relation' => 'AND',
        array(
            'key'     => 'property_price',
            'value'   => 500000,
            'compare' => '<=',
            'type'    => 'NUMERIC',
        ),
        array(
            'key'     => 'property_bedrooms',
            'value'   => 3,
            'compare' => '>=',
            'type'    => 'NUMERIC',
        ),
    ),
);
$properties = new WP_Query( $args );

The meta keys match exactly what you named the fields in JetEngine -> Meta Fields. If your field is named property_price in JetEngine, it is stored as property_price in wp_postmeta. This direct query approach is useful for custom theme templates, REST API endpoints, or exports that need to bypass JetEngine’s Elementor layer.

Keep Reading

Previous Post WooCommerce Invoice Plugins Compared: PDF Invoices vs WooCommerce German Market vs Germanized Next Post JetEngine Relations: Connecting Custom Post Types in Elementor

Need Help With Your WordPress Site?

If you need help with WordPress fixes, plugin issues, theme customization, or development work, feel free to get in touch.

Get a Free Estimate