WordPress City Directory Platform

Замовник: AI | Опубліковано: 12.11.2025

AI-assisted coding is perfectly fine for this project as long as the final result is clean, working WordPress code. I’m looking for an experienced WordPress developer to build the first version of a global city directory site. The idea: - Homepage shows continents, countries and top cities. - Each city has its own page with multiple sections (zones, agencies, venues, shops, hotels, etc.). - Every listing can be voted up/down, has a score, and users can submit new listings for review. This is not just a simple landing page – I need both front-end templates and backend logic. -------------------------------------------------- Tech Requirements -------------------------------------------------- - Must be built on WordPress (custom theme or child theme + custom plugin is fine). - Clean, structured code (PHP + a bit of JS/jQuery). - Use Custom Post Types and custom fields for data (no hard-coding content into templates). -------------------------------------------------- Data Model (Core) -------------------------------------------------- 1) Custom Post Type: City Fields / Meta: - City name (post title) - Country - Overall city score/rank (numeric) - Legality/status (simple text or select: Green / Amber / Red) - Hero/banner image 2) Custom Post Type: Listing - Each listing is attached to exactly one City. Fields / Meta: - Name - Short description - Thumbnail image - Section type (zone, directory, classifieds, agency, massage/spa, sauna, club, show/bar, shop, hotel, etc.) - Area / neighborhood - Price level (e.g. $, $$, $$$) - Tags (e.g. “touristy”, “local”, “central”) - up_votes (integer) - down_votes (integer) - Calculated score (float, 1–5) 3) (Optional but ideal) Taxonomies: - listing_section – to group listings by section type on city pages. - listing_area – neighborhoods / districts. I’m open to your preferred implementation as long as the behavior matches. -------------------------------------------------- Front-End Features -------------------------------------------------- 1) Homepage - Header with site name on the left and a global world map image with dots on major cities on the right (placeholder image is fine). - Large search bar: - Placeholder: “Search a city or country… (e.g., Bangkok, Thailand)” - Search should primarily look up City posts. - Row of continent buttons: - North America, South America, Europe, Asia, Oceania, Africa - When a continent button is clicked, it expands a panel below showing: - Countries in that continent. - Under each country, a list of top cities (e.g., “Bangkok, Thailand”), each linking to its City page. - Only one continent panel open at a time. - Under that, a 3×2 grid of continent cards: - Each card: - Small image (map/skyline) - Title (e.g. “Best Nightlife Cities in Asia”) - Short description line - Top 5 cities (e.g. “Bangkok, Thailand — Score 4.6 (312 votes)”) - Chips like: “[ Cities mapped: 70+ ] [ Avg score: 4.0 ]” - City names link to their City pages. I will provide example city names and dummy scores; you just need the structure and dynamic support. 2) City Page Template (Single City) Each city page should use one template and be populated dynamically. Hero section: - Wide banner image (hero_image) - City line: “City, Country” - Chips row: - “[ Redlight Rank: X/10 ] [ Legality: Status ] [ Open City Map ▸ ]” - 1–2 line intro (excerpt or custom field) Table of Contents bar: - Anchor links that scroll to sections on the same page, for example: - Legality & Summary - Street Zones / Activity Areas - Directories - Classified Boards & Forums - Agencies - Massage & Spas - Saunas & Bathhouses - Clubs (Unisex / Swinger) - Strip Clubs & Live Shows - Shops & Stores - Short-Stay / Hourly Hotels - Nearby Cities & Hubs (Exact names can be configurable labels; structurally they are different “sections” showing Listings of certain types.) Section pattern (repeated for each content section): For each section (e.g. “Agencies”, “Massage & Spas”, etc.): - Section title (H2) - 1–3 sentence explanation (static text or per-city field) - Button: “[ + Add a listing to this section ]” - Below that, a list of Listing cards filtered by: - City = current City - Section type (or taxonomy term) = this section Listing card layout (same everywhere): - Thumbnail image on the left - On the right: - Name / title - One-line description - Tag row (e.g. “[ Price: $$ ] [ Area: Sukhumvit ] [ Type: Spa ]”) - Score & voting line: - “Score 4.2 (175 votes) [ thumb up ] [ thumb down ] Report / Suggest update” Section ordering: - Listings inside each section should be sorted by Score DESC (highest-rated at top). Special case: - The first section “Street Zones / Activity Areas” should also show a wide city map/heatmap image above the listing cards. -------------------------------------------------- Voting Logic (thumb up / thumb down) -------------------------------------------------- For each Listing: - Two clickable icons/buttons: thumb up and thumb down. - On click: - Update up_votes or down_votes in the database (on that Listing). - Recalculate score using a simple formula, for example: score = round((up_votes / (up_votes + down_votes)) * 5, 1) - Display: “Score X.X (N votes)” where N = up_votes + down_votes. Basic anti-abuse: - At minimum, prevent the same browser from repeatedly voting on the same listing: - Use a cookie or simple IP-based check so each user can only vote once per listing (per browser/IP). - It does not need to be bulletproof, just basic protection. -------------------------------------------------- Rankings -------------------------------------------------- - City pages: each section’s Listings ordered by score DESC. - Homepage continent cards: top 5 cities per continent based on a field like city_overall_score or similar (stored on City post and used for sorting). - Expanded continent panels: under each country, show top cities sorted by that same city score. (For phase 1, I am fine if the city overall scores are stored manually as fields, as long as the ordering works.) -------------------------------------------------- “Add a Listing” Submission Flow -------------------------------------------------- For each section on a city page: - Button: “[ + Add a listing to this section ]” - Clicking opens a form (modal or separate page): - City (auto-filled from current city) - Section type (auto-filled based on which section button was clicked) - Name - Short description - Area / neighborhood - Optional website URL On submit: - Create a new Listing post in WordPress with status = pending/draft. - I (admin) can see it in the WP dashboard, edit it, and publish it. - No need for user accounts at this stage. -------------------------------------------------- Search -------------------------------------------------- - Main search bar on the homepage: - Should primarily search City posts by name and country. - If possible, show an autocomplete or a simple list of matching cities. -------------------------------------------------- Deliverables -------------------------------------------------- - Fully set up WordPress site with: - Custom Post Types (City + Listing) - Required taxonomies / meta fields - Homepage template with: - Header + map image area - Search bar + continent buttons + continent expand panel - 3×2 continent cards pulling city data (top 5 per card) - Single City template including all sections and dynamic listing cards - Working voting system (thumb up / thumb down) with scores stored in DB - Listing submission flow: form → pending Listing - Basic styling and layout (does not need to be fancy, just clean and responsive) - I will handle real content entry later (cities, listings, images, etc.) once the structure and logic work. -------------------------------------------------- When You Bid -------------------------------------------------- Please confirm: 1) That you are comfortable creating custom post types, post meta, and basic voting logic in WordPress. 2) Rough estimate of time and fixed price for this full scope. 3) Links to any previous directory / rating / voting style projects you have done in WordPress.