geodirectory/delete-listing-field permanently deletes a custom field from a listing type.
It needs confirm_name matching the field’s htmlvar_name and confirm_data_loss set true.
Before you run it
This drops the database column. Every listing of this type loses that field’s value, permanently and without a copy anywhere — on a directory with a thousand listings that is a thousand values. It requires both confirm_name and confirm_data_loss for that reason. To hide a field while keeping its data, use geodirectory/manage-listing-field with is_active: false instead.
At a glance
| Ability | geodirectory/delete-listing-field |
| Toolset | GeoDirectory — toolset/geodirectory |
| Group | GeoDirectory › Fields |
| Requires | AcrossAI Pro, plus GeoDirectory active on the site |
| Capability | manage_options |
| Safety | Destructive — drops a database column. Requires confirm_name and confirm_data_loss. |
| 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 |
How it works
GeoDirectory stores listing fields as real database columns, so removing a field is a DROP COLUMN. The values go with it — not to a trash, not to an archive, gone.
Two separate confirmations are required because the two risks are different. The name confirms you are removing the field you think you are; the data-loss acknowledgement confirms you understand that removing it destroys content.
Almost every time somebody wants to “remove a field”, what they want is for it to stop appearing. is_active: false does that, keeps the column, keeps the data, and is reversible in one call.
The genuine case for deletion is a field created by mistake, before any listing used it.
Not idempotent.
Input
| Name | Type | Required | What it is |
|---|---|---|---|
id | integer | Yes | Custom field ID, from geodirectory/list-listing-fields. |
confirm_name | string | Yes | Must match the field’s htmlvar_name exactly as it is on this site. The guardrail against deleting by ID alone. |
confirm_data_loss | boolean | Yes — must be true | Acknowledges that the stored value is destroyed for every listing of this type. |
post_type | string | No | Listing type, for example gd_place. Defaults to the site default. See geodirectory/get-directory-overview for the valid values. |
confirm | boolean | Yes — must be true | The irreversibility gate. Without it the call is refused before anything is touched. |
What comes back
| Name | Type | What it is |
|---|---|---|
id | integer | The field removed. |
column_dropped | string | The database column that was dropped. |
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:
Remove the unused fax field from listings.
It resolves to one call:
{
"ability": "geodirectory/delete-listing-field",
"parameters": {
"id": 44,
"confirm_name": "fax",
"confirm_data_loss": true
}
}Worth knowing
- A
DROP COLUMN. Not recoverable. - Hiding the field with
is_active: falseis what people usually mean. - Two confirmations, because there are two different risks.
- Back up the database first.
Related abilities
- GeoDirectory Manage Listing Field — hide it instead
- GeoDirectory List Listing Fields — confirm the field first
Get the plugins:
AcrossAI Abilities Manager · AcrossAI MCP Manager
Browse the rest: Every ability, by category