=== GeoRank – Top Places Lists ===
Contributors: custonis
Tags: local seo, google places, restaurant, city guide, directory, programmatic seo
Requires at least: 5.8
Tested up to: 6.9
Requires PHP: 7.4
Stable tag: 1.0.5
License: GPLv2 or later
License URI: https://www.gnu.org/licenses/gpl-2.0.html

Generate top city lists like “Best Restaurants in Berlin” automatically using real Google Places data. Perfect for local SEO, city guides and programmatic content.

== Description ==

Build scalable local SEO content in minutes.

GeoRank automatically creates high-quality lists like:

• Best Restaurants in Berlin  
• Top Cafes in Hamburg  
• Best Hotels in Munich  
• Best Florists in Kassel  
• Top Gyms in Munich  

All based on real Google Places data — including ratings, reviews, photos and opening hours.

No manual research. No data maintenance. Just use a shortcode.

---

🔥 Why GeoRank?

Most directory plugins require manual input or complex setup.

GeoRank is different:

- Fetches real data automatically
- Ranks places intelligently
- Displays them in a clean, modern layout
- Optimized to reduce API usage through caching
- Supports many official Google Places types
- Mobile-friendly and lightweight

Perfect for programmatic SEO and scalable location pages.

---

⚡ Key Features

- Automatic top lists for any city worldwide
- Smart ranking (rating + review volume)
- Modern responsive card layout
- Advanced open / closed detection
- Place photos, ratings and review counts
- Optional website links
- Fast transient caching
- Developer-friendly architecture
- Custom titles and subtitles
- Support for many official Google Places types
- Improved mobile shortcode compatibility

---

🎯 Perfect for

- Local SEO websites
- City guides
- Affiliate projects
- Travel blogs
- Niche content sites
- Programmatic SEO setups
- Local business directories

---

🧩 Simple Usage

1. Add your Google API key
2. Insert shortcode:

[grtpl_places city="berlin" type="restaurant"]

Examples:

[grtpl_places city="hamburg" type="cafe" limit="8"]

[grtpl_places city="munich" type="hotel" title="Top Hotels in Munich"]

[grtpl_places city="kassel" type="florist"]

[grtpl_places city="berlin" type="gym" title="Best Gyms in Berlin"]

---

🔧 Supported Place Types

Examples include:

- restaurant
- cafe
- bar
- bakery
- florist
- gym
- hotel
- pharmacy
- dentist
- doctor
- beauty_salon
- hair_care
- shopping_mall
- bookstore
- car_dealer
- museum
- zoo

and many more official Google Places types.

---

🔧 Requirements

You need a Google API key with access to:

- Places API
- Place Details API
- Place Photos API

---

== External services ==

This plugin uses the Google Maps Platform (Google Places API) to retrieve place data.

What the service is used for:

- Fetching place search results
- Retrieving place details
- Loading place images

What data is sent and when:

- The search query (e.g. "restaurant in Berlin") is sent when the shortcode is rendered
- Place IDs are sent when additional details are requested
- Requests are cached to reduce API usage

This service is provided by Google.

Terms of Service:
https://cloud.google.com/maps-platform/terms

Privacy Policy:
https://policies.google.com/privacy

---

== Installation ==

1. Upload the plugin to `/wp-content/plugins/`
2. Activate the plugin
3. Go to Settings → GeoRank
4. Add your Google API key
5. Use the shortcode

---

== Frequently Asked Questions ==

= Is this plugin free? =

Yes. The core functionality is completely free.

= Do I need a Google API key? =

Yes, a Google API key is required to fetch real place data.

= Are there any API costs? =

Google provides free usage quotas depending on the API. Additional costs may occur depending on your usage and Google Cloud pricing.

GeoRank reduces API usage automatically through caching.

= Does it slow down my site? =

No. GeoRank uses caching to ensure fast loading times and minimize API requests.

= Can I use it worldwide? =

Yes. GeoRank works globally for any city supported by Google Places.

= Can I customize the title? =

Yes.

Example:

[grtpl_places city="berlin" type="restaurant" title="Best Fine Dining Restaurants in Berlin"]

= Which place types are supported? =

GeoRank supports many official Google Places types including restaurants, cafes, hotels, gyms, florists, pharmacies, beauty salons, shopping malls and more.

---

== Screenshots ==

1. Mobile restaurant list
2. Responsive card layout
3. Different supported place types
4. Settings page with API key setup

---

== Changelog ==

= 1.0.5 =

- Fixed mobile smart quote shortcode compatibility (iPhone / iOS keyboards)
- Improved shortcode value normalization
- Improved shortcode reliability across mobile devices
- Minor internal cleanup and optimizations

= 1.0.4 =

- Added support for many additional official Google Places types
- Improved automatic plural labels for place titles
- Improved shortcode flexibility with custom titles
- Improved mobile presentation
- Minor internal cleanup and optimizations

= 1.0.3 =

- Fixed shortcode escaping to comply with WordPress security guidelines
- Introduced unique prefix (GRTopl / grtpl_) across all classes, hooks and functions
- Updated shortcode to [grtpl_places]
- Standardized naming across plugin (GeoRank)
- Improved overall WordPress.org compliance

= 1.0.2 =

- Fixed plugin naming and slug for WordPress.org compliance
- Updated text domain
- Updated contributors
- Removed directory assets from plugin package
- Added external services documentation
- Fixed admin cache clear functionality

= 1.0.1 =

- Updated Google API cost information to reflect current pricing model
- Improved transparency regarding API usage and billing

= 1.0.0 =

- Initial stable release

---

== Upgrade Notice ==

= 1.0.5 =

Improved shortcode compatibility for mobile devices and smart quotes.

= 1.0.4 =

Added support for many new Google Places types and improved automatic title generation.

= 1.0.3 =

Security and naming improvements for WordPress.org compliance.

= 1.0.2 =

Improved compliance with WordPress.org guidelines and stability fixes.

= 1.0.1 =

Improved API cost transparency and documentation.

= 1.0.0 =

Initial stable release.