ProRank SEO

Locations Manager

Complete guide to managing business locations with full CRUD operations, import/export, and AI optimization

Access Path: ProRank SEO → Local SEO → Locations Manager tab (default)

Overview

The Locations Manager is the primary interface for managing all your business locations. It provides a comprehensive dashboard with statistics, action toolbar, and a grid/list view of all locations. Each location can have complete business information, geo-coordinates, opening hours, and AI-generated content.

Quick Stats Dashboard

Total
All locations count
Primary
Main location marked
With Coords
Have lat/long data
Optimized
Score above 70%

Adding a New Location

Click the "Add New Location" button in the toolbar or the floating action button (FAB) to open the location modal. The modal provides a comprehensive form with all location fields.

FieldTypeRequiredDescription
Business NameTextYesName of the location/business
Business TypeSelectNoSchema.org type (defaults to LocalBusiness)
Street AddressTextNoPhysical street address
CityTextNoCity name
State/RegionTextNoState or province
Postal CodeTextNoZIP or postal code
CountrySelectNoCountry code (defaults to US)
PhoneTelNoBusiness phone number
EmailEmailNoBusiness email
WebsiteURLNoLocation-specific website
LatitudeNumberNoGPS latitude (step: 0.000001)
LongitudeNumberNoGPS longitude (step: 0.000001)
Primary LocationToggleNoMark as main location
Business Types Available: LocalBusiness (default), Restaurant, Store, Hotel, MedicalBusiness, ProfessionalService, AutomotiveBusiness, BeautySalon
Location data is saved via AJAX to prorank_add_location with:
  • Nonce verification using check_ajax_referer()
  • Permission check with current_user_can('manage_options')
  • Data sanitization for all fields

Editing Locations

Click the "Edit" button on any location card to open the edit modal with pre-filled data. The same form is used as for adding, but with existing values loaded.

// JavaScript implementation in local-seo.js
showLocationModal: function(locationId) {
    var location = locationId ? 
        this.locations.find(l => l.id === locationId) : {};
    var isEdit = !!locationId;
    
    // Create modal with pre-filled values
    // AJAX endpoint: prorank_update_location
}

Changes are saved to the same WordPress option (prorank_local_seo_locations) and the schema output is automatically updated.

Deleting Locations

Click the "Delete" button on any location card. A confirmation dialog will appear before deletion.

Deletion is permanent and cannot be undone. The location will be removed from:
  • The locations database
  • Schema.org output
  • KML sitemap (if enabled)

The delete operation calls prorank_delete_location with proper security checks.

Import/Export Functionality

Import Locations

Click "Import" to bulk upload locations from a CSV or JSON file. The import supports:

  • CSV format with headers matching field names
  • JSON array of location objects
  • Automatic duplicate detection
  • Validation of required fields
"name","street_address","city","state_region","postal_code","country","phone"
"Downtown Store","123 Main St","New York","NY","10001","US","+1-555-0100"
"Uptown Branch","456 Park Ave","New York","NY","10021","US","+1-555-0200"

Export Locations

Click "Export" to download all locations as a JSON file. The export includes:

  • All location data including coordinates
  • Opening hours configuration
  • AI-generated content
  • Optimization scores

Endpoint: prorank_export_locations returns JSON data for download.

AI Optimization Features

The Locations Manager includes AI-powered features to optimize your location data:

AI Description Generation

Click "AI Optimize" to generate SEO-friendly descriptions for all locations. The AI:

  • Creates unique descriptions for each location
  • Includes local keywords and landmarks
  • Optimizes for voice search queries
  • Maintains consistent brand voice

Endpoint: prorank_generate_ai_description

Location Scoring

Each location receives an optimization score (0-100%) based on:

  • Completeness of information
  • Presence of geo-coordinates
  • Opening hours configuration
  • Description quality and length
  • Schema markup validity

Endpoint: prorank_get_location_score

Bulk Operations

The toolbar provides several bulk operation buttons:

Validate All

Runs validation on all locations to check for missing data, invalid coordinates, or schema errors. Results are displayed in a report.

Generate Schema

Creates LocalBusiness schema markup for all locations and outputs it to the page head via wp_head hook.

Bulk operations process locations in batches to avoid timeouts. Progress is shown with a loading indicator.

View Options

Toggle between Grid and List views using the view switcher buttons:

Grid View (Default)

Displays locations as cards with key information visible. Best for visual scanning and quick actions. Shows primary badge, address, phone, and optimization score.

List View

Table format with sortable columns. Better for comparing data across locations. Implemented via JavaScript in LocationManager.renderLocationsList()

Use the search box to filter locations by name, address, or phone number. Search is performed client-side for instant results.

Technical Implementation

Data Storage

Locations are stored in WordPress options table:

// Option name: prorank_local_seo_locations
// Format: Serialized array of location objects
get_option('prorank_local_seo_locations', []);

JavaScript Object

The LocationManager object in local-seo.js handles all client-side operations:

var LocationManager = {
    locations: [],
    init: function() { /* Initialize */ },
    loadLocations: function() { /* AJAX load */ },
    renderLocationsList: function() { /* Display */ },
    showLocationModal: function(id) { /* Add/Edit */ },
    saveLocation: function() { /* AJAX save */ },
    deleteLocation: function(id) { /* AJAX delete */ }
};

Security Implementation

  • All AJAX calls include nonce: wp_create_nonce('prorank_local_seo')
  • Server-side verification: check_ajax_referer('prorank_local_seo', 'nonce')
  • Capability check: current_user_can('manage_options')
  • Input sanitization with WordPress functions
  • Output escaping: esc_html(), esc_attr()

Best Practices

✅ Do

  • • Keep NAP data consistent
  • • Add geo-coordinates for all locations
  • • Set accurate opening hours
  • • Mark one primary location
  • • Use AI optimization for descriptions

❌ Don't

  • • Use fake or placeholder data
  • • Duplicate location names
  • • Skip validation checks
  • • Forget to export backups
  • • Ignore optimization scores