Jake Vanderwerf
2026-03-08 c19264ac916707096fe294d996a1b7fb85206b34
inc/managers/SEO/SchemaBuilder.php
@@ -1,6 +1,8 @@
<?php
namespace JVBase\managers\SEO;
use JVBase\registrar\Registrar;
if (!defined('ABSPATH')) {
   exit;
}
@@ -47,7 +49,7 @@
   private array $metaFields = ['metaTitle', 'metaDescription', 'socialPreviewImage', 'twitterImage'];
   private array $defaultMetaValues = [
      'metaTitle'          => '{{post_title}} | {{site_name}}',
      'metaTitle'          => '{{post_title}}',
      'metaDescription'    => '{{post_excerpt}}',
      'socialPreviewImage' => '{{featured_image}}',
      'twitterImage'       => ''
@@ -243,9 +245,11 @@
   {
      $options = ['' => '-- Select Post Type --'];
      if (defined('JVB_CONTENT')) {
         foreach (JVB_CONTENT as $key => $config) {
            $options[jvbCheckBase($key)] = $config['plural'] ?? $config['singular'] ?? ucwords($key);
      $content = Registrar::getRegistered('post');
      if (!empty($content)){
         foreach ($content as $c) {
            $registrar = Registrar::getInstance($c);
            $options[jvbCheckBase($c)] = $registrar->getPlural();
         }
      }
@@ -259,9 +263,12 @@
   {
      $options = ['' => '-- Select Taxonomy --'];
      if (defined('JVB_TAXONOMY')) {
         foreach (JVB_TAXONOMY as $key => $config) {
            $options[jvbCheckBase($key)] = $config['plural'] ?? $config['singular'] ?? ucwords($key);
      $tax = Registrar::getRegistered('term');
      if (!empty($tax)){
         foreach ($tax as $c) {
            $registrar = Registrar::getInstance($c);
            $options[jvbCheckBase($c)] = $registrar->getPlural();
         }
      }
@@ -399,9 +406,9 @@
       * BEFORE/AFTER FIELDS
       **************************************************************/
      $this->field('about')
         ->type('text')
         ->type('reference')
         ->label('About')
         ->transformer('text');
         ->transformer('reference');
      $this->field('temporalCoverage')
         ->type('text')
@@ -1487,6 +1494,32 @@
            'answer'
         ]);
      $this->type('Place')
         ->label('Place')
         ->group('general')
         ->fields([
            'type',
            'name',
            'description',
            'url',
            'image',
            'geo',
            'address',
            'sameAs',
         ]);
      $this->type('City')
         ->label('City')
         ->group('general')
         ->extends('Place')
         ->addFields([
            'containedInPlace',
         ]);
      $this->field('containedInPlace')
         ->type('reference')
         ->label('Contained In')
         ->description('Parent place (province, country)')
         ->transformer('reference');
      /**************************************************************
       * ORGANIZATION & BUSINESS
       **************************************************************/