How to Build a Directory Websitein WordPress Using Custom Taxonomies, ACF & Map Integration

How to Build a Directory Website in WordPress Using Custom Taxonomies, ACF & Map Integration

16 minutes read

Dec 05, 2025

How to Build a Directory Websitein WordPress Using Custom Taxonomies, ACF & Map Integration

How to Build High-Value Directory Websites Without Complex Frameworks

Directory websites are quietly some of the most profitable and evergreen assets you can own in 2025. A well-executed directory doesn’t just attract visitors, it becomes the go-to resource in its niche, generates recurring revenue through featured listings, and often sells for 30–50× monthly profit. 

The secret most $59 directory themes don’t want you to know? 

You can build a faster, cleaner, more flexible, and higher-ranking directory yourself without ever touching React or Laravel, using nothing more than WordPress core, custom taxonomies, Advanced Custom Fields (ACF), and smart map integration. 

I’ve built and sold directory sites for five- and six-figure exits using exactly this stack. This is the complete, step-by-step playbook updated for WordPress 6.7+, 2025 performance standards, and modern SEO.

Why This Custom Approach Crushes Pre-Made Directory Themes 

Pre-Made Directory Themes This Custom Taxonomies + ACF Method 
2–4 second load times Under 900 ms (real-world tested) 
Locked into the developer’s vision 100% your design and features 
Bloated code & unused shortcodes Only the code you actually need 
Hard to migrate later Portable, clean, future-proof 
$200–$600 one-time + renewals Mostly free tools + ACF Pro (~$149/year) 

Let’s build it.

Phase 1: Planning Your Directory Like a Pro

Skip this phase, and you’ll refactor for months.

Ask yourself:

  1. What is your primary listing type? Examples: Local Business, Doctor, Lawyer, Apartment, Tour, Coach, Mechanic, Wedding Venue, Coworking Space.
  2. Core taxonomies (your filter system) Must-have in 2025:
    • Category (hierarchical)
    • Location (Country → State → City → Neighborhood)
    • Features/Amenities (non-hierarchical)
    • Price Range (optional but powerful)
  3. Essential custom fields per listing (Standard 2025 directory fields):
    • Address (full or broken into parts)
    • Phone & WhatsApp
    • Email & website
    • Google Map location (lat/lng + address)
    • Opening hours (repeater)
    • Price indicator
    • Gallery (multiple images)
    • Logo
    • Social profiles
    • Accepts bookings/reservations
    • Menu or brochure (PDF)

Phase 2: The Bulletproof 2025 Tech Stack 

Hosting 

Rocket.net, Kinsta, or Cloudways DO + Redis (sub-300 ms TTFB guaranteed) 

Theme (choose exactly one) 

  • Kadence (best free + pro ecosystem in 2025) 
  • Blocksy 
  • GeneratePress + GenerateBlocks 
  • Never use a “directory theme.” 

Plugins you actually need 

    1. Advanced Custom Fields PRO (maps, repeaters, flexible content) 
    2. Rank Math PRO (best schema automation) 
    3. FlyingPress or LiteSpeed Cache (performance) 
    4. FacetWP (unbeatable filtering) or JetSmartFilters 
    5. Optional: WP Grid Builder (beautiful cards without Elementor) 

That’s it. No bloat.

Phase 3: Creating the Custom Post Type (The Right Way) 

Never rely on CPT UI long-term. Use code. 

Add this to a site-specific plugin (create one at Plugins → Add New → “Site Functions”) or your child theme’s functions.php: 

PHP


