WP Manifestindependent plugin directory
manifest / content / wp-wcg-locations

WCG Locations

Locations for WCG

by West Coast Geothermal · github.com/sitebuilderone/wp-wcg-locations

★ 0stars
0forks

Install

No release zip yet. The repository archive installs, but the folder name will carry the branch suffix and updates will not flow:

wp plugin install https://github.com/sitebuilderone/wp-wcg-locations/archive/refs/heads/main.zip

WCG Locations is a WordPress plugin for structured WCG location landing pages.

It creates a Locations content type and renders city landing pages at:

/locations/{city}/

Example:

/locations/vancouver/
/locations/burnaby/
/locations/richmond/
/locations/coquitlam/

The plugin is designed to replace manually pasted full-page LiveCanvas HTML over time, while preserving the same Bootstrap and van-* visual pattern.

Current Scope

This plugin owns location pages only.

Included in v1:

  • Locations custom post type.
  • /locations/{slug}/ permalinks.
  • JSON importer.
  • Slug-based update-or-create imports.
  • Structured location content stored in post meta.
  • LiveCanvas-compatible frontend template.
  • One top-of-page Fluent Forms embed, with later CTAs linking back to it.
  • SEO-friendly <img> output for hero, sticky section, and service-card images.
  • Google Maps embed support in the neighbourhoods / areas section.
  • Basic WebPage, Service, and FAQPage schema generation.
  • Shortcode/filter slot for a future buildings plugin.

Not included:

  • Building custom post type.
  • Building landing pages.
  • QR campaign tracking.
  • Campaign redirects.
  • CRM or outreach automation.

Installation

Copy or clone this plugin folder into WordPress:

wp-content/plugins/wp-wcg-locations/

Then activate:

WP Admin > Plugins > WCG Locations > Activate

After activation, WordPress should flush rewrite rules automatically. If /locations/{city}/ does not resolve, go to:

Settings > Permalinks > Save Changes

Important Migration Note

The current production Vancouver page is a manual WordPress page:

https://www.westcoastgeothermal.com/locations/vancouver/

A manual Page and a Location CPT post cannot own the same URL at the same time.

Recommended migration:

  1. Import Vancouver JSON into this plugin as a draft.
  2. Preview the generated Location post.
  3. When ready, remove or unpublish the existing manual Vancouver page.
  4. Publish the new Vancouver Location post.
  5. Save permalinks.
  6. Confirm /locations/vancouver/.

After that, future Vancouver JSON imports can update the Location post by slug.

JSON Import

Go to:

WP Admin > Locations > Import JSON

Upload or paste a JSON file.

The importer uses slug as the stable identifier:

  • If a matching Location post exists, it updates that post.
  • If no matching Location post exists, it creates a new one.

Minimum JSON:

{
  "post_type": "location",
  "slug": "coquitlam",
  "title": "Coquitlam",
  "status": "draft",
  "seo": {
    "title": "Coquitlam Heat Pump Repair & Condo Replacement",
    "meta_description": "Coquitlam condo heat pump repair, second opinions, health checks, and group pricing from water-source and geothermal specialists."
  },
  "hero": {
    "eyebrow": "Coquitlam",
    "location_label": "Burquitlam - Lougheed - Coquitlam Centre",
    "h1": "Coquitlam heat pump<br>repair &amp; condo<br><span class=\"it\">replacement</span><br>specialists.",
    "intro": "West Coast Geothermal helps Coquitlam condo owners, strata councils, property managers, homeowners, and building teams diagnose, repair, and replace heat pump systems.",
    "primary_cta": {
      "label": "Request service",
      "target": "#coquitlam-contact"
    },
    "secondary_cta": {
      "label": "Get a second opinion",
      "target": "#coquitlam-contact"
    }
  },
  "trust_points": [
    "Serving BC since 2008",
    "Water-source & geothermal specialists",
    "Repair-first recommendations",
    "Strata-friendly coordination"
  ],
  "faqs": [
    {
      "question": "Do you repair condo heat pumps in Coquitlam?",
      "answer": "Yes. West Coast Geothermal helps Coquitlam condo and strata owners with heat pump diagnostics, repair advice, replacement planning, health checks, second opinions, and building group pricing."
    }
  ]
}

Use one JSON file per location:

examples/vancouver-location.sample.json
coquitlam-location.json
richmond-location.json

Recommended top-level fields:

{
  "post_type": "location",
  "slug": "vancouver",
  "title": "Vancouver",
  "status": "draft",
  "seo": {},
  "hero": {},
  "contact": {},
  "map": {},
  "trust_points": [],
  "sections": {},
  "services": [],
  "local_resources": {},
  "process_image": {},
  "process": [],
  "who_we_help_image": {},
  "who_we_help": [],
  "neighbourhoods": [],
  "nearby_service_areas": [],
  "faqs": [],
  "final_cta": {}
}

Recommended image fields:

{
  "image_url": "https://www.westcoastgeothermal.com/media/vancouver-heat-pump-services.jpg",
  "image_alt": "Vancouver heat pump services",
  "image_caption": "Vancouver, BC - heat pump services",
  "image_placeholder": "Vancouver heat pump services"
}

Image fields are supported on:

  • hero
  • sections.what_we_do
  • sections.local_context
  • sections.common_problem
  • sections.system_types
  • sections.repair_vs_replacement
  • each item in services
  • process_image
  • who_we_help_image

If a location does not provide image fields, the template falls back to the same default image set currently used by the Vancouver reference page. For city-specific SEO, replace those defaults with locally relevant images as they become available.

Recommended local resource fields:

{
  "local_resources": {
    "eyebrow": "Permits and rebates",
    "heading": "Vancouver permit and rebate support.",
    "intro": "Some heat pump projects may require a municipal permit or may qualify for rebates.",
    "support_note": "West Coast Geothermal can help you identify what may apply and provide equipment or installation details for your application when applicable.",
    "links": [
      {
        "label": "City of Vancouver mechanical permits",
        "url": "https://vancouver.ca/home-property-development/mechanical-permit.aspx"
      },
      {
        "label": "Better Homes BC condo and apartment heat pump rebates",
        "url": "https://betterhomesbc.ca/rebates/apartments-heat-pump-rebates-for-electricity/"
      }
    ]
  }
}

Keep local resource links focused. Use one or two municipal permit/bylaw links for the city, plus the provincial rebate link where relevant. The template renders a maximum of four links.

LiveCanvas Compatibility

The generated frontend template preserves the current LiveCanvas-style page pattern:

  • Bootstrap grid classes.
  • lc-block wrappers.
  • editable="rich" attributes where useful.
  • Existing WCG van-* classes.
  • Image placeholders around real <img> tags for section and service imagery.
  • Fluent Forms shortcode output.
  • One form embed near the top of the page.
  • Later CTA buttons link back to the top form.
  • Google Maps iframe output in the neighbourhoods section.
  • FAQ accordion markup.

Reference layout:

sample-livecanvas-layout.html

Note: the plugin template is data-driven. It is not intended to make every section drag-and-drop editable inside LiveCanvas. Editors should change page content through the structured Location fields/imports, not by pasting a full page of HTML.

Future Buildings Integration

The template includes this shortcode:

[wcg_location_buildings location="vancouver"]

By default it outputs nothing.

The future buildings plugin can hook into:

add_filter('wcg_locations_buildings_html', function ($html, $location_slug, $post_id) {
    return $html;
}, 10, 3);

That keeps building pages and building directories out of this plugin while allowing related buildings to appear on each location page.

Development Notes

Internal post type:

wcg_location

Public URL:

/locations/{slug}/

Structured content meta key:

_wcg_location_data

Run a PHP syntax check before packaging:

find . -name '*.php' -print0 | xargs -0 -n1 php -l

Suggested Workflow

  1. Generate or edit a location JSON file.
  2. Import it through Locations > Import JSON.
  3. Preview the Location post.
  4. Adjust the JSON and re-import as needed.
  5. Publish when ready.
  6. Migrate old manual pages only after the generated page is ready.