From c19264ac916707096fe294d996a1b7fb85206b34 Mon Sep 17 00:00:00 2001
From: Jake Vanderwerf <get@jakevanderwerf.ca>
Date: Sun, 08 Mar 2026 19:55:31 +0000
Subject: [PATCH] =Furthering along the complete refactor. Added some basic setup for is_content taxonomies, including a page for an archive of the terms.
---
inc/managers/SEO/SchemaReferenceBuilder.php | 82 +++++++++++------------------------------
1 files changed, 22 insertions(+), 60 deletions(-)
diff --git a/inc/managers/SEO/SchemaReferenceBuilder.php b/inc/managers/SEO/SchemaReferenceBuilder.php
index 6627899..ed362fc 100644
--- a/inc/managers/SEO/SchemaReferenceBuilder.php
+++ b/inc/managers/SEO/SchemaReferenceBuilder.php
@@ -2,6 +2,7 @@
namespace JVBase\managers\SEO;
use JVBase\meta\Meta;
+use JVBase\registrar\Registrar;
if (!defined('ABSPATH')) {
exit;
@@ -44,8 +45,11 @@
}
// Get config for templates and schema type
- $config = self::getConfigFor($objectType, $objectId);
- $schemaConfig = $config['seo']['schema'] ?? [];
+ $schemaConfig = [];
+ $registrar = Registrar::getInstance($objectType);
+ if ($registrar) {
+ $schemaConfig = $registrar->getConfig('seo')['schema']??[];
+ }
// Determine schema type
if ($schemaType === null) {
@@ -63,9 +67,7 @@
}
// Create resolver for template resolution
- $resolver = $objectType === 'post' ? new TemplateResolver($objectId,'post') :
- ($objectType === 'term' ? new TemplateResolver($objectId,'term') :
- ($objectType === 'user' ? new TemplateResolver($objectId, 'user') : null));
+ $resolver = new TemplateResolver($objectId, $objectType)??null;
// Build reference based on schema type
switch ($schemaType) {
@@ -134,38 +136,6 @@
};
}
- /**
- * Get config for an object
- */
- private static function getConfigFor(string $objectType, int $objectId): ?array
- {
- switch ($objectType) {
- case 'post':
- $postType = get_post_type($objectId);
- $typeKey = str_replace(BASE, '', $postType);
- return defined('JVB_CONTENT') && isset(JVB_CONTENT[$typeKey])
- ? JVB_CONTENT[$typeKey]
- : null;
-
- case 'term':
- $term = get_term($objectId);
- if (!$term || is_wp_error($term)) {
- return null;
- }
- $typeKey = str_replace(BASE, '', $term->taxonomy);
- return defined('JVB_TAXONOMY') && isset(JVB_TAXONOMY[$typeKey])
- ? JVB_TAXONOMY[$typeKey]
- : null;
-
- case 'user':
- $role = jvbUserRole($objectId);
- return defined('JVB_USER') && isset(JVB_USER[$role])
- ? JVB_USER[$role]
- : null;
- }
-
- return null;
- }
/**
* Build just an @id reference (most minimal)
@@ -402,39 +372,31 @@
*/
private static function inferSchemaType(string $objectType, int $objectId): string
{
+ $default = 'Thing';
+ $registrar = false;
if ($objectType === 'post') {
$postType = get_post_type($objectId);
- $typeKey = str_replace(BASE, '', $postType);
-
- if (defined('JVB_CONTENT') && isset(JVB_CONTENT[$typeKey])) {
- $config = JVB_CONTENT[$typeKey];
- return $config['seo']['schema']['type'] ?? 'CreativeWork';
- }
-
- return 'CreativeWork';
- }
-
- if ($objectType === 'term') {
+ $registrar = Registrar::getInstance($postType));
+ $default = 'CreativeWork';
+ } else if ($objectType === 'term') {
$term = get_term($objectId);
if (!$term || is_wp_error($term)) {
return 'DefinedTerm';
}
- $taxonomyKey = str_replace(BASE, '', $term->taxonomy);
-
- if (defined('JVB_TAXONOMY') && isset(JVB_TAXONOMY[$taxonomyKey])) {
- $config = JVB_TAXONOMY[$taxonomyKey];
- return $config['seo']['schema']['type'] ?? 'DefinedTerm';
- }
-
- return 'DefinedTerm';
- }
-
- if ($objectType === 'user') {
+ $registrar = Registrar::getInstance($term->taxonomy));
+ $default = 'DefinedTerm';
+ } elseif ($objectType === 'user') {
return 'Person';
}
- return 'Thing';
+ $type = false;
+
+ if ($registrar) {
+ $type = $registrar->getConfig('seo')['schema']['type'];
+ }
+
+ return ($type && !empty($type)) ? $type : $default;
}
/**
--
Gitblit v1.10.0