<?php
|
// /content/setup.php
|
|
/**
|
* JVB_CONTENT: Base post type definitions
|
* Structure: [ 'slug' => [$options], ]
|
* Note: slug is prepended with BASE in registration
|
* $options includes:
|
* - any $args from register_post_type
|
* - single and plural labels (string)
|
* - hide_single = (bool) if true, only show posts on author page, not on is_singular() view
|
* - show_feed = (bool) if true, becomes one of the content types shown in feed block
|
* - show_directory= (bool) if true, creates an alphabetical list directory page
|
* - karma = (bool) if true, sets up upvotes/downvotes system
|
* - favouritable = (bool)
|
* - responses = (bool) if true, sets up comments and replies
|
* - is_calendar = (bool) if true, sets up default calendar functionality
|
* - single_image = (bool) if true, and dashboard is setup, each image becomes its own post
|
* - upload_title = (string)),
|
* - rewrites = (array) key = associated taxonomy; value = what to append to rewrite base
|
* - description = (array) strings for login description of type
|
* -dash_title = (string) customize the title for custom dashboard
|
* - dash_description = (string) customize the description for custom dashboard
|
* - directory_extra = (array) of BASEless slugs of taxonomies to link in directory
|
* - sections = (array) 'slug' => $options, where options include ['label' => $label, 'icon' => $iconSlug]; used to split large groups of fields into tabs on the edit page
|
* - fields = (array) of fields, as defined in Meta.php, as well as additional options:
|
* - 'quickEdit' => (bool) whether this field can be edited in the custom administrator dashboard (best for text fields)
|
* - 'section' => (string) the slug of the section, as defined above
|
*/
|
|
|
require(AJV_DIR . '/content/faq.php');
|
require(AJV_DIR . '/content/progress.php');
|
require(AJV_DIR . '/content/terms.php');
|
|
//add_filter('jvb_content', 'altr_content');
|
function altr_content($content):array
|
{
|
return [
|
'faq' => altr_faq(),
|
'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'
|
]
|
]
|
]
|
**/
|