function create_directory_listing_cpt() { 
	$labels = [ 
    	'name'              	=> _x('Listings', 'Post type general name', 'textdomain'), 
    	'singular_name'     	=> _x('Listing', 'Post type singular name', 'textdomain'), 
    	'menu_name'         	=> 'Directory', 
    	'name_admin_bar'    	=> 'Listing', 
    	'add_new'           	=> 'Add New', 
    	'add_new_item'      	=> 'Add New Listing', 
    	'edit_item'         	=> 'Edit Listing', 
    	'new_item'          	=> 'New Listing', 
    	'view_item'         	=> 'View Listing', 
    	'all_items'         	=> 'All Listings', 
    	'search_items'      	=> 'Search Listings', 
    	'not_found'         	=> 'No listings found', 
	]; 
 
	$args = [ 
    	'labels'         	=> $labels, 
    	'public'         	=> true, 
    	'publicly_queryable' => true, 
    	'show_ui'        	=> true, 
    	'show_in_rest'   	=> true, 
    	'rest_base'      	=> 'listings', 
    	'has_archive'    	=> true, 
    	'rewrite'        	=> ['slug' => 'directory'], 
    	'supports'       	=> ['title', 'editor', 'thumbnail', 'excerpt', 'custom-fields'], 
    	'menu_icon'      	=> 'dashicons-location-alt', 
    	'capability_type'	=> 'post', 
    	'show_in_nav_menus'  => true, 
	]; 
 
	register_post_type('directory_listing', $args); 
} 
add_action('init', 'create_directory_listing_cpt');

Phase 4: Building Powerful Custom Taxonomies 

These are your filtering categories. 

PHP


// 1. Main Categories 
register_taxonomy('dir_category', 'directory_listing', [ 
	'label'     	=> 'Categories', 
	'hierarchical'  => true, 
	'show_in_rest'  => true, 
	'rewrite'   	=> ['slug' => 'directory-category'], 
]); 
 
// 2. Locations (hierarchical) 
register_taxonomy('dir_location', 'directory_listing', [ 
	'label'     	=> 'Locations', 
	'hierarchical'  => true, 
	'show_in_rest'  => true, 
	'rewrite'   	=> ['slug' => 'location'], 
]); 
 
// 3. Features / Amenities (tags style) 
register_taxonomy('dir_feature', 'directory_listing', [ 
	'label'     	=> 'Features', 
	'hierarchical'  => false, 
	'show_in_rest'  => true, 
	'rewrite'   	=> ['slug' => 'feature'], 
]); 

Now you can organize listings like: 

directory/location/texas/austin/ → All Austin listings 

directory-category/restaurants/ → All restaurants 

Phase 5: ACF Field Group – Where the Magic Happens 

Create a new Field Group called “Directory Listing Details.” 

Recommended fields (2025 standard): 

    1. Text – Phone Number 
    2. Text – WhatsApp Number 
    3. Email – Contact Email 
    4. URL – Website URL 
    5. Google Map – Map Location (ACF Map field – Pro) 
    6. Repeater – Opening Hours → Subfields: Day (select), Open Time, Close Time, Closed? (true/false) 
    7. Select – Price Range (choices: $ : : $$$ : $$) 
    8. Gallery – Photo Gallery 
    9. Image – Logo 
    10. File – Menu / Brochure PDF 
    11. True/False – Accepts Reservations 
    12. Taxonomy – Features (display as checkboxes) 
    13. WYSIWYG – Full Description 
    14. Link – Booking Link (ACF Link field) 

Location rule: Post Type is equal to directory_listing 

Phase 6: Map Integration That Actually Works in 2025 

Option 1 – ACF Google Map Field (still the gold standard) 

Display on single listing: 

PHP


<?php $location = get_field('map_location');  
if( $location ): ?> 

<div class="directory-map-wrapper"> 
    <div class="acf-map" data-zoom="16"> 
        <div class="marker"  
            data-lat="<?php echo esc_attr($location['lat']); ?>"  
            data-lng="<?php echo esc_attr($location['lng']); ?>"> 
            <h4><?php the_title(); ?></h4> 
            <p><?php echo esc_html($location['address']); ?></p> 
        </div> 
    </div> 
</div> 

