One of the most powerful yet underused capabilities of WordPress is its ability to go far beyond blog posts and pages. Out of the box, WordPress gives you Posts for articles and Pages for static content. But what about team member profiles? Property listings? Event calendars? Recipe collections? Portfolio pieces? Job boards? Product catalogues? For all of these content types and countless others, WordPress Custom Post Types (CPTs) and Advanced Custom Fields (ACF) are the answer. Together, they transform WordPress from a blogging platform into a genuinely flexible, purpose-built content management system capable of powering almost any kind of website imaginable.
In this complete guide, we cover what custom post types are, why they matter, what Advanced Custom Fields is, how to use the free ACF plugin to create custom post types and attach custom fields to them, and a full walkthrough of every ACF feature available in the free version.
Watch Setp by step video tutorial: https://youtu.be/Os8luBmSsXU
What is a Custom Post Type in WordPress?
WordPress organizes all content using a concept called post types. By default, WordPress comes with five built-in post types: Post (blog articles), Page (static pages), Attachment (uploaded media files), Revision (saved drafts), and Navigation Menu (menu items). These defaults serve general-purpose websites well, but they are not designed for structured, specialized content.
A Custom Post Type (CPT) is a user-defined content type that you add to WordPress to manage a specific category of structured content that does not fit neatly into a standard Post or Page. It has its own menu item, list view, editor screen, and URL structure, dedicated to managing one specific type of content.
Real-world examples of custom post types include:
- Property — for real estate websites, with fields for price, bedrooms, bathrooms, square footage, and agent name
- Team Member — for company sites, with fields for job title, email, LinkedIn, bio, and profile photo
- Event — for event directories, with fields for date, venue, ticket price, and organizer
- Recipe — for food blogs, with fields for ingredients, prep time, cook time, servings, and cuisine type
- Testimonial — for marketing sites, with fields for quote, author name, company, and star rating
- Job Listing — for job boards, with fields for location, salary range, department, and application deadline
Custom post types can also have their own custom taxonomies, similar to Categories and Tags for blog posts, allowing you to organize and filter your custom content in meaningful ways. Before plugins like ACF, creating a custom post type required writing PHP code in your theme’s functions.php file. ACF eliminates that requirement entirely, allowing you to register CPTs directly from the WordPress admin interface with no code.
Benefits of Creating WordPress Custom Post Types
1. Purpose-Built Content Organization
Custom post types give every type of content its own dedicated section in the WordPress admin with a tailored editing interface containing only the relevant fields. This is dramatically more organized than trying to shoehorn structured content into standard blog posts. A team member profile, a property listing, and a recipe each need very different fields, and CPTs let you design the editing experience for each type specifically.
2. Structured, Queryable Data
When content is stored in a custom post type with properly defined custom fields, it becomes structured and queryable. You can build dynamic pages that display only certain posts (e.g., all team members in the Design department), sort content by custom field values (e.g., properties sorted by price), or filter listings by custom taxonomy (e.g., events by city). This structured data capability enables WordPress to power sophisticated directory sites, real estate platforms, job boards, and booking systems.
3. Better Content Governance
CPTs provide clear editorial governance. Editors and content managers know exactly where to go to add a new team member, property, or event, rather than hunting through a mixed Posts list. Admin access can be configured so that specific user roles can only edit specific post types, adding a layer of workflow control.
4. Cleaner SEO-Friendly URL Structures
Each custom post type can have its own permalink structure. A Property CPT might use /properties/property-name/ while an Event CPT uses /events/event-name/. These semantic URL structures improve SEO by making URLs descriptive and meaningful for both visitors and search engines.
5. Theme Independence and Reusability
Because custom post types and their fields are registered at the plugin level via ACF rather than in theme files, your content survives theme changes. All your team member profiles, property listings, and event data remain intact when you switch themes. Only the display templates need updating.
6. Future-Proofing Your Website
Websites grow and evolve. A business that today needs only a simple blog may later need a team directory, a case study library, and a product catalogue. Custom post types make this expansion straightforward, allowing you to add new content types as your needs grow without restructuring existing content or breaking your site’s architecture.
7. Improved SEO Through Semantic Structure
Search engines increasingly reward well-structured, semantically meaningful content. A property listing with clearly defined fields for price, location, bedrooms, and features gives search engines rich, parseable data. Combined with schema markup, which ACF now supports in version 6.8 via JSON-LD structured data fields, custom post types with ACF fields can significantly enhance rich snippet eligibility in search results.
What is Advanced Custom Fields (ACF)?
Advanced Custom Fields, commonly known as ACF, is a WordPress plugin that turns WordPress into a fully-fledged content management system by giving you complete control over your content model without writing code. Developed originally by Elliot Condon and now maintained by WP Engine, ACF is one of the most widely installed WordPress plugins ever created, with over a million active installations and 1,429+ five-star reviews on WordPress.org.
ACF does two fundamental things: it lets you add custom fields to any WordPress edit screen through a visual field builder interface, and it lets you register custom post types and custom taxonomies directly from the WordPress admin without touching code.
The plugin provides over 30 different field types covering everything from simple text and number inputs to complex relational fields, date pickers, color pickers, Google Maps embeds, and image uploaders. Fields are organized into Field Groups, which are then assigned to specific post types, pages, or other content areas using flexible location rules.
ACF has been trusted by WordPress developers for over 10 years and is widely considered the gold standard for WordPress custom field management. Its free version on WordPress.org is remarkably complete, and a Pro version unlocks additional advanced field types including the Repeater Field, Flexible Content Field, Gallery Field, Clone Field, and ACF Blocks for custom Gutenberg block development.
Benefits of Using Advanced Custom Fields (ACF)
1. No Code Required for Structured Content
Before ACF, adding custom fields and post types to WordPress required PHP coding knowledge. Functions like register_post_type() and add_meta_box() were intimidating for non-developers. ACF replaces all of that with a clean, intuitive visual interface that anyone can use to create sophisticated content models without touching a single line of PHP.
2. Over 30 Field Types for Any Data Requirement
ACF supports an extensive library covering virtually every kind of data you might need to store. Text, textarea, number, email, URL, image, file, WYSIWYG editor, select, checkbox, radio button, true/false, Google Map, date picker, color picker, post object, taxonomy, user, and oEmbed are all available in the free version, providing an extraordinarily versatile toolkit for content modeling.
3. Flexible Location Rules for Precise Field Placement
ACF’s location rules system gives you granular control over where field groups appear. You can display a field group only on posts in a specific category, only on a specific page template, only on a particular custom post type, or only for users with a specific role. This targeted assignment means each content type sees only the fields relevant to it, keeping edit screens clean and purposeful.
4. Developer-Friendly Template Functions
For developers who want to display custom field data in theme templates, ACF provides simple, elegant PHP functions. The get_field() function retrieves a field value and the_field() echoes it directly. These functions work with any field type and handle data formatting automatically, returning properly formatted dates, image arrays, related post objects, and more.
5. JSON Synchronization for Version Control
ACF includes a JSON sync feature that automatically saves field group configuration as JSON files in your theme directory. These files can be committed to version control with Git, making it easy to synchronize field configurations across development, staging, and production environments. This is invaluable for professional development teams.
6. AI Integration and Schema Support (Version 6.8)
ACF version 6.8 introduced integration with the WordPress Abilities API, allowing external AI tools to manage field groups, post types, and taxonomies when explicitly enabled. It can also generate JSON-LD structured data for SEO schema markup, and includes full WP-CLI support for importing, exporting, and syncing ACF JSON files from the command line.
7. Extensive Documentation and Proven Community
With over 10 years of active development and millions of users worldwide, ACF has one of the most comprehensive documentation libraries of any WordPress plugin. Whether you are a beginner setting up your first field group or an experienced developer building complex relational queries, the ACF documentation and community forums provide all the guidance you need.
Features of Advanced Custom Fields Plugin (Free Version)
Here is a comprehensive overview of every field category and type available in the free ACF plugin:
Field Category | Field Types Available | Example Use Cases |
Basic | Text, Textarea, Number, Range, Email, URL, Password | Author name, SKU, portfolio URL, event capacity |
Content | WYSIWYG Editor, oEmbed, Image, File | Rich body text, video embed, product image, PDF download |
Choice | Select, Checkbox, Radio Button, Button Group, True/False | Cuisine type, product features, availability toggle |
Relational | Link, Page Link, Post Object, Relationship, Taxonomy, User | Related articles, linked pages, author, category filter |
jQuery | Google Map, Date Picker, DateTime Picker, Time Picker, Color Picker | Event location, publish date, brand color selector |
Layout | Message, Accordion, Tab, Group | Help text, collapsible sections, tabbed fields |
Pro: Repeater | Repeatable sub-fields | Multiple team certifications, pricing tiers, FAQ list |
Pro: Flex Content | Multiple layout types | Page builder rows, mixed content sections |
Pro: Gallery | Image gallery set | Portfolio gallery, product image carousel |
Pro: Clone | Reuse existing field groups | Shared address fields, reusable contact blocks |
Pro: ACF Blocks | Custom Gutenberg blocks via PHP | Branded content blocks, custom post layout blocks |
Conditional Logic
Every field in ACF supports conditional logic rules that show or hide the field based on the value of another field in the same group. For example, show a ‘License Number’ text field only when an ‘Is Certified’ true/false field is toggled to true. Conditional logic creates dynamic, intelligent edit screens that adapt intelligently to the data being entered.
General Field Settings (Available on Every Field)
- Field Label — human-readable name shown above the field in the editor
- Field Name — the unique key used to retrieve the value in PHP templates
- Instructions — optional help text shown below the field label for content editors
- Required — mark a field as mandatory to prevent publishing without a value
- Conditional Logic — show or hide this field based on another field’s value
- Default Value — a pre-filled value shown when a new post is created
- Wrapper Attributes — custom HTML ID, class, and column width for the field
Custom Post Type Registration via ACF UI
ACF provides a dedicated Post Types screen in the admin where you can register new custom post types without any code. Configure the plural and singular labels, URL slug, menu icon (Dashicons or FontAwesome), supported features (title, editor, thumbnail, excerpt, comments, revisions), whether the post type has an archive page, and REST API visibility. Taxonomies can be registered through a dedicated Taxonomies screen with the same ease.
Import and Export
Export field groups as JSON files for backup or transfer to another site. Import field groups from JSON files to quickly apply existing configurations to a new WordPress installation. This makes ACF configurations portable and fully reusable across projects and client sites.
How to Create Custom Post Types Using Advanced Custom Fields Plugin
Here is a complete step-by-step guide using a ‘Team Member’ custom post type as a practical example — one of the most common real-world use cases for custom post types on WordPress websites.
Step 1: Install the Advanced Custom Fields Plugin
- Go to WordPress Dashboard > Plugins > Add New
- Search for ‘Advanced Custom Fields’
- Find the plugin by WP Engine and click Install Now
- Click Activate — you will now see an ‘ACF’ menu item in your WordPress admin sidebar
Step 2: Register the Custom Post Type
- Click ACF in the admin sidebar, then click Post Types
- Click Add New
- Enter Plural Label: Team Members and Singular Label: Team Member
- ACF auto-generates the Post Type Key: team_member
- In Advanced settings, set a menu icon (e.g., dashicons-businessman)
- Enable Title, Editor, and Featured Image under Supports
- Enable Has Archive to create a /team-members/ listing page
- Click Save — a Team Members menu item appears in the WordPress admin sidebar
Step 3: Create a Custom Taxonomy (Optional)
- Go to ACF > Taxonomies > Add New
- Plural Label: Departments | Singular Label: Department
- Assign to Post Type: Team Member
- Click Save — a Departments sub-menu now appears under Team Members
Step 4: Create a Field Group
- Go to ACF > Field Groups > Add New
- Name the field group: Team Member Details
- Add the following custom fields using the Add Field button:
- Job Title — Type: Text, Required: Yes
- Email Address — Type: Email
- Phone Number — Type: Text
- LinkedIn Profile — Type: URL
- Short Bio — Type: Textarea
- Profile Photo — Type: Image, Return Format: Image Array
- Years of Experience — Type: Number
- Is Leadership Team Member — Type: True/False
Step 5: Set Location Rules
- Scroll to the Location Rules section at the bottom of the field group editor
- Change the rule to: Post Type | is equal to | Team Member
- This ensures these fields appear only when editing a Team Member post
- Click Publish to save and activate the field group
Step 6: Configure Field Group Display
In the field group’s right sidebar, configure display options:
- Style: Choose Seamless for a cleaner editor without a bordered metabox
- Position: Above Editor keeps fields prominently visible at the top
- Hide on Screen: Hide Excerpt, Author, and Comments if not relevant to team members
Step 7: Create Team Member Content
- Go to Team Members > Add New in the WordPress admin sidebar
- Enter the team member’s full name as the post Title
- Fill in all custom fields in the Team Member Details section below the editor
- Assign the team member to a Department taxonomy term
- Set a Featured Image as the primary profile photo
- Click Publish
Step 8: Display Custom Fields in Your Theme
In your theme’s single-team_member.php template file, use ACF’s PHP functions to retrieve and display field values:
<?php // Get individual field values $job_title = get_field(‘job_title’); $email = get_field(’email_address’); $profile_img = get_field(‘profile_photo’); $linkedin = get_field(‘linkedin_url’); // Display the profile photo if ($profile_img) { echo ‘<img src=”‘ . esc_url($profile_img[‘url’]) . ‘” alt=”‘ . esc_attr($profile_img[‘alt’]) . ‘”>’; } // Display the job title if ($job_title) { echo ‘<h2>’ . esc_html($job_title) . ‘</h2>’; } // Display contact links if ($email) { echo ‘<a href=”mailto:’ . esc_attr($email) . ‘”>’ . esc_html($email) . ‘</a>’; } ?>
For the archive page listing all team members, create archive-team_member.php and use WP_Query to loop through all team member posts, calling get_field() for each one inside the loop. This creates a fully dynamic, filterable team directory page.
Step 9: Repeat for Other Post Types
The same workflow applies to every additional custom post type you need. For Properties, Events, Recipes, Testimonials, Case Studies, or Job Listings: register the post type via ACF > Post Types, create a field group with appropriate fields via ACF > Field Groups, set location rules to target the new CPT, create content entries, and display field values in your theme using get_field().
Frequently Asked Questions (FAQs)
1. What is the Difference Between a Custom Post Type and a Custom Field?
A custom post type and a custom field serve different but complementary purposes. A custom post type is a new content category with its own admin section, URL structure, and edit interface (for example, Team Members, Properties, or Events). A custom field is a specific piece of structured data attached to a post, such as Job Title, Price, or Event Date. Think of a custom post type as a filing cabinet drawer and custom fields as the labeled sections on the form you fill out for each item in that drawer. ACF lets you create both, registering the post type and defining the custom fields that appear when you edit entries of that type.
2. Do I Need to Know PHP to Use ACF?
You do not need PHP knowledge to create custom post types and custom field groups in ACF, as that is done entirely through the visual admin interface. However, to display your custom field values on the frontend of your website, basic PHP knowledge is needed to use ACF’s template functions (get_field() and the_field()) in your theme files. If you are using a page builder like Elementor Pro or Beaver Builder Themer, those tools can pull and display ACF field values without any PHP, making ACF usable in completely no-code workflows when combined with a compatible page builder.
3. Will My Custom Post Types and Fields Survive a Theme Change?
Yes. Custom post types registered through ACF and custom field data stored via ACF are saved in the WordPress database, not in your theme files. All your content and its associated custom field values remain completely intact when you switch themes. The only thing you need to update after a theme change is the frontend display templates that output the custom field values, since those live in your theme files. ACF’s JSON sync feature also ensures that your field group configurations are portable and easily applied to a new theme.
4. Can I Use ACF Custom Fields with WooCommerce Products?
Yes. ACF field groups can be assigned to WooCommerce’s product post type using the location rules. You can add custom fields to WooCommerce products and display those fields on product pages. Common uses include adding product specifications, compatibility information, download links, manufacturing details, or any structured data that WooCommerce’s default fields do not cover. The fields appear in the WooCommerce product editor below the standard product data panels, and their values are retrieved using standard ACF functions in WooCommerce template files.
5. Is the Free Version of ACF Sufficient or Do I Need ACF Pro?
The free version of ACF is remarkably capable and sufficient for the majority of real-world use cases. It covers over 30 field types, full custom post type and taxonomy registration, flexible location rules, conditional logic, developer-friendly display functions, and JSON sync for version control. For most brochure websites, portfolio sites, small directories, and content-heavy websites, the free version provides everything needed. ACF Pro becomes necessary when you need the Repeater Field (repeating sub-field sets for things like pricing tiers or certifications), the Flexible Content Field (multiple configurable layout types for page-builder-style content), the Gallery Field, the Clone Field, or ACF Blocks for building custom Gutenberg blocks via PHP.
Conclusion
WordPress Custom Post Types and Advanced Custom Fields together form one of the most powerful content modeling combinations available in any website platform. By registering purpose-built post types for your specific content categories and attaching precisely defined custom fields to each one, you transform WordPress from a generic blogging platform into a fully tailored content management system capable of powering sophisticated business websites, directories, marketplaces, portfolios, event calendars, and much more.
The ACF plugin, particularly its free version on WordPress.org, makes this transformation accessible to anyone. With an intuitive visual field builder, over 30 field types, flexible location rules, developer-friendly template functions, conditional logic, JSON sync for version control, and now AI integration and JSON-LD schema support in version 6.8, ACF has never been more powerful.
Whether you are building your first Team Member profile system, launching a property listing directory, creating a structured recipe database, or developing a sophisticated job board, the combination of WordPress Custom Post Types and Advanced Custom Fields gives you the foundation to build it right, cleanly, professionally, and without unnecessary complexity.
Download the free Advanced Custom Fields plugin from WordPress.org today and start turning WordPress into the content management system your website deserves.











