Recipe: Configure the GeoDirectory settings page

Goal

Set up everything mam-geodirectory needs from the WordPress admin: tell each GeoDirectory post type which Gravity Form is its Add/Edit Listing form, pick a default category for new submissions, decide which fields are visible in the app, configure push-notification labels, and set up the role names that show up in the Add Users form.

After this recipe the app’s Add/Edit Listing form, Send Notification form, Add Users (staff/manager) form, and Approve Listing form will all be wired correctly for every registered GeoDirectory post type.


Prerequisites

  • WordPress admin access (activate_plugins capability for the page; saves require manage_options).
  • GeoDirectory installed and at least one GD post type registered (typically gd_place).
  • mam-main and mam-geodirectory activated.
  • mam-gravity-forms-manager (or whatever provides the mam_generated_forms filter) activated; the settings page reads its form IDs to drive most of the dropdowns.
  • A Gravity Form per GD post type that you want to use as the Add/Edit Listing form, plus a single Send Notification form, an Add Users form, and (optionally) Approve Listing, Claim Listing, Manage Invite, and Add QR Code forms.

Where to find the page

In WordPress admin: Mobile App Manager → Geodirectory. The page renders tabs along the top:

  • Settings (the global tab — tab=gd-settings)
  • One tab per registered GD post type, labelled GD {Plural label} (e.g., GD Places)
  • Claim Listing (tab=gd-claim-listings) — bulk-invite tool, covered in Recipe: Bulk-invite venue owners

Custom tabs added through Hook: mam_geodirectory_admin_settings_tabs appear here too.


Steps

1. Configure the global Settings tab

Open the Settings tab. The fields here apply across every GD post type:

Setting Stored as What it does
User can add listing on app? gd-user-can-add-on-app Master switch for the Edit/Add Listing tab bar button.
Admin can edit listing? gd-admin-can-edit-all-listings (Currently ignored at runtime — the tab bar uses the presence of ?pid to decide instead. See Listing tab bar buttons.)
Author can edit listing on app? gd-author-can-edit-on-app Required for the Edit Listing button to appear for non-admin owners.
Author can add/edit events on app? gd-owner-can-add-edit-events-on-app Drives the Edit Events tab bar button.
Exclude author and staff from In App Purchases? gd-no-iap-for-author-staff Wired into mam_iap_require_iap — owners and staff bypass IAP gates on their own listings.
Show non-image based GeoFilter selection? gd-show-non-image-layout-on-app App-side flag for the geofilter UI.
Show Current Location option on app? gd-show-current-location-on-app When 'no', suppresses the “Current Location” prepend in the geofilter list.
Send Notification to Favorited users / users in the area / All users gd-send-notification-to-favourited-users, gd-send-notification-to-users-in-area, gd-send-notification-to-all-users Default-on toggles. The form’s Send Type dropdown then narrows it per-message.
Hide photo scroller on detail screen? mam_gd_hide_photo_array When 'yes', suppresses the additional-images carousel.
Allow One Category mam_geodirectory_one_cat_only Forces single-category selection on the Add/Edit Listing form.
Social Links use Icons only mam_geodirectory_social_icons_only Default for Hook: mam_gd_social_icons_only.
Open Ticketing URL for Event Cards? mam_gd_open_web_on_event_card When 'yes', event cards open the ticket URL instead of the listing detail.
Date format for layouts and cards? mam_gd_date_format Default for Hook: mam_gd_date_format.
Email address for new listing notifications gd-email-address-for-app Recipient address for new-listing alerts.
Radius distance (Miles) mam_gd_standard_radius_override Default radius for the special-offers integration (see Integration: Special Offers).
Message for Login Screen snackbar for invited users gd-invited-user-snackbar-message Shown to claim-invite recipients when they open the app.
Send Notification to all Favorited Users / all Nearby Users (label) gd-send-notification-to-all-favorited-users, gd-send-notification-to-all-nearby-users The two labels exposed in the Send Notification form’s Send Type dropdown.
Name of Listing Manager / Staff / Subscriber Role mam_manager_role_name, mam_staff_role_name, mam_subscriber_role_name Display names used in the Add Users form’s role dropdown.

The Claim Listings sub-section (toggles in the same tab when their IDs match gd-claim* or mam_gd_claim*):

Setting Stored as What it does
Invite all unclaimed listings gd-claim-all-listings Used by the bulk-invite tool.
Require admin approval before claim purchase? mam_gd_claim_requires_approval Splits the claim flow into “request → approve → purchase” instead of “purchase”.
Checkout mode (iap or stripe) mam_gd_claim_checkout_mode Stored per app; sent to the mobile client to pick a checkout flow.
Claim CTA text mam_gd_claim_cta Headline shown above the claim purchase screen.
Claim features (one per line) mam_gd_claim_features Bullet list of benefits shown on the claim purchase screen.

