Post items

When you add a blog post, it’s called a “post item” (or “post”). Technically, a page is also a post item, as is an attachment (media). A post item is what WordPress calls any content item, regardless of its post type.

Post types

A post type is a grouping of post items that share similar properties.

Posts (post), pages (page), attachments (attachment), and menus (nav_menu_item) are all post types included in WordPress.

All posts have boxes for “Categories” and “Tags”, and all pages have boxes for “Template” and “Parent Page”. Post types allow for better organization of content throughout your site.

You can also create custom post types. Some plugins and themes register their own post types too. For example, WooCommerce uses a “Products” (product) post type for storing its products.

Create a custom post type

WordPress provides a register_post_type function that you’d use to create your own post type. This code could go either into your theme’s functions.php file, or into a custom plugin.

You could also use plugins like Custom Post Type UI or Advanced Custom Fields to visually create new post types.

Taxonomies

A taxonomy is used as a way to describe or organize your post items.

A taxonomy consists of terms. For example, a taxonomy named “Meal Type” would contain terms like “Breakfast”, “Lunch”, and “Dinner”.

WordPress core includes several taxonomies. The most used are “Categories”, and “Tags”, which are attached to the “Posts” post type. When registered, a taxonomy can be associated with one or more post types.

A taxonomy includes built-in listing/archive URLs for each term. For example, you can set it so that /meal-type/dinner/ will show users a listing of Dinner items.

Taxonomy terms can be used for filtering, but not for sorting.

Create a custom taxonomy

Similar to registering post types, WordPress provides a register_taxonomy function. You could also use plugins like Custom Post Type UI or Advanced Custom Fields to visually create custom taxonomies.

Custom fields

Custom fields are extra pieces of information that you can attach to post items.

Custom fields do not include built-in listing URLs, but you can both filter and sort by custom fields (unlike with taxonomies).

Long text, text that’s relatively unique (such as SKUs or street names), dates, and numeric values are usually stored as custom fields.

Create a custom field

We generally recommend using Advanced Custom Fields (ACF). See our Advanced Custom Fields guide to learn how to create and use custom fields.

Planning considerations

Let’s say you’re creating an “Events” post type. You want each item to contain the following data:

  • Title
  • Description
  • Event type (Seminar, Job Fair, Trade Show, Gala)
  • Event date
  • Location
  • Speakers

Title and Description are easy; every post type includes those fields by default so we can just use those.

Event type would generally be a custom taxonomy. It’s safe to use a taxonomy here because sorting isn’t necessary (or particularly helpful) in this instance.

Event date would be a custom field. ACF provides a “Date Picker” field type that is suitable for this. Being able to sort by date is important here.

Location depends on how you plan on using this field. If the event has a specific address, consider using an ACF “Google Map” field type, because it saves the location’s coordinates (for use along with a Proximity or Map facet). Alternatively, if you want each location to link to its own detail page, I’d suggest creating a new “Location” post type. Then you could add an ACF Relationship field on your Event post type to associate the event with its location(s).

Speakers also depends on how you’re going to use it. It could be a Text or Text Area custom field. Or you could create a “Speakers” post type and link to it with an ACF Relationship field.

Further reading

See also

Last updated: November 28, 2025