Custom Field Groups
Custom field groups let you define structured data fields that appear in the episode editor and attach to specific content types. You create the group once in Benecaster → Fields, define your fields, and then fill in values per episode.
Overview
A field group is a named collection of fields attached to a content type. The built-in content type is Episode; the Guest Manager add-on registers a second type, Guest. Once created, the group appears as a collapsible panel wherever that content type is edited — for Episode groups, that’s the More tab of the episode editor.
Common uses:
- Guest information (name, booking URL, bio)
- Sponsor details (name, URL, offer code)
- Production notes (recording location, engineer, date)
- Episode-specific links (show notes links, resource URLs)
Creating a Field Group
- Go to Benecaster → Fields in the WordPress admin sidebar.
- Click Add Field Group.
- Enter a name for the group (e.g. “Interview Info”).
- Set Attached to: “Episode” for episode-level fields; “Guest” if the Guest Manager add-on is active and you want fields on guest profiles.
- Add fields: give each field a label, choose a type, and mark it required if needed.
- Drag fields to reorder them.
- Click Save.
The group appears immediately in the More tab of all episodes.
Once a group is saved, each of its fields shows an ID in the first column of the field list, a small #N badge. Click it to copy the number. A field you have just added shows no ID until you save the group. You only need the ID if you are writing code against the field: see For Developers.
Field Types
| Type | Use for |
|---|---|
| Text | Single-line text — names, codes, short labels |
| Textarea | Multi-line text — bios, descriptions, notes |
| URL | A web address — renders as a link on the episode page |
| Number | Numeric values — episode number, word count, price |
| Date | A date picker — recording date, air date |
| Select | A dropdown with predefined options |
| Checkbox | A set of checkboxes — multiple-select from predefined options |
Select and checkbox fields include an Options section where you define the choices.
Required fields are marked with an asterisk (*) in the episode editor. Saving an episode with an empty required field is allowed — the asterisk indicates importance, not a hard block. Use required fields to signal to your team which fields matter most.
Filling in Values
Open any episode and click the More tab. Each field group you’ve created appears as a labelled, collapsible panel. Fill in values and click Save Episode (or Update) — field values save with the rest of the episode data in the same action.
You can fill in field values on new episodes before the first save. The fields are available immediately when you open a new episode draft — you don’t need to save the episode first to unlock them.
Field groups appear in the order set by their display order (drag to reorder in the group editor). Fields within each group appear in the order defined in that group.
Multiple Field Groups
You can create as many field groups as you need. Each group appears as a separate panel in the More tab. Groups can be reordered by adjusting the display order in Benecaster → Fields.
For Developers
Finding a field’s ID. benecaster_get_field() and benecaster_update_field() address a field by its numeric ID. Open Benecaster → Fields, edit the group, and click the #N badge in the ID column to copy it. IDs differ between sites, so keep the number in one constant or setting rather than scattering it through your code.
Read field values in PHP:
// All values for a group, keyed by field_key:
$fields = benecaster_get_fields( 'Interview Info', $episode_id );
$guest_name = $fields['guest_name'] ?? null;
// A single field value by ID:
$guest_name = benecaster_get_field( 15, $episode_id );
Write a field value in PHP:
// Set a value by field ID:
benecaster_update_field( 15, $episode_id, 'Sarah Chen' );
// Pass null to clear it:
benecaster_update_field( 15, $episode_id, null );
The write goes through the same store as the episode editor, so the hooks below fire for it too. The field’s group has to be attached to the object’s content type. If it is not, or the field ID does not exist, nothing is written and WordPress logs a _doing_it_wrong() notice.
Hooks:
benecaster_field_groupsfilter — modify or inject field group definitions before the editor renders thembenecaster_field_valuefilter — transform a stored value before it is returnedbenecaster_field_value_savedaction — fires after a value is written, by an editor save or bybenecaster_update_field(); use to sync to external systemsbenecaster_episode_field_values_updatedaction — fires after an episode’s field values change, from either route, naming which fields changed
Register a CPT with the field system (add-ons):
add_action( 'benecaster_boot', function( $container ) {
benecaster_register_field_cpt( 'benecaster_guest', __( 'Guest', 'my-addon' ) );
} );
See the developer documentation for full API details: benecaster_get_field, benecaster_get_fields, benecaster_update_field, benecaster_field_groups, benecaster_field_value, benecaster_field_value_saved, benecaster_episode_field_values_updated.
See Also
Need this built rather than just documented? See our services →