Save. The Save button rotates back to the same tab on success.

2. Configure each post-type tab

For every registered GD post type the page renders a tab. Each tab carries:

  • Add or Edit Listing Form (a Gravity Forms picker, stored under a key like geodirectory_form_geodirectory_add_listing_form-gd_place). Pick the Gravity Form that the app should open for “Add Listing” or “Edit Listing” on this post type.
  • Geodirectory Post Type — auto-filled with the tab’s slug; do not edit.
  • A Default category for new listings dropdown (mam_geodirectory_category_for_new_{post_type}).
  • Add in Draft mode for new listings (mam_geodirectory_add_in_draft_{post_type}). When yes, app submissions land as pending (or publish if the submitter is an administrator).
  • Editor can delete listing (mam_geodirectory_editor_can_delete_{post_type}).
  • Instructions (mam_geodirectory_instructions_{post_type}) — free-form text shown at the top of the in-app form.
  • A field visibility manager at the bottom — one checkbox per GeoDirectory custom field. Unchecking a field stores mam-for-gf-form-field-special-handling-{form_id}-fieldid-{field_id} as 2, which the Gravity Forms manager interprets as “hide this field in the app form.”

Save. Repeat for every post type.

3. Wire the side forms

Open Settings again and scroll to the Send Notification, Add Users, Manage Invites, Add QR Code to DL the App, and Approve Listing form pickers (these are added to the global form-settings list by mam_gd_form_manager). Each one expects a Gravity Form ID. Pick the form you’ve created for that purpose. The plugin will then map the form’s fields to the slugs it expects (message-title, user-email, user-role, postid, etc.).

If you skip a side form, the corresponding feature silently turns off:

  • No Send Notification form → the Send Notification tab bar button never appears.
  • No Add Users form → the Edit Staff tab bar button never appears.
  • No Manage Invites form → the auto-display pending-invite bootstrap form never appears.
  • No Approve Listing form → admins cannot approve pending listings from the app.
  • No Add QR Code form → the in-app QR-code field is never injected.

4. Verify

  • Open the mobile app as an administrator. On any listing detail screen you should see Edit Listing, Edit Staff, Edit Events, Send Notification, and Approve Listing tab bar buttons (when applicable).
  • Open the app as a listing owner. You should see Edit Listing, Edit Staff, Edit Events, Send Notification.
  • Open the app as a non-staff user. You should see Favorites, Phone, Website, Map, Email, Share (and Chat if configured).
  • Submit a new listing from the app. If you set “Add in Draft” the listing should appear in pending status; an administrator opening the app should now see Approve Listing on its detail screen.

Variations

  • Add a custom admin tab. Use Hook: mam_geodirectory_admin_settings_tabs to add a tab key, then Hook: mam_geodirectory_admin_settings_tabcontent{tab} to render its body.
  • Append HTML to the global Settings tab. Use Hook: mam_geodirectory_admin_settings.
  • Add fields to the in-app Add/Edit Listing form definition. Use Hook: mam_geodirectory_add_edit_form_fields.

Verification

This article was last verified against:

  • Plugin: mam-geodirectory v2.1.5
  • Source: includes/mam_geodirectory_admin_settings.php
  • Source: includes/mam_gd_form_manager.php

Re-verify whenever the option keys above are renamed, the toggle/text/conditional-choice list in mam_geodirectory_admin_settings::create_settings_array() changes, or the side-form list in mam_gd_form_manager::mam_gf_get_form_settings() changes.


  • Plugin: mam-geodirectory
  • Recipe: Pricing package fields
  • Recipe: Bulk-invite venue owners
  • Form: Add/Edit Listing
  • Form: Send Notification
  • Form: Add or remove staff and managers
  • Form: Approve Listing
  • Form: Manage staff invitation
  • Form: Add QR Code
  • Hook: mam_geodirectory_admin_settings_tabs
  • Hook: mam_geodirectory_admin_settings_tabcontent{tab}
  • Hook: mam_geodirectory_admin_settings
  • Hook: mam_geodirectory_add_edit_form_fields

Metadata

Field Value
Article type Recipe (Admin)
Plugin slug mam-geodirectory
Applies to plugin version 2.1.5+
Category Building Your App
Audience WordPress admin
Estimated time 20 minutes
Last verified 2026-05-01
Contents

    Need Support?

    Can’t find the answer you’re looking for? Don’t worry we’re here to help!