geodirectory/manage-listing-tab manages the tabs on a single listing page: create adds one, update edits one by ID, reorder sets the display order of all of them.
The tab type is the decision that matters.
At a glance
| Ability | geodirectory/manage-listing-tab |
| Toolset | GeoDirectory — toolset/geodirectory |
| Group | GeoDirectory › Tabs, Sorting & Blocks |
| Requires | AcrossAI Pro, plus GeoDirectory active on the site |
| Capability | manage_options |
| Safety | Writes data |
| Repeatable | Not idempotent — each call changes the row set, so re-running is not a no-op |
| Ships in | AcrossAI Pro 0.9.16 and later |
Four tab types
meta renders one custom field, with tab_key naming its htmlvar_name. That is how a field like opening hours gets its own tab.
standard is a built-in section — reviews, post_map, post_images — where the key names the section rather than a field.
fieldset renders a group of custom fields together, which is how a “Details” tab holding eight fields is built without eight tabs.
shortcode renders arbitrary content from tab_content, which is the escape hatch for anything the other three do not cover.
Tabs nest one level: a top-level tab can have children, and a child cannot. Setting tab_parent to a child’s ID is rejected rather than silently flattened.
Reordering takes the complete ordered list, because array position becomes the sort order. A partial list renumbers only what it contains.
Not idempotent for create.
Input
| Name | Type | Required | What it is |
|---|---|---|---|
action | string | Yes | create, update or reorder. |
post_type | string | No | Listing type, for example gd_place. Defaults to the site default. See geodirectory/get-directory-overview for the valid values. |
id | integer | For update | Tab ID. |
tab_name | string | For create | The label shown to visitors. |
tab_type | string | For create | meta, standard, fieldset or shortcode. |
tab_key | string | No | For meta the field htmlvar_name; for standard the section key. Derived from the name when omitted. |
tab_icon | string | No | Icon class, for example fas fa-map. |
tab_content | string | No | Content for shortcode tabs. |
tab_parent | integer | No | Parent tab ID, or 0 for top level. One level only. |
sort_order | integer | No | Display position. |
order | array | For reorder | The complete ordered list of tab IDs. |
What comes back
| Name | Type | What it is |
|---|---|---|
tab | object | The tab after the write. |
success | boolean | Whether the call completed. |
message | string | A one-line summary of what happened, suitable for showing a human. |
error_code | string | Present only on failure — a stable machine-readable reason, such as a missing field, a wrong field type or an unmet confirmation. |
Example
Ask your assistant:
Add an opening-hours tab to listings.
It resolves to one call:
{
"ability": "geodirectory/manage-listing-tab",
"parameters": {
"action": "create",
"tab_name": "Opening hours",
"tab_type": "meta",
"tab_key": "business_hours",
"tab_icon": "fas fa-clock"
}
}Worth knowing
- The tab type decides what renders.
metaneeds a real field key. - Tabs nest one level only.
- Reordering needs the complete list.
- A fieldset tab shows many fields without many tabs.
Related abilities
- GeoDirectory List Listing Tabs — get the IDs and order
- GeoDirectory List Listing Fields — the field keys a meta tab needs
Get the plugins:
AcrossAI Abilities Manager · AcrossAI MCP Manager
Browse the rest: Every ability, by category