Jake Vanderwerf
2 hours ago a17c578433ef543e220697813a9367a260df83e1
seo.php
@@ -1,134 +1,509 @@
<?php
add_filter('jvb_schema', function($schema) {
add_filter('ajv_OrganizationSchemaDefault', 'ajv_organization_schema');
function ajv_organization_schema(array $schema):array {
    return array_merge($schema, [
        'organization' => [
            'type' => 'LocalBusiness',
            'name' => 'JakeVan',
            'url' => get_home_url(),
            'description' => 'Artist. Designer. Developer. Brand Strategy. I’m a multidisciplinary Canadian artist and tech wizard in Edmonton, Alberta.',
            'slogan' => 'Let\'s bring your idea to life.',
            'logo' => get_theme_mod('custom_logo'),
            'foundingDate' => '2022-02-15',
        'id'    => '#jakevan',
        'type' => 'JVBase\managers\SEO\render\Thing\Organization\LocalBusiness\LocalBusiness',
        'name' => 'JakeVan',
        'url' => get_home_url(),
        'description' => 'Artist. Designer. Developer. Brand Strategy. I’m a multidisciplinary Canadian artist and tech wizard in Edmonton, Alberta.',
        'slogan' => 'Let\'s bring your idea to life.',
        'logo' => get_theme_mod('custom_logo'),
        'foundingDate' => '2022-02-15',
            'founders' => [
                ['name' => 'Jake Vanderwerf', 'url' => 'https://jakevan.ca'],
        'founder' => [
            [
                'id'=> 'jake-vanderwerf',
                'type' => 'JVBase\managers\SEO\render\Thing\Person\Person',
                'name' => 'Jake Vanderwerf',
                'url' => 'https://jakevan.ca'],
        ],
        'sameAs' => [
            'https://bsky.app/profile/jakevan.ca',
        ],
        // Contact
        'telephone' => '+1-825-823-9916',
        'email' => 'get@jakevan.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://bsky.app/profile/jakevan.ca']
            [
                'id'    => '#british-columbia',
                'type'  => 'JVBase\managers\SEO\render\Thing\Place\AdministrativeArea\State',
                'name' => 'British Columbia',
                'sameAs'    => 'https://en.wikipedia.org/wiki/British_Columbia'
            ],
            // Contact
            'telephone' => '+1-825-832-9916',
            'email' => 'get@jakevan.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',
            [
                'id'    => '#alberta',
                'type'  => 'JVBase\managers\SEO\render\Thing\Place\AdministrativeArea\State',
                'name' => 'Alberta',
                'sameAs'    => 'https://en.wikipedia.org/wiki/Alberta'
            ],
        ],
            // Geo - note the key names
            'geo' => [
                'lat' => '53.5035125',                      // was 'latitude'
                'lng' => '-113.5188023',                    // was 'longitude'
            ],
        // Hours - note the key names
        'openingHoursSpecification' => [
            [
                'type'  => 'JVBase\managers\SEO\render\Thing\Intangible\StructuredValue\OpeningHoursSpecification',
                'dayOfWeek' => ['Monday','Tuesday','Wednesday', 'Thursday', 'Friday', 'Saturday', 'Sunday'],
                'opens' => '10:00',
                'closes' => '17:00'
            ]
            // 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'],
            ],
        ],
            // Hours - note the key names
            'openingHours' => [
                'monday' => ['opens' => '9:00', 'closes' => '17:00'],
                'tuesday' => ['opens' => '9:00', 'closes' => '17:00'],
                'wednesday' => ['opens' => '9:00', 'closes' => '17:00'],
                'thursday' => ['opens' => '9:00', 'closes' => '17:00'],
                'friday' => ['opens' => '9:00', 'closes' => '17:00'],
                'saturday' => ['opens' => '9:00', 'closes' => '17:00'],
                'sunday' => ['opens' => '9:00', 'closes' => '17:00'],
            ],
            // Services as offer catalog
            'hasOfferCatalog' => [
                'source'    => 'manual',
                'manual_items' => [
                    [
                        'type'  => 'Product',
                        'name' => 'Sculpture',
                        'description' => 'Canadian, human made sculpture',
                    ],
                    [
                        'type'  => 'Product',
                        'name' => 'Kinetic Sculpture',
                        'description' => 'Canadian, human made sculpture that moves!',
                    ],
                    [
                        'type'  => 'Product',
                        'name' => 'Copper Jewellery',
                        'description' => 'Canadian, human made copper jewellery, inspired by nature.',
                    ],
                    [
                        'type' => 'Service',
        // Services as offer catalog
        'hasOfferCatalog' => [
            'name'  => 'Our Services',
            'items' => [
                [
                    'id'    => '#graphic-design',
                    '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-graphic-design',
                        'type' => 'JVBase\managers\SEO\render\Thing\Intangible\Service',
                        'name' => 'Graphic Design',
                        'description' => 'From logos to book covers and print media',
                    ],
                    [
                        'type' => 'Service',
                        'name' => 'Web Development',
                ],
                [
                    'id'    => '#website-design',
                    '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-website-design',
                        'type' => 'JVBase\managers\SEO\render\Thing\Intangible\Service',
                        'name' => 'Website Design',
                        'description' => 'Let\'s make your site look great and be functional',
                    ],
                ],
                [
                    'id'    => '#website-development',
                    '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-website-development',
                        'type' => 'JVBase\managers\SEO\render\Thing\Intangible\Service',
                        'name' => 'Website Development',
                        'description' => 'From custom website development to basic landing pages - I make a website for you that works while you sleep.',
                    ],
                    [
                        'type' => 'Service',
                ],
                [
                    'id'    => '#content-writing',
                    '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-content-writing',
                        'type' => 'JVBase\managers\SEO\render\Thing\Intangible\Service',
                        'name' => 'Content Writing',
                        'description' => 'Know what you want to say, but not how to say it? I can help!',
                    ],
                    [
                        'type' => 'Service',
                ],
                [
                    'id'    => '#brand-strategy',
                    '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-brand-strategy',
                        'type' => 'JVBase\managers\SEO\render\Thing\Intangible\Service',
                        'name' => 'Brand Strategy',
                        'description' => 'Whether you\'re getting started with a business plan, or wanting to take a step back to determine your best steps moving forward - I can help.',
                    ],
                ]
            ],
                ],
                [
                    'id'    => '#human-made-sculpture',
                    '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'    => '#product-human-made-sculpture',
                        'type' => 'JVBase\managers\SEO\render\Thing\Product\Product',
                        'name' => 'Sculpture',
                        'description' => 'Canadian, human made sculpture',
                    ],
                ],
                [
                    'id'    => '#human-made-kinetic-sculpture',
                    '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'    => '#product-human-made-kinetic-sculpture',
                        'type' => 'JVBase\managers\SEO\render\Thing\Product\Product',
                        'name' => 'Kinetic Sculpture',
                        'description' => 'Canadian, human made sculpture that moves!',
                    ],
                ],
                [
                    'id'    => '#human-made-copper-jewellery',
                    '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'    => '#product-human-made-copper-jewellery',
                        'type' => 'JVBase\managers\SEO\render\Thing\Product\Product',
                        'name' => 'Copper Jewellery',
                        'description' => 'Canadian, human made copper jewellery, inspired by nature.',
                    ],
                ],
            // Rating - note the structure
//            'aggregateRating' => [
//                'value' => 5,
//                'count' => 103,
//                'best' => 5,
//                'worst' => 1,
//            ],
            ]
        ],
        // Website settings (optional overrides)
        'website' => [
        'aggregateRating' => [
            'ratingValue' => 5,
            'reviewCount' => 1,
            'bestRating' => 5,
            'worstRating' => 1,
        ],
    ]);
}
add_filter('ajv_WebsiteSchemaDefault', 'ajv_website_schema');
function ajv_website_schema(array $schema):array
{
    return array_merge(
        $schema,
        [
            'type'  => 'JVBase\managers\SEO\render\Thing\CreativeWork\WebSite',
            'name' => 'JakeVan',
            'description' => 'Let\'s bring your idea to life.',
            'inLanguage' => 'en-CA',
            'potentialAction' => [
                [
                    'name'  => 'Search',
                    'type' => 'searchAction',
                    'target' => '/?s={query}',
                ],
                [
                    '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',
                ],
            ],
        ],
    ]);
});
    );
}
//
//add_filter('jvb_schema', function($schema) {
//    return array_merge($schema, [
//        'organization' => [
//            'type' => 'LocalBusiness',
//            'name' => 'JakeVan',
//            'url' => get_home_url(),
//            'description' => 'Artist. Designer. Developer. Brand Strategy. I’m a multidisciplinary Canadian artist and tech wizard in Edmonton, Alberta.',
//            'slogan' => 'Let\'s bring your idea to life.',
//            'logo' => get_theme_mod('custom_logo'),
//            'foundingDate' => '2022-02-15',
//
//            'founders' => [
//                ['name' => 'Jake Vanderwerf', 'url' => 'https://jakevan.ca'],
//            ],
//
//            'sameAs' => [
//                [ 'url' => 'https://bsky.app/profile/jakevan.ca']
//            ],
//
//            // Contact
//            'telephone' => '+1-825-832-9916',
//            'email' => 'get@jakevan.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'],
//            ],
//
//            // Hours - note the key names
//            'openingHours' => [
//                'monday' => ['opens' => '9:00', 'closes' => '17:00'],
//                'tuesday' => ['opens' => '9:00', 'closes' => '17:00'],
//                'wednesday' => ['opens' => '9:00', 'closes' => '17:00'],
//                'thursday' => ['opens' => '9:00', 'closes' => '17:00'],
//                'friday' => ['opens' => '9:00', 'closes' => '17:00'],
//                'saturday' => ['opens' => '9:00', 'closes' => '17:00'],
//                'sunday' => ['opens' => '9:00', 'closes' => '17:00'],
//            ],
//
//            // Services as offer catalog
//            'hasOfferCatalog' => [
//                'source'    => 'manual',
//                'manual_items' => [
//                    [
//                        'type'  => 'Product',
//                        'name' => 'Sculpture',
//                        'description' => 'Canadian, human made sculpture',
//                    ],
//                    [
//                        'type'  => 'Product',
//                        'name' => 'Kinetic Sculpture',
//                        'description' => 'Canadian, human made sculpture that moves!',
//                    ],
//                    [
//                        'type'  => 'Product',
//                        'name' => 'Copper Jewellery',
//                        'description' => 'Canadian, human made copper jewellery, inspired by nature.',
//                    ],
//                    [
//                        'type' => 'Service',
//                        'name' => 'Graphic Design',
//                        'description' => 'From logos to book covers and print media',
//                    ],
//                    [
//                        'type' => 'Service',
//                        'name' => 'Web Development',
//                        'description' => 'From custom website development to basic landing pages - I make a website for you that works while you sleep.',
//                    ],
//                    [
//                        'type' => 'Service',
//                        'name' => 'Content Writing',
//                        'description' => 'Know what you want to say, but not how to say it? I can help!',
//                    ],
//                    [
//                        'type' => 'Service',
//                        'name' => 'Brand Strategy',
//                        'description' => 'Whether you\'re getting started with a business plan, or wanting to take a step back to determine your best steps moving forward - I can help.',
//                    ],
//                ]
//            ],
//
//            // Rating - note the structure
////            'aggregateRating' => [
////                'value' => 5,
////                'count' => 103,
////                'best' => 5,
////                'worst' => 1,
////            ],
//        ],
//
//        // Website settings (optional overrides)
//        'website' => [
//            'name' => 'JakeVan',
//            'description' => 'Let\'s bring your idea to life.',
//            'inLanguage' => 'en-CA',
//            'potentialAction' => [
//                [
//                    'name'  => 'Search',
//                    'type' => 'searchAction',
//                    'target' => '/?s={query}',
//                ],
//                [
//                    'type' => 'communicateAction',
//                    'name' => 'Contact Us',
//                    'target' => '/contact/',
//                    'description' => 'Get in touch with our team',
//                ],
//            ],
//        ],
//    ]);
//});