Grandview Rank & Rent Builder
Grandview Rank & Rent Builder
Description
Grandview Rank & Rent Builder helps SEO agencies and local lead generation businesses create optimized service area pages at scale. Select your services, enter your target cities, and generate hundreds of properly structured pages in seconds.
Each generated page includes:
- Schema.org LocalBusiness markup — structured data Google uses for rich results
- Semantic HTML structure — H1, H2, lists, and CTA all in the right order
- Your tracking phone number — pre-filled into every call-to-action
- Duplicate prevention — skips pages that already exist so re-runs are safe
Who it’s for
- Rank and rent SEO agencies building local lead gen assets
- Multi-location service businesses (plumbing, HVAC, roofing, etc.)
- Marketing agencies managing city + service matrix sites for clients
How it works
- Install and activate the plugin
- Go to Rank & Rent Settings and enter your phone number, CTA text, and default state
- Go to Rank & Rent Generate Pages, select services, and paste in your city list
- Click Generate Pages — done
Generated pages follow a /service-city URL pattern (e.g., /plumbing-phoenix) and are published immediately. You can edit any page afterward in the standard WordPress editor.
Installation
- Upload the
grandview-rank-rent-builderfolder to/wp-content/plugins/ - Activate via Plugins Installed Plugins
- Navigate to the Rank & Rent menu in your WordPress admin
Faq
No hard limit. The plugin loops through every service × city combination you provide. Generating thousands of pages at once on a low-memory host may time out — if that happens, break it into smaller batches.
No. The plugin checks for an existing page at each URL slug before creating a new one and skips it if found.
Yes — each page is a standard WordPress page and can be edited freely in Gutenberg or the Classic Editor.
Yes. Pages are created with standard WordPress page content and use no theme-specific shortcodes or templates.
No. All page generation happens locally on your server. No data is sent to external services.
The default list (Phoenix metro area) is used when the city textarea is left blank. You can always type in your own cities — one per line — to override it.
Reviews
Changelog
1.0.2
- Fixed: Nonce action mismatch between form and AJAX handler (generation would return 403)
- Fixed: Removed esc_html/esc_attr from JSON-LD schema values — was causing double-encoded entities in structured data
- Fixed: Replaced deprecated get_page_by_path() with WP_Query (deprecated in WP 6.7)
- Fixed: Hardcoded post_author 1 replaced with get_current_user_id()
- Improved: JS city count fallback now uses localized PHP value instead of hardcoded 10
- Improved: Submit button disabled during AJAX request to prevent double-submission
1.0.1
- Security: Nonce verification added to all AJAX endpoints
- Security: current_user_can( ‘manage_options’ ) check added to all AJAX endpoints
- Fixed: JS and CSS now enqueued via wp_enqueue_script / wp_enqueue_style
- Fixed: All echoed variables escaped with esc_html / esc_attr / esc_url
- Fixed: Unique plugin prefix (granrareb) applied throughout
- Fixed: Input sanitization on all $_POST values
1.0.0
- Initial release