<style> 
.acf-map { width: 100%; height: 450px; border: 1px solid #ddd; } 
.acf-map img { max-width: inherit !important; } 
</style> 

<script src="https://maps.googleapis.com/maps/api/js?key=YOUR_API_KEY"></script> 
<script> 
(function( $ ) { 
    function new_map( $el ) { 
        var $markers = $el.find('.marker'); 
        var args = { 
            zoom        : 16, 
            center      : new google.maps.LatLng(0, 0), 
            mapTypeId   : google.maps.MapTypeId.ROADMAP 
        }; 
        var map = new google.maps.Map( $el[0], args); 
        map.markers = []; 
        $markers.each(function(){ add_marker( $(this), map ); }); 
        center_map( map ); 
        return map; 
    } 
    // ... rest of ACF official script 
})(jQuery); 
</script> 

<?php endif; ?>

Phase 7: Designing the Front-End Templates 

Create these files in your child theme: 

    1. single-directory_listing.php 
    2. archive-directory_listing.php 
    3. taxonomy-dir_location.php 
    4. taxonomy-dir_category.php 

Example single template layout (clean, modern 2025 style): 

  • Hero with featured image + title overlay 
  • Breadcrumb 
  • Rating stars (custom field or plugin) 
  • Quick info bar (phone, website, address, “Get Directions” button) 
  • Interactive map 
  • Opening hours table 
  • Tabbed sections: About | Photos | Menu | Reviews 
  • Contact form 
  • Related listings

Phase 8: Search & Filtering – The Feature That Makes or Breaks Directories 

FacetWP remains undefeated in 2025: 

  • Instant AJAX filtering 
  • Works perfectly with taxonomies + ACF fields 
  • Proximity search using your map field 
  • Mobile-friendly sliders, dropdowns, and checkboxes 
  • Fully cacheable 

Setup takes 15 minutes and instantly turns your directory from “nice” to “addictive.” 

Phase 9: SEO & Schema Mastery 

Rank Math PRO auto-generates a perfect LocalBusiness schema using your ACF fields. Enable: 

  • Breadcrumbs 
  • Sitemap including your CPT 
  • FAQ schema on listings 
  • Image SEO 

Use this permalink structure: 

  • /directory/%dir_location%/%postname%/

Phase 10: Performance & Core Web Vitals 

A fast directory ranks higher and converts better. 

Must-do: 

  • FlyingPress + BunnyCDN 
  • WebP + AVIF images 
  • Lazy load everything 
  • Preload critical fonts/CSS 
  • Redis object caching 

Real-world result: 98–100 mobile PageSpeed, <1.2s fully loaded.

Phase 11: Monetization & Growth Features 

Once live, add: 

  • Claim listing ($49–$299 one-time) 
  • Featured listings (top of category) 
  • Paid submissions 
  • User reviews 
  • Favorites system 
  • Front-end submission portal

Build a smarter WordPress directory with expert guidance

The Way Forward

Your WordPress directory is now complete, powered by Custom Post Types, organized through custom taxonomies, enhanced with ACF, and elevated with professional map integration. This foundation gives you a high-performance, SEO-optimized directory ready to grow and monetize.

You may also like this: Top 10 Essential WordPress Plugins You Must Have in 2025

Free Consultation

    Hemang Shah

    Hemang Shah serves as Assistant Vice President at iFlair Web Technologies Pvt. Ltd., bringing over 15 years of extensive IT experience and strategic leadership to drive successful project outcomes. He possesses a comprehensive understanding of technology, operations, and business alignment, and has consistently led teams and initiatives delivering high-quality, scalable, and efficient solutions across diverse industries.
    With a strong background in IT management and proven leadership and decision-making skills, he oversees complex projects, implements best practices, optimizes processes, and fosters a collaborative environment that empowers teams to achieve organizational objectives. His commitment to innovation, operational excellence, and client satisfaction has significantly contributed to the organization’s growth and success.



    MAP_New

    Global Footprints

    Served clients across the globe from38+ countries

    iFlair Web Technologies
    Privacy Overview

    This website uses cookies so that we can provide you with the best user experience possible. Cookie information is stored in your browser and performs functions such as recognising you when you return to our website and helping our team to understand which sections of the website you find most interesting and useful.