Jake Vanderwerf
4 hours ago 57d34239ee9ddb0bafe7b451edd766c2089fc9d7
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',
                ],
            ],
        ],
    ]);
});
    );
}