| | |
| | | 'progress' => altr_progress(), |
| | | 'terms' => altr_terms(), |
| | | ]; |
| | | } |
| | | } |
| | | |
| | | /** |
| | | // Example in child plugin's jvb_content filter |
| | | 'tattoo' => [ |
| | | 'singular' => 'Tattoo', |
| | | 'plural' => 'Tattoos', |
| | | // ... other config |
| | | 'schema' => [ |
| | | 'type' => 'CreativeWork', |
| | | 'additional_types' => ['VisualArtwork'], |
| | | 'properties' => [ |
| | | 'artform' => ['taxonomy' => 'style', 'primary' => true], |
| | | 'artMedium' => 'ink_colors', // meta key |
| | | 'creator' => ['callback' => 'jvb_get_artist_schema'], |
| | | ], |
| | | ], |
| | | 'seo' => [ |
| | | 'title_template' => '{{name}} by {{artist}} | {{style}} Tattoo', |
| | | 'description_template' => '{{name}} - a {{style}} tattoo by {{artist}} at {{shop}}.', |
| | | 'variables' => [ |
| | | 'artist' => ['taxonomy' => 'artist', 'primary' => true], |
| | | 'shop' => ['taxonomy' => 'shop', 'primary' => true], |
| | | 'style' => ['taxonomy' => 'style', 'primary' => true], |
| | | ], |
| | | ], |
| | | ], |
| | | * |
| | | **/ |
| | | |
| | | /** |
| | | 'jvb-location' => [ |
| | | 'label' => 'Location', |
| | | 'slug' => 'location', |
| | | 'schema' => [ |
| | | 'type' => 'LocalBusiness', |
| | | 'subtype' => 'TattooParlor', // Or BeautySalon, Restaurant, etc |
| | | 'mappings' => [ |
| | | // Meta field => Schema property (or array of properties) |
| | | 'location' => ['address', 'geo'], // Maps to both address AND geo |
| | | 'email' => 'email', |
| | | 'phone' => 'telephone', |
| | | 'image' => 'image', // Featured image |
| | | 'logo' => 'logo', // Separate logo field |
| | | 'links' => 'sameAs', // Social media links |
| | | 'hours' => 'openingHoursSpecification', // Opening hours |
| | | 'services' => 'hasOfferCatalog' // Service list |
| | | ], |
| | | 'overrides' => [ |
| | | 'priceRange' => '$$-$$$', |
| | | 'paymentAccepted' => 'Cash, Credit Card, Square', |
| | | 'currenciesAccepted' => 'CAD, USD' |
| | | ] |
| | | ] |
| | | ], |
| | | |
| | | 'jvb-artist' => [ |
| | | 'label' => 'Artist', |
| | | 'slug' => 'artist', |
| | | 'schema' => [ |
| | | 'type' => 'Person', |
| | | 'mappings' => [ |
| | | 'email' => 'email', |
| | | 'phone' => 'telephone', |
| | | 'featured_image' => 'image', |
| | | 'bio' => 'description', |
| | | 'links' => 'sameAs', |
| | | 'specialty' => 'jobTitle' |
| | | ] |
| | | ] |
| | | ], |
| | | |
| | | 'jvb-artwork' => [ |
| | | 'label' => 'Artwork', |
| | | 'slug' => 'artwork', |
| | | 'schema' => [ |
| | | 'type' => 'CreativeWork', |
| | | 'mappings' => [ |
| | | 'featured_image' => 'image', |
| | | 'artist_id' => 'creator', // Would need special handling for Person ref |
| | | 'created_date' => 'dateCreated' |
| | | ] |
| | | ] |
| | | ] |
| | | **/ |