Add extra fields to the post creation form for structured data collection. Custom fields let you collect event dates, prices, ratings, file attachments, and much more from your members.
What You’ll Learn
- All 15 available field types
- How to create and configure fields
- How to set up conditional logic
- How to display fields on the frontend

Available Field Types (15)
| Type | Description | Use Case |
|---|---|---|
| Text | Single-line input | Book title, product name |
| Textarea | Multi-line input | Summary, description |
| Number | Numeric input with validation | Price, rating, quantity |
| Email with validation | Contact email | |
| URL | URL with validation | External link, website |
| Date | Date picker | Event date, deadline |
| Date & Time | DateTime picker | Event with specific time |
| Select | Dropdown menu | Category, status |
| Multi-Select | Multiple choice dropdown | Tags, topics, features |
| Checkbox | Single yes/no toggle | Featured flag, terms agreement |
| Radio | Single choice from options | Priority level, rating |
| File | File upload | PDF, document, zip |
| Image | Single image upload | Product photo, avatar |
| Gallery | Multiple images | Photo album, portfolio |
| Color | Color picker | Brand color, theme color |
Creating a Custom Field
- Go to Member Blog → Custom Fields
- Click Add New Field
- Configure the field settings
- Click Save Field
Field Settings
| Setting | Description |
|---|---|
| Label | Display name shown to members |
| Field Key | Unique identifier (auto-generated or custom) |
| Type | Select from 15 field types |
| Required | Make field mandatory |
| Placeholder | Hint text inside the field |
| Default Value | Pre-filled value |
| Help Text | Instructions shown below field |
Adding Options for Select/Radio/Checkbox
For Select, Multi-Select, Radio, and Checkbox fields, you need to add options:
- Click Add Option
- Enter option label and value
- Drag to reorder options
- Set a default selection (optional)
Example – Priority Field:
- Low (value: low)
- Medium (value: medium) [default]
- High (value: high)
- Urgent (value: urgent)
Conditional Logic
Show or hide fields based on other field values. This keeps forms clean and relevant.
Example: Show Location Only for Events
- Create a Select field called “Post Type” with options: Article, Event, Review
- Create a Text field called “Event Location”
- In “Event Location” settings, enable Conditional Logic
- Set: Show this field when “Post Type” equals “Event”
Available Conditions
| Operator | Use Case |
|---|---|
| Equals | Exact match |
| Not Equals | Exclude specific value |
| Contains | Partial text match |
| Is Empty | Field has no value |
| Is Not Empty | Field has any value |
File Upload Settings
For File, Image, and Gallery fields:
| Setting | Description |
|---|---|
| Allowed Types | Restrict file extensions (jpg, pdf, etc.) |
| Max File Size | Limit in MB |
| Max Files | For Gallery – maximum images allowed |
Field Visibility Options
Control where fields appear:
| Option | Description |
|---|---|
| Frontend Only | Members see it, admins don’t in WP admin |
| Admin Only | Only visible in WordPress admin |
| Both | Visible everywhere |
Displaying Fields on Your Site
Use the shortcode in your theme’s post template:
[bp-member-blog-custom-field id="event_date"]
With formatting:
[bp-member-blog-custom-field id="price" before="$" after=" USD"]
Example: Event Listing Fields
| Field | Type | Required |
|---|---|---|
| Event Date | Date & Time | Yes |
| Event Location | Text | Yes |
| Ticket Price | Number | No |
| Event Website | URL | No |
| Event Poster | Image | No |
Example: Product Review Fields
| Field | Type | Required |
|---|---|---|
| Rating | Radio (1-5 stars) | Yes |
| Pros | Textarea | Yes |
| Cons | Textarea | Yes |
| Purchase Link | URL | No |
| Product Images | Gallery | No |
Managing Fields
Reorder fields: Drag and drop fields on the Custom Fields page to change their order in the post form.
Delete fields: Click the Delete link next to any field. Note: Deleting a field does not remove data from existing posts – the values remain in the database.
