geodirectory/manage-listing-field edits the add-listing form for a listing type: create adds a field, update edits one by ID, reorder sets the form order.
Creating or changing a field alters the listing type’s database table. This is a schema change.
At a glance
| Ability | geodirectory/manage-listing-field |
| Toolset | GeoDirectory — toolset/geodirectory |
| Group | GeoDirectory › Fields |
| 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 |
Schema, not settings
GeoDirectory stores listing field values in a real table with a column per field. Adding a field adds a column; changing its type changes the column type.
That has two consequences worth holding on to. The first is that htmlvar_name is the column name — renaming it on an existing field is a schema rename that orphans every existing value.
The second is that a type change can lose precision or truncate. Changing a text field to a number is a column conversion, and what does not convert is discarded by the database, not by GeoDirectory.
To take a field out of use without any of that, set is_active false. The column and its data stay; the field simply stops appearing.
The reorder action takes the complete ordered list, because array position becomes the sort order. Sending a partial list renumbers only what you sent and leaves the rest at their old positions, which produces collisions.
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 | Custom field ID. |
field_type | string | For create | Input type. Determines the database column type. |
htmlvar_name | string | For create | The field key, and the database column name. Renaming it orphans existing data. |
admin_title | string | No | Label in the admin field list. |
frontend_title | string | No | Label shown to visitors. |
frontend_desc | string | No | Help text under the field. |
placeholder_value | string | No | Input placeholder. |
default_value | string | No | Value pre-filled on the form. |
option_values | string | No | Choices for select, multiselect, radio and checkbox fields. |
is_required | boolean | No | Whether a submission is rejected without it. |
required_msg | string | No | Validation message when required and empty. |
is_active | boolean | No | False hides the field without dropping the column or its data. |
show_in | array | No | Where the value displays: detail, listing, mapbubble. |
for_admin_use | boolean | No | Restrict to administrators. Non-admin writes are silently dropped. |
css_class | string | No | Extra CSS classes on the wrapper. |
field_icon | string | No | Icon class shown beside the value. |
sort_order | integer | No | Position on the form. |
tab_parent | integer | No | Fieldset ID to nest under, or 0. |
cat_sort | boolean | No | Offer the field as an archive sort option. |
cat_filter | boolean | No | Offer the field as a search filter. |
validation_pattern | string | No | HTML5 pattern attribute. |
validation_msg | string | No | Message when the pattern fails. |
order | array | For reorder | The complete ordered list of field IDs. |
What comes back
| Name | Type | What it is |
|---|---|---|
field | object | The field 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 a phone field to the restaurant listing type.
It resolves to one call:
{
"ability": "geodirectory/manage-listing-field",
"parameters": {
"action": "create",
"field_type": "phone",
"htmlvar_name": "phone",
"frontend_title": "Phone",
"is_required": false
}
}Worth knowing
- This changes the database table. Take a backup before a type change.
- Renaming
htmlvar_nameorphans existing values. is_active: falseretires a field without losing data.- Reordering needs the complete list.
Related abilities
- GeoDirectory List Listing Fields — read the current schema
- GeoDirectory Delete Listing Field — drop it entirely
- GeoDirectory Manage Listing Tab — where the field displays
Get the plugins:
AcrossAI Abilities Manager · AcrossAI MCP Manager
Browse the rest: Every ability, by category