From aa974bf5954d0cca2506003a3cd9ec4eb89ed0bc Mon Sep 17 00:00:00 2001
From: Jake Vanderwerf <get@jakevanderwerf.ca>
Date: Mon, 11 May 2026 18:35:55 +0000
Subject: [PATCH] =Transfer to new Registrar system
---
seo.php | 400 +++++++++++++++++++++++++++++++++++++++++----------------
1 files changed, 288 insertions(+), 112 deletions(-)
diff --git a/seo.php b/seo.php
index abccb44..6df1e93 100644
--- a/seo.php
+++ b/seo.php
@@ -1,156 +1,332 @@
<?php
-add_filter('jvb_schema', function($schema) {
+
+add_filter('altr_OrganizationSchemaDefault', 'altr_organization_schema');
+function altr_organization_schema(array $schema):array {
return array_merge($schema, [
- 'organization' => [
- 'type' => 'LocalBusiness',
- 'name' => 'Legacy Tattoo Removal',
- 'url' => get_home_url(),
- 'description' => 'The laser techs who love tattoos: Edmonton\'s removal experts working with tattoo artists.',
- 'slogan' => 'See the Difference.',
- 'logo' => get_theme_mod('custom_logo'),
- 'foundingDate' => '2023-10-03',
+ 'id' => '#legacy-tattoo-removal',
+ 'type' => 'JVBase\managers\SEO\render\Thing\Organization\LocalBusiness\HealthAndBeautyBusiness',
+ 'name' => 'Legacy Tattoo Removal',
+ 'url' => get_home_url(),
+ 'description' => 'The laser techs who love tattoos: Edmonton\'s removal experts working with tattoo artists.',
+ 'slogan' => 'See the Difference.',
+ 'logo' => get_theme_mod('custom_logo'),
+ 'foundingDate' => '2023-10-03',
- 'founders' => [
- ['name' => 'Madi Rawson', 'url' => 'https://tattysoap.ca'],
- ['name' => 'Heidi Freschauf'],
- ['name' => 'Jake Vanderwerf', 'url' => 'https://jakevan.ca'],
+ 'founder' => [
+ [
+ 'id' => 'madi-rawson',
+ 'type' => 'JVBase\managers\SEO\render\Thing\Person\Person',
+ 'name' => 'Madi Rawson',
+ 'url' => 'https://madimori.ca'],
+ [
+ 'id'=> 'heidi-freschauf',
+ 'type' => 'JVBase\managers\SEO\render\Thing\Person\Person',
+ 'name' => 'Heidi Freschauf'],
+ [
+ 'id'=> 'jake-vanderwerf',
+ 'type' => 'JVBase\managers\SEO\render\Thing\Person\Person','name' => 'Jake Vanderwerf', 'url' => 'https://jakevan.ca'],
+ ],
+
+ 'sameAs' => [
+ 'https://www.instagram.com/LegacyTattooRemoval',
+ 'https://www.facebook.com/LegacyTattooRemoval',
+ 'https://www.tiktok.com/@legacytattooremoval',
+ 'https://bsky.app/profile/legacytattooremoval.ca'
+ ],
+
+ // Contact
+ 'telephone' => '+1-825-925-7398',
+ 'email' => 'info@legacytattooremoval.ca',
+
+ // Address - note the key names
+ 'address' => [
+ 'streetAddress' => '6551 111 St NW',
+ 'addressLocality' => 'Edmonton',
+ 'addressRegion' => 'AB',
+ 'postalCode' => 'T6H 4R5',
+ 'addressCountry' => 'CA',
+ ],
+
+ // Geo - note the key names
+ 'geo' => [
+ 'latitude' => '53.5035125',
+ 'longitude' => '-113.5188023',
+ ],
+
+ // Business details
+ 'priceRange' => '$$',
+ 'paymentAccepted' => ['Cash', 'Credit Card', 'Debit Card', 'E-Transfer'],
+ 'currenciesAccepted' => ['CAD'],
+ 'areaServed' => [
+ [
+ 'id' => '#edmonton',
+ 'type' => 'JVBase\managers\SEO\render\Thing\Place\AdministrativeArea\City',
+ 'name' => 'Edmonton',
+ 'sameAs' => 'https://en.wikipedia.org/wiki/Edmonton'
],
+ [
+ 'id' => '#stalbert',
+ 'type' => 'JVBase\managers\SEO\render\Thing\Place\AdministrativeArea\City',
+ 'name' => 'St. Albert',
+ 'sameAs' => 'https://en.wikipedia.org/wiki/St._Albert,_Alberta' ],
+ [
+ 'id' => '#sherwoodpark',
+ 'type' => 'JVBase\managers\SEO\render\Thing\Place\AdministrativeArea\City',
+ 'name' => 'Sherwood Park',
+ 'sameAs' => 'https://en.wikipedia.org/wiki/Sherwood_Park' ],
+ [
+ 'id' => '#leduc',
+ 'type' => 'JVBase\managers\SEO\render\Thing\Place\AdministrativeArea\City',
+ 'name' => 'Leduc',
+ 'sameAs' => 'https://en.wikipedia.org/wiki/Leduc,_Alberta' ],
+ [
+ 'id' => '#sprucegrove',
+ 'type' => 'JVBase\managers\SEO\render\Thing\Place\AdministrativeArea\City',
+ 'name' => 'Spruce Grove',
+ 'sameAs' => 'https://en.wikipedia.org/wiki/Spruce_Grove' ],
+ [
+ 'id' => '#calgary',
+ 'type' => 'JVBase\managers\SEO\render\Thing\Place\AdministrativeArea\City',
+ 'name' => 'Calgary',
+ 'sameAs' => 'https://en.wikipedia.org/wiki/Calgary' ],
+ [
+ 'id' => '#reddeer',
+ 'type' => 'JVBase\managers\SEO\render\Thing\Place\AdministrativeArea\City',
+ 'name' => 'Red Deer',
+ 'sameAs' => 'https://en.wikipedia.org/wiki/Red_Deer,_Alberta' ],
+ [
+ 'id' => '#strathconacounty',
+ 'type' => 'JVBase\managers\SEO\render\Thing\Place\AdministrativeArea\City',
+ 'name' => 'Strathcona County',
+ 'sameAs' => 'https://en.wikipedia.org/wiki/Strathcona_County' ],
+ [
+ 'id' => '#grandprairie',
+ 'type' => 'JVBase\managers\SEO\render\Thing\Place\AdministrativeArea\City',
+ 'name' => 'Grande Prairie',
+ 'sameAs' => 'https://en.wikipedia.org/wiki/Grande_Prairie' ],
+ [
+ 'id' => '#lloydminster',
+ 'type' => 'JVBase\managers\SEO\render\Thing\Place\AdministrativeArea\City',
+ 'name' => 'Lloydminster',
+ 'sameAs' => 'https://en.wikipedia.org/wiki/Lloydminster' ],
+ [
+ 'id' => '#fortsaskatchewan',
+ 'type' => 'JVBase\managers\SEO\render\Thing\Place\AdministrativeArea\City',
+ 'name' => 'Fort Saskatchewan',
+ 'sameAs' => 'https://en.wikipedia.org/wiki/Fort_Saskatchewan' ],
+ [
+ 'id' => '#camrose',
+ 'type' => 'JVBase\managers\SEO\render\Thing\Place\AdministrativeArea\City',
+ 'name' => 'Camrose',
+ 'sameAs' => 'https://en.wikipedia.org/wiki/Camrose,_Alberta' ],
+ [
+ 'id' => '#stonyplain',
+ 'type' => 'JVBase\managers\SEO\render\Thing\Place\AdministrativeArea\City',
+ 'name' => 'Stony Plain',
+ 'sameAs' => 'https://en.wikipedia.org/wiki/Stony_Plain,_Alberta' ],
+ [
+ 'id' => '#coldlake',
+ 'type' => 'JVBase\managers\SEO\render\Thing\Place\AdministrativeArea\City',
+ 'name' => 'Cold Lake',
+ 'sameAs' => 'https://en.wikipedia.org/wiki/Cold_Lake,_Alberta' ],
+ [
+ 'id' => '#draytonvalley',
+ 'type' => 'JVBase\managers\SEO\render\Thing\Place\AdministrativeArea\City',
+ 'name' => 'Drayton Valley',
+ 'sameAs' => 'https://en.wikipedia.org/wiki/Drayton_Valley' ],
+ [
+ 'id' => '#ponoka',
+ 'type' => 'JVBase\managers\SEO\render\Thing\Place\AdministrativeArea\City',
+ 'name' => 'Ponoka',
+ 'sameAs' => 'https://en.wikipedia.org/wiki/Ponoka,_Alberta' ],
+ [
+ 'id' => '#vegreville',
+ 'type' => 'JVBase\managers\SEO\render\Thing\Place\AdministrativeArea\City',
+ 'name' => 'Vegreville',
+ 'sameAs' => 'https://en.wikipedia.org/wiki/Vegreville' ],
+ [
+ 'id' => '#fortmcmurray',
+ 'type' => 'JVBase\managers\SEO\render\Thing\Place\AdministrativeArea\City',
+ 'name' => 'Fort McMurray',
+ 'sameAs' => 'https://en.wikipedia.org/wiki/Fort_McMurray'],
+ [
+ 'id' => '#lethbridge',
+ 'type' => 'JVBase\managers\SEO\render\Thing\Place\AdministrativeArea\City',
+ 'name' => 'Lethbridge',
+ 'sameAs'=> 'https://en.wikipedia.org/wiki/Lethbridge' ],
+ [
+ 'id' => '#airdrie',
+ 'type' => 'JVBase\managers\SEO\render\Thing\Place\AdministrativeArea\City',
+ 'name' => 'Airdrie',
+ 'sameAs' => 'https://en.wikipedia.org/wiki/Airdrie,_Alberta'],
+ [
+ 'id' => '#medicinehat',
+ 'type' => 'JVBase\managers\SEO\render\Thing\Place\AdministrativeArea\City',
+ 'name' => 'Medicine Hat',
+ 'sameAs' =>'https://en.wikipedia.org/wiki/Medicine_Hat'],
+ [
+ 'id' => '#cochrane',
+ 'type' => 'JVBase\managers\SEO\render\Thing\Place\AdministrativeArea\City',
+ 'name' => 'Cochrane',
+ 'sameAs' => 'https://en.wikipedia.org/wiki/Cochrane,_Alberta' ],
+ [
+ 'id' => '#okotoks',
+ 'type' => 'JVBase\managers\SEO\render\Thing\Place\AdministrativeArea\City',
+ 'name' => 'Okotoks',
+ 'sameAs' => 'https://en.wikipedia.org/wiki/Okotoks'],
+ ],
- 'sameAs' => [
- ['url' => 'https://www.instagram.com/LegacyTattooRemoval'],
- [ 'url' => 'https://www.facebook.com/LegacyTattooRemoval'],
- [ 'url' => 'https://www.tiktok.com/@legacytattooremoval'],
- [ 'url' => 'https://bsky.app/profile/legacytattooremoval.ca']
- ],
+ // Hours - note the key names
+ 'openingHoursSpecification' => [
+ [
+ 'type' => 'JVBase\managers\SEO\render\Thing\Intangible\StructuredValue\OpeningHoursSpecification',
+ 'dayOfWeek' => ['Wednesday', 'Thursday', 'Friday', 'Saturday', 'Sunday'],
+ 'opens' => '10:00',
+ 'closes' => '18:00'
+ ]
- // Contact
- 'telephone' => '+1-825-925-7398',
- 'email' => 'info@legacytattooremoval.ca',
+ ],
- // Address - note the key names
- 'address' => [
- 'street' => '6551 111 St NW', // was 'street_address'
- 'city' => 'Edmonton', // was 'locality'
- 'province' => 'AB', // was 'region'
- 'postal_code' => 'T6H 4R5',
- 'country' => 'CA',
- ],
-
- // Geo - note the key names
- 'geo' => [
- 'lat' => '53.5035125', // was 'latitude'
- 'lng' => '-113.5188023', // was 'longitude'
- ],
-
- // Business details
- 'priceRange' => '$$',
- 'paymentAccepted' => ['Cash', 'Credit Card', 'Debit Card', 'E-Transfer'],
- 'currenciesAccepted' => ['CAD'],
- 'areaServed' => [
- ['name' => 'Edmonton'],
- ['name' => 'St. Albert'],
- ['name' => 'Sherwood Park'],
- ['name' => 'Leduc'],
- ['name' => 'Spruce Grove'],
- ['name' => 'Calgary'],
- ['name' => 'Red Deer'],
- ['name' => 'Strathcona County'],
- ['name' => 'Grande Prairie'],
- ['name' => 'Lloydminster'],
- ['name' => 'Fort Saskatchewan'],
- ['name' => 'Camrose'],
- ['name' => 'Stoney Plain'],
- ['name' => 'Cold Lake'],
- ['name' => 'Drayton Valley'],
- ['name' => 'Ponoka'],
- ['name' => 'Vegreville'],
- ['name' => 'Fort McMurry'],
- ['name' => 'Lethbridge'],
- ['name' => 'Airdrie'],
- ['name' => 'Medicine Hat'],
- ['name' => 'Cochrane'],
- ['name' => 'Okotoks'],
- ],
-
- // Hours - note the key names
- 'openingHours' => [
- 'wednesday' => ['opens' => '10:00', 'closes' => '18:00'],
- 'thursday' => ['opens' => '10:00', 'closes' => '18:00'],
- 'friday' => ['opens' => '10:00', 'closes' => '18:00'],
- 'saturday' => ['opens' => '10:00', 'closes' => '18:00'],
- 'sunday' => ['opens' => '10:00', 'closes' => '18:00'],
- ],
-
- // Services as offer catalog
- 'hasOfferCatalog' => [
- 'source' => 'manual',
- 'manual_items' => [
- [
- 'type' => 'Service',
+ // Services as offer catalog
+ 'hasOfferCatalog' => [
+ 'name' => 'Our Services',
+ 'items' => [
+ [
+ 'type' => 'JVBase\managers\SEO\render\Thing\Intangible\AggregateOffer',
+ 'id' => '#fading-for-cover-up-tattoo',
+ 'lowPrice' => '150',
+ 'highPrice' => '400',
+ 'priceCurrency' => 'CAD',
+ 'priceSpecification' => [
+ 'type' => 'JVBase\inc\managers\SEO\render\Thing\Intangible\StructuredValue\UnitPriceSpecification',
+ 'minPrice' => '150',
+ 'maxPrice' => '400',
+ 'priceCurrency' => 'CAD',
+ 'unitText' => 'treatment'
+ ],
+ 'itemOffered' => [
+ 'id' => 'service-fading-for-cover-up-tattoo',
+ 'type' => 'JVBase\managers\SEO\render\Thing\Intangible\Service',
'name' => 'Tattoo Fading for Cover Up Tattoos',
'description' => 'Precise laser fading to prepare your skin for a new tattoo. We work directly with your tattoo artist to target exactly what\'s in the way.',
- 'price' => '$150-$400/treatment'
+ ]
+ ],
+ [
+ 'id' => '#complete-tattoo-removal',
+ 'type' => 'JVBase\managers\SEO\render\Thing\Intangible\AggregateOffer',
+ 'lowPrice' => '150',
+ 'highPrice' => '400',
+ 'priceCurrency' => 'CAD',
+ 'priceSpecification' => [
+ 'type' => 'JVBase\inc\managers\SEO\render\Thing\Intangible\StructuredValue\UnitPriceSpecification',
+ 'minPrice' => '150',
+ 'maxPrice' => '400',
+ 'priceCurrency' => 'CAD',
+ 'unitText' => 'treatment'
],
- [
- 'type' => 'Service',
+ 'itemOffered' => [
+ 'id' => 'service-complete-tattoo-removal',
+ 'type' => 'JVBase\managers\SEO\render\Thing\Intangible\Service',
'name' => 'Complete Tattoo Removal',
'description' => 'Full removal of unwanted tattoos using PicoWay laser technology. Safe for all skin types with minimal scarring.',
- 'price' => '$150-$400/treatment'
],
- [
- 'type' => 'Service',
+ ],
+ [
+ 'id' => 'permanent-makeup-removal',
+ 'type' => 'JVBase\managers\SEO\render\Thing\Intangible\Offer',
+ 'price' => '200',
+ 'priceCurrency' => 'CAD',
+ 'priceSpecification' => [
+ 'type' => 'JVBase\inc\managers\SEO\render\Thing\Intangible\StructuredValue\UnitPriceSpecification',
+ 'price' => '200',
+ 'priceCurrency' => 'CAD',
+ 'unitText' => 'treatment'
+ ],
+ 'itemOffered' => [
+ 'id' => 'service-permanent-makeup-removal',
+ 'type' => 'JVBase\managers\SEO\render\Thing\Intangible\Service',
'name' => 'Permanent Makeup Removal',
'description' => 'Specialized removal of cosmetic ink including microbladed brows, freckles, and scalp micropigmentation (SMP).',
- 'price' => '$200'
],
- [
- 'type' => 'Service',
+ ],
+ [
+ 'id' => 'scalp-smp-removal',
+ 'type' => 'JVBase\managers\SEO\render\Thing\Intangible\AggregateOffer',
+ 'lowPrice' => '200',
+ 'highPrice' => '400',
+ 'priceCurrency' => 'CAD',
+ 'priceSpecification' => [
+ 'type' => 'JVBase\inc\managers\SEO\render\Thing\Intangible\StructuredValue\UnitPriceSpecification',
+ 'minPrice' => '200',
+ 'maxPrice' => '400',
+ 'priceCurrency' => 'CAD',
+ 'unitText' => 'treatment'
+ ],
+ 'itemOffered' => [
+ 'id' => 'service-scalp-smp-removal',
+ 'type' => 'JVBase\managers\SEO\render\Thing\Intangible\Service',
'name' => 'Scalp Micro Pigmentation Removal',
'description' => 'Specialized removal of scalp micro pigmentation (SMP).',
- 'price' => '$200 - $400/treatment'
],
- [
- 'type' => 'Service',
+ ],
+ [
+ 'id' => 'pro-bono-laser-tattoo-removal',
+ 'type' => 'JVBase\managers\SEO\render\Thing\Intangible\Offer',
+ 'price' => 'free',
+ 'itemOffered' => [
+ 'id' => 'service-pro-bono-laser-tattoo-removal',
+ 'type' => 'JVBase\managers\SEO\render\Thing\Intangible\Service',
'name' => 'Pro Bono Removal Services',
'description' => 'Free and sliding-scale tattoo removal for gang-related, hate symbols, domestic violence, and human trafficking tattoos.',
],
- ]
- ],
-
- // Rating - note the structure
- 'aggregateRating' => [
- 'value' => 5,
- 'count' => 103,
- 'best' => 5,
- 'worst' => 1,
- ],
+ ],
+ ]
],
- // Website settings (optional overrides)
- 'website' => [
+ 'aggregateRating' => [
+ 'ratingValue' => 5,
+ 'reviewCount' => 109,
+ 'bestRating' => 5,
+ 'worstRating' => 1,
+ ],
+ ]);
+}
+
+add_filter('altr_WebsiteSchemaDefault', 'altr_website_schema');
+function altr_website_schema(array $schema):array
+{
+ return array_merge(
+ $schema,
+ [
+ 'type' => 'JVBase\managers\SEO\render\Thing\CreativeWork\WebSite',
'name' => 'Legacy Tattoo Removal',
'description' => 'The laser techs who love tattoos: Edmonton\'s removal experts working with tattoo artists.',
'inLanguage' => 'en-CA',
'potentialAction' => [
[
- 'type' => 'scheduleAction',
+ 'type' => 'JVBase\inc\managers\SEO\render\Thing\Action\ScheduleAction',
+ 'id' => 'free-consult',
'name' => 'Book a Free Consultation',
- 'target' => '/book-consult/',
+ 'target' => '/free-consult/',
'description' => 'Schedule your free consultation today',
],
[
- 'type' => 'communicateAction',
+ 'id' => 'get-an-estimate',
+ 'type' => 'JVBase\inc\managers\SEO\render\Thing\Action\CommunicateAction',
'name' => 'Get an Estimate',
'target' => '/get-an-estimate/',
'description' => 'Get a rough estimate before you book.',
],
[
- 'type' => 'communicateAction',
+ 'id' => 'contact',
+ 'type' => 'JVBase\inc\managers\SEO\render\Thing\Action\CommunicateAction',
'name' => 'Contact Us',
'target' => '/contact/',
'description' => 'Get in touch with our team',
],
],
],
- ]);
-});
\ No newline at end of file
+ );
+}
+
+
--
Gitblit v1.10.0