← DamDir Directory Docs

DamDir Directory User Guide

This guide targets APD v1.0.x. Last updated: 2026-02-21.

This guide walks you through setting up your directory, creating listings, configuring features like search and reviews, and installing optional modules.

Getting Started

Installation

Automatic Installation

  1. In your WordPress admin, go to Plugins → Add New.
  2. Search for "DamDir Directory".
  3. Click Install Now, then Activate.

Manual Installation

  1. Download the plugin zip file.
  2. Go to Plugins → Add New → Upload Plugin.
  3. Upload the zip file and click Activate.

Initial Setup

After activation, follow these steps to get your directory running:

  1. Configure Settings
    • Go to Listings → Settings.
    • Set your currency symbol and position.
    • Choose the default listing status (pending or published).
    • Enable or disable features (reviews, favorites, contact form).
  2. Create Categories
    • Go to Listings → Categories.
    • Add your main categories (e.g., "Restaurants", "Hotels", "Services").
    • Set icons and colors for visual distinction.
  3. Create Required Pages

    Create WordPress pages for each feature and add the corresponding shortcode:

    PageShortcodePurpose
    All Listings[apd_listings]Main listings archive
    Submit Listing[apd_submission_form]Frontend submission
    My Dashboard[apd_dashboard]User dashboard
    My Favorites[apd_favorites]Saved listings
  4. Add Menu Items
    • Go to Appearance → Menus.
    • Add your new pages to the navigation menu.
APD Settings page — General tab showing currency, date format, distance unit, and page assignments Settings page — General tab

Creating Listings

Creating Listings from Admin

  1. Go to Listings → Add New.
  2. Enter the listing title.
  3. Add a description in the content editor.
  4. Set a featured image (recommended size: 800×600px).
  5. Select categories and tags.
  6. Fill in custom fields in the "Listing Fields" meta box.
  7. Set the publish status.
  8. Click Publish or Save Draft.
WordPress block editor showing a listing with title, content, and sidebar meta Listing editor — content and sidebar meta
Listing Fields meta box showing phone, email, website, address, business hours, and price range Listing editor — custom fields meta box

Listing Fields

The plugin ships with 24 field types. Installed modules may add more:

Listing Statuses

StatusDescription
PublishedVisible to everyone
Pending ReviewAwaiting admin approval
DraftOnly visible to the author and admins
ExpiredTime-limited listing that has ended

Categories & Tags

Categories

Categories are hierarchical, so they can have parent/child relationships. Use them to organize listings into logical groups.

Creating Categories:

  1. Go to Listings → Categories.
  2. Enter a name and optional description.
  3. Choose a parent category (optional) to create a hierarchy.
  4. Select an icon (WordPress Dashicons).
  5. Pick a color for the category badge.
Category management page with hierarchical categories, descriptions, and listing counts Category management page

Popular Icon Choices:

Tags

Tags are flat (no hierarchy) and useful for features, amenities, or attributes that cut across categories.

Examples:

Frontend Submission

Allow users to submit listings from the front end of your site without needing WordPress admin access.

Frontend Submission Setup

  1. Create a page with the shortcode [apd_submission_form].
  2. Configure submission settings in Listings → Settings → Submission:
    • Who can submit — Anyone, logged-in users, or specific roles.
    • Guest submission — Allow submissions without login.
    • Default status — Usually "Pending Review" for moderation.
    • Terms page — Require acceptance of your terms of service.
    • Redirect after — Where to send users after submission.
Frontend submission form with multi-step tabs, fields, category checkboxes, tags, and image upload Frontend submission form

Submission Form Features

Spam Protection

The plugin includes built-in spam protection for frontend submissions:

Editing Listings

Users can edit their own listings after submission:

  1. From the dashboard, click Edit on any listing.
  2. Or navigate directly using the URL parameter: /submit-listing/?edit_listing=123

Search & Filtering

Search Form

Add search to any page with the [apd_search_form] shortcode.

Available Filters:

AJAX Filtering

Filters update results without a full page reload:

  1. Select filter options.
  2. Results update automatically via AJAX.
  3. The URL updates so filtered results are shareable.
Directory page with search bar, category dropdown, sort control, and listing grid with ratings Search results with category filters

Sort Options

Users can sort results by:

View Options

Switch between display modes:

Reviews & Ratings

For Listing Owners

Writing a Review

  1. Go to a listing page.
  2. Scroll to the reviews section.
  3. Click "Write a Review".
  4. Select a star rating (1–5).
  5. Enter a review title and content.
  6. Submit for moderation.
Single listing page showing details, contact form, review summary with 4.7 average, and individual reviews Single listing page with reviews

Review Rules:

Review Moderation (Admins)

  1. Go to Listings → Reviews.
  2. View pending reviews.
  3. Actions available: Approve, Reject, Spam, Trash.
  4. Bulk actions are available for managing multiple reviews at once.

Favorites

Saving Favorites

Click the heart icon on any listing card to save it as a favorite.

User dashboard Favorites tab showing empty state with Browse Listings button User dashboard — Favorites tab

Viewing Favorites

Guest to User Migration

When a guest logs in or registers, their cookie-based favorites are automatically merged with their account. No favorites are lost.

Contact Forms

For Visitors

  1. Go to a listing page.
  2. Find the contact form (usually in the sidebar).
  3. Fill in your name, email, and message.
  4. Optionally include a phone number.
  5. Click Send.

For Listing Owners

For Admins

Enable or disable contact forms in Listings → Settings:

Email Notifications

The plugin sends email notifications automatically to keep admins and listing authors in the loop.

Admin Notifications

New Submission — Sent when a listing is submitted for review.

Listing Author Notifications

Listing Approved — Sent when an admin approves a pending listing.
Listing Rejected — Sent when an admin rejects a listing (includes the reason).
Expiring Soon — Sent when a listing is about to expire.
Expired — Sent when a listing has expired.
New Review — Sent when someone reviews the author's listing.
New Inquiry — Sent when someone contacts the author via the listing's contact form.

Configuration

Go to Listings → Settings → Email to configure notifications:

Email settings tab showing notification toggles and template configuration Settings — Email notifications tab

User Dashboard

The dashboard lets users manage their listings, favorites, and profile without needing WordPress admin access. Add it to any page with the [apd_dashboard] shortcode.

Dashboard Tabs

TabDescription
My ListingsView and manage all submitted listings
Add NewSubmit a new listing
FavoritesView saved favorite listings
ProfileUpdate profile settings
User dashboard showing My Listings tab with stats cards, status filters, and listing table User dashboard — My Listings tab

My Listings Features

Profile Settings

Users can update the following from the Profile tab:

Modules

DamDir Directory ships with five optional modules, each a separate plugin that adds specialized fields, templates, and features for a particular directory type. All modules require DamDir Directory 1.0.0 or later.

URL Directory

Turn your directory into a curated website and link collection. Good for bookmark directories, resource lists, blogrolls, and web directories.

Key Features:

Business Directory

Build a local business listing platform similar to Yelp or Yellow Pages. Adds location-based search, maps, hours, and verification to your directory.

Key Features:

Classifieds

Create a buy/sell/trade marketplace similar to Craigslist or Facebook Marketplace. Adds pricing, seller profiles, and moderation workflows for classified ad directories.

Key Features:

Job Board

Build a job listing and recruitment platform. Adds structured job fields, application management, company profiles, and automated job alerts.

Key Features:

Real Estate

Create a property listing website for sales and rentals. Adds property-specific fields, comparison tools, and virtual tour support.

Key Features:

Shortcodes Reference

[apd_listings]
Display listings with various layout and filtering options. This is the main shortcode for showing directory listings on any page.
Parameters: view, columns, count, category, tag, author, orderby, order, show_pagination
Shortcode
[apd_listings view="grid" columns="3" count="12" category="restaurants"]
AttributeValuesDefaultDescription
viewgrid, listgridDisplay style
columns2, 3, 43Number of grid columns
countnumber12Listings per page
categoryslugFilter by category slug
tagslugFilter by tag slug
authorIDFilter by author ID
orderbydate, title, views, randomdateSort field
orderASC, DESCDESCSort direction
show_paginationtrue, falsetrueShow pagination controls
[apd_search_form]
Display the search and filter form with AJAX-powered results.
Parameters: filters, layout, show_submit
Shortcode
[apd_search_form filters="keyword,category,tag" layout="horizontal"]
AttributeValuesDefaultDescription
filterscomma-separatedallWhich filters to display
layoutvertical, horizontalverticalForm layout orientation
show_submittrue, falsetrueShow submit button
[apd_categories]
Display a list or grid of directory categories with icons, colors, and listing counts.
Parameters: layout, columns, show_count, show_icon, parent, hide_empty
Shortcode
[apd_categories layout="grid" columns="4" show_count="true"]
AttributeValuesDefaultDescription
layoutlist, gridgridDisplay style
columns2, 3, 43Number of grid columns
show_counttrue, falsetrueShow listing count per category
show_icontrue, falsetrueShow category icon
parentID0Only show children of this category
hide_emptytrue, falsetrueHide categories with no listings
[apd_submission_form]
Frontend listing submission form. Displays all enabled fields with validation, image uploads, and spam protection.
Parameters: listing_id
Shortcode
[apd_submission_form]
AttributeValuesDefaultDescription
listing_idIDPre-populate the form for editing an existing listing
[apd_dashboard]
User dashboard with tabs for managing listings, favorites, and profile settings.
Parameters: tab
Shortcode
[apd_dashboard]
AttributeValuesDefaultDescription
tablistings, favorites, profilelistingsDefault active tab
[apd_favorites]
Display the current user's saved favorite listings in a grid or list layout.
Parameters: view, columns
Shortcode
[apd_favorites view="grid" columns="3"]
AttributeValuesDefaultDescription
viewgrid, listgridDisplay style
columns2, 3, 43Number of grid columns
[apd_login_form]
Display a WordPress login form styled to match your directory. Useful for login pages that redirect users back to the dashboard.
Parameters: redirect
Shortcode
[apd_login_form redirect="/dashboard/"]
[apd_register_form]
Display a WordPress registration form. New users are assigned the subscriber role and can start submitting listings right away.
Parameters: redirect
Shortcode
[apd_register_form redirect="/dashboard/"]

Settings Reference

Access all plugin settings at Listings → Settings. Settings are organized into tabs.

General Tab

SettingDescription
Currency SymbolSymbol to display with prices (e.g., $, €, £)
Currency PositionBefore or after the amount
Date FormatHow dates are displayed throughout the directory
Distance UnitKilometers or miles

Listings Tab

SettingDescription
Listings Per PageNumber of listings shown on archive pages
Default StatusStatus assigned to new submissions (Published or Pending Review)
Expiration DaysDays until a listing expires (set to 0 for no expiration)
Enable ReviewsAllow reviews on listings
Enable FavoritesAllow users to save favorite listings
Enable Contact FormShow the contact form on listing pages

Submission Tab

SettingDescription
Who Can SubmitAnyone, logged-in users, or specific roles
Guest SubmissionAllow submissions without requiring login
Terms PagePage with terms that users must accept before submitting
Redirect AfterWhere to redirect users after a successful submission

Display Tab

SettingDescription
Default ViewGrid or list layout for listing archives
Grid Columns2, 3, or 4 columns for grid view
Show ThumbnailDisplay featured image on listing cards
Show ExcerptDisplay listing excerpt on cards
Show CategoryDisplay category badge on listing cards
Show RatingDisplay star rating on listing cards
Show FavoriteDisplay favorite button on listing cards
Archive TitleCustom title for the listings archive page
Single LayoutFull width or sidebar layout for single listing pages

Email Tab

SettingDescription
From NameSender name displayed on outgoing emails
From EmailSender email address for outgoing emails
Admin EmailWhere admin notifications are sent
Notification TogglesEnable or disable each individual email notification type

Advanced Tab

SettingDescription
Delete DataRemove all plugin data when uninstalling
Custom CSSAdd custom styles without editing theme files
Debug ModeEnable debug logging for troubleshooting

Template Customization

Overriding Templates

Customize the look of your directory by copying template files from the plugin to your theme. The plugin will automatically use your theme's version instead of the default.

File Structure
plugins/damdir-directory/templates/
    → your-theme/damdir-directory/

Available Templates

TemplatePurpose
archive-listing.phpListings archive page
single-listing.phpSingle listing page
listing-card.phpGrid view card
listing-card-list.phpList view card
submission-form.phpFrontend submission form
dashboard/*.phpDashboard templates
review/*.phpReview display and form templates
search/*.phpSearch form templates
emails/*.phpEmail notification templates

Template Priority

WordPress checks for template overrides in this order:

  1. Child theme: your-child-theme/damdir-directory/
  2. Parent theme: your-theme/damdir-directory/
  3. Plugin: damdir-directory/templates/

Always use a child theme for template overrides so your changes are preserved during theme updates.

Troubleshooting

Listings Not Appearing

  1. Check the listing status — it must be "Published" to be visible.
  2. Verify permalink settings: go to Settings → Permalinks and click Save Changes to flush rewrite rules.
  3. Clear any caching plugins (WP Super Cache, W3 Total Cache, etc.).
  4. Check that listings are assigned to the correct categories.

Search Not Working

  1. Ensure the search form shortcode is placed on a published page.
  2. Check that fields are marked as "searchable" in the field settings.
  3. Verify that AJAX requests are not blocked by a security plugin or firewall.

User Actions Failing (REST / AJAX Errors)

If actions like favoriting, submitting reviews, or saving listings fail silently or show errors:

  1. Open your browser's developer tools (F12) and check the Network tab for failed requests.
  2. Look for the X-WP-Nonce header on outgoing requests — it must be present for all write operations.
  3. Check the response body for these common error codes:
    • 401 rest_not_logged_in — The user is not authenticated. Ensure the user is logged in.
    • 403 rest_nonce_invalid — The nonce is missing, expired, or invalid. A page reload usually resolves this.
  4. If nonces expire frequently, check if a caching plugin is serving stale pages to logged-in users.

Emails Not Sending

  1. Install a mail plugin such as WP Mail SMTP to ensure reliable delivery.
  2. Check your spam and junk folders.
  3. Verify email settings in Listings → Settings → Email.
  4. Enable debug mode to view error logs.

Images Not Uploading

  1. Check file size limits in php.ini (upload_max_filesize and post_max_size).
  2. Verify folder permissions on /wp-content/uploads/.
  3. Check allowed file types in the plugin settings.

Performance Issues

  1. Reduce the number of listings per page.
  2. Enable a caching plugin.
  3. Optimize images before upload.
  4. Check server resources (memory, CPU) with your hosting provider.

404 Errors on Listings

  1. Go to Settings → Permalinks.
  2. Click "Save Changes" — this flushes rewrite rules.
  3. If the issue persists, deactivate and reactivate the plugin.

Getting Help

If you need further assistance:

  1. Check the WordPress.org support forum.
  2. When reporting an issue, include: WordPress version, PHP version, error messages, and steps to reproduce the problem.

FAQ

What versions of WordPress and PHP are supported?

DamDir Directory requires WordPress 6.0 or later and PHP 8.0 or later.

Does APD use custom database tables?

No. APD stores everything using WordPress native post types, taxonomies, and post meta, so it works with standard WordPress backup and migration tools.

Can I use APD with any WordPress theme?

Yes. APD works with any well-coded WordPress theme. It ships with its own templates, which you can override in your theme for full customization.

How many field types are available?

The core plugin includes 24 field types: text, textarea, email, phone, URL, number, decimal, currency, date, time, datetime, date range, select, multi-select, radio, checkbox, checkbox group, switch, color, file, image, gallery, hidden, and rich text. Modules add additional specialized fields.

Can users submit listings from the frontend?

Yes. Use the [apd_submission_form] shortcode on any page. You can configure who can submit (anyone, logged-in users, or specific roles), whether guest submission is allowed, and whether submissions require admin approval.

Do I need to install all modules?

No. Each module is a separate plugin that extends the core. Install only the ones you need. You can also use APD core on its own without any modules.

Is there a REST API?

Yes. APD provides a full REST API under the apd/v1 namespace for listings, categories, reviews, favorites, and more. Each module also adds its own API endpoints. See the Developer Reference for details.

How do I migrate from another directory plugin?

APD uses standard WordPress post types and meta. You can use a migration plugin or write a custom import script to map your existing data to APD's meta keys (all prefixed with _apd_). See the Developer Reference for the full list of meta keys.

What happens to my data if I deactivate the plugin?

Your listings, categories, reviews, and all other data stay in the database. Reactivate the plugin at any time to restore everything. If you want to remove all data permanently, enable the "Delete Data" option in Listings → Settings → Advanced before uninstalling.

Is APD accessible (WCAG compliant)?

APD follows WCAG 2.1 AA best practices. All forms, navigation, and interactive elements include ARIA attributes, keyboard navigation, and screen reader support. Full compliance also depends on your theme and hosting environment.