From 56a9a1ccf764ff7a6af8f8a2292cb07443cb4aa7 Mon Sep 17 00:00:00 2001
From: Jake Vanderwerf <get@jakevanderwerf.ca>
Date: Thu, 28 May 2026 18:19:57 +0000
Subject: [PATCH] =New Gitbit setpu
---
inc/managers/SEO/render/SchemaOutput.php | 176 +++++++++++++++++++++++++++++++++-------------------------
1 files changed, 101 insertions(+), 75 deletions(-)
diff --git a/inc/managers/SEO/render/SchemaOutput.php b/inc/managers/SEO/render/SchemaOutput.php
index 909e6bb..31b6859 100644
--- a/inc/managers/SEO/render/SchemaOutput.php
+++ b/inc/managers/SEO/render/SchemaOutput.php
@@ -1,13 +1,11 @@
<?php
namespace JVBase\managers\SEO\render;
+use JVBase\inc\managers\SEO\render\Thing\Intangible\ItemList\OfferCatalog;
use JVBase\managers\Cache;
use JVBase\managers\SEO\BreadcrumbManager;
-use JVBase\managers\SEO\render\Thing\CreativeWork\WebSite;
-use JVBase\managers\SEO\render\Thing\Intangible\OfferCatalog;
use JVBase\managers\SEO\render\Thing\Intangible\Service;
use JVBase\managers\SEO\render\Thing\Organization\LocalBusiness\LocalBusiness;
-use JVBase\meta\Meta;
use JVBase\registrar\config\seo\Resolver;
use JVBase\registrar\Registrar;
@@ -25,8 +23,9 @@
{
$schema = [];
- $schema[] = $this->buildWebsiteSchema(false);
+ $registrar = false;
if (is_front_page()) {
+ $schema[] = $this->buildWebsiteSchema(true);
$test = $this->buildOrganizationSchema();
if (!empty($test)) {
$schema[] = $test;
@@ -35,7 +34,7 @@
if (is_singular($this->types)) {
$type = get_post_type();
$registrar = Registrar::getInstance($type);
- if ($registrar && !empty($registrar->getConfig('seo')['schema']??[])) {
+ if ($registrar) {
$seo = $registrar->getSEO();
$schema[] = $seo->schema()->outputSingularSchema();
}
@@ -45,7 +44,7 @@
$type = $type->name;
$registrar = Registrar::getInstance($type);
- if ($registrar && !empty($registrar->getConfig('seo')['schema']??[])) {
+ if ($registrar) {
$seo = $registrar->getSEO();
$schema[] =$seo->schema()->outputArchiveSchema();
}
@@ -53,7 +52,7 @@
$type = get_queried_object();
$type = jvbNoBase($type->taxonomy);
$registrar = Registrar::getInstance($type);
- if ($registrar && !empty($registrar->getConfig('seo')['schema']??[])) {
+ if ($registrar ) {
$seo = $registrar->getSEO();
error_log('SEO: '.print_r($seo->schema(), true));
$schema[] = $seo->schema()->outputArchiveSchema();
@@ -63,13 +62,20 @@
return intval(get_option(BASE.$item.'_archive', false));
},Registrar::getFeatured('is_content', 'term'))));
- if (is_page($isContent)){
+ if (!empty($isContent) && is_page($isContent)){
$type = get_post_meta(get_the_id(), BASE.'for_type', true);
- error_log('Type: '.print_r($type, true));
- $registrar = Registrar::getInstance($type);
- if ($registrar) {
- $schema[] = $registrar->getSEO()->schema()->outputContentTaxArchiveSchema();
+// error_log('Type: '.print_r($type, true));
+ if (!empty($type)) {
+ $registrar = Registrar::getInstance($type);
+ if ($registrar) {
+ $schema[] = $registrar->getSEO()->schema()->outputContentTaxArchiveSchema();
+ }
}
+
+ }
+
+ if ($registrar && !empty($registrar->getSEO()->schema()->extra())) {
+ $schema = array_merge($schema, $registrar->getSEO()->schema()->extra());
}
@@ -80,24 +86,28 @@
}
if (!empty($schema)) {
- $website = JVB()->schemaHelper()::schema('website');
- if (!empty($website)) {
- if (JVB_TESTING) {
- Cache::for('websiteSchema')->flush();
- }
- $website = Cache::for('websiteSchema')->remember(
- 'schema',
- function () {
- return $this->websiteSchema();
+ if (!is_front_page()) {
+ $website = JVB()->schemaHelper()::schema('website');
+ if (!empty($website)) {
+ if (JVB_TESTING) {
+ Cache::for('websiteSchema')->flush();
}
- );
- array_unshift($schema, $website);
+ $website = Cache::for('websiteSchema')->remember(
+ 'schema',
+ function () {
+ return $this->websiteSchema();
+ }
+ );
+ array_unshift($schema, $website);
+ }
}
+
$schema = [
'@context' => 'https://schema.org',
'@graph' => $schema
];
}
+
return $schema;
}
@@ -113,8 +123,8 @@
if (!$website->getName() || empty($website->getName())){
$website->setName(get_bloginfo('name'));
}
- if(!$website->getCreator() || empty($website->getCreator())) {
- $website->setCreator($this->getCreator());
+ if(!$website->getCreator() || empty($website->getCreator(true))) {
+ $website->setCreator($this->getCreator(true));
}
return $website->outputSchema();
}
@@ -125,9 +135,17 @@
if (empty($schema)) {
return;
}
+// $encoded = wp_json_encode($schema, JSON_UNESCAPED_SLASHES | JSON_PRETTY_PRINT);
+// $encoded = wp_json_encode($schema, JSON_UNESCAPED_SLASHES | JSON_PRETTY_PRINT, 1024);
+ $encoded = wp_json_encode($schema, JSON_UNESCAPED_SLASHES, 512);
+ if ($encoded === false) {
+ error_log('wp_json_encode failed: ' . json_last_error_msg());
+ return;
+ }
echo "\n<!-- SEO Schema by JakeVan -->\n";
echo '<script type="application/ld+json">' . "\n";
- echo wp_json_encode($schema, JSON_UNESCAPED_SLASHES | JSON_PRETTY_PRINT);
+
+ echo $encoded;
echo "\n" . '</script>' . "\n";
echo "\n" . '<!-- / SEO Schema by JakeVan -->'."\n";
}
@@ -185,7 +203,6 @@
return Cache::for('websiteSchema')->remember(
'full',
function () use ($storedWebsite) {
- error_log('StoredWebsite: '.print_r($storedWebsite, true));
$website = JVB()->schemaHelper()::classFromConfig($storedWebsite);
if (!$website->getName() || empty($website->getName())) {
$website->setName(get_bloginfo('name'));
@@ -217,71 +234,78 @@
}
- public function getCreator(bool $reference = false):LocalBusiness
+ public function getCreator(bool $reference = false, bool $jakeVan = false):LocalBusiness
{
if (JVB_TESTING){
Cache::for('JakeVanCreator')->flush();
}
- if ($reference) {
+ if ($reference && $jakeVan) {
return Cache::for('JakeVanCreator')->remember(
'reference',
function () {
$creator = new LocalBusiness();
+ $creator->setId('jakevan');
$creator->setName('JakeVan');
- $creator->setAlternateName('Jake Vanderwerf');
$creator->setUrl('https://jakevan.ca/');
$creator->setDescription('Let\'s bring your idea to life.');
return $creator;
}
);
}
+ if ($jakeVan) {
+ return Cache::for('JakeVanCreator')->remember(
+ 'full',
+ function () {
+ $creator = new LocalBusiness();
+ $creator->setName('JakeVan');
+ $creator->setId('https://jakevan.ca/#localbusiness');
+ $creator->setAlternateName(['Jake Vanderwerf', 'Rooted Romantic', 'Jacob Vanderwerf']);
+ $creator->setUrl('https://jakevan.ca');
+ $creator->setSameAs([
+ 'https://bsky.app/profile/jakevan.ca',
+ ]);
+ $creator->setAreaServed(['Edmonton, Alberta', 'Alberta', 'Canada']);
+ $offers = new OfferCatalog();
+ $offers->setName('Services');
+ $offers->setUrl('https://jakevan.ca/services');
- return Cache::for('JakeVanCreator')->remember(
- 'full',
- function () {
- $creator = new LocalBusiness();
- $creator->setName('JakeVan');
- $creator->setId('https://jakevan.ca/#localbusiness');
- $creator->setAlternateName(['Jake Vanderwerf', 'Rooted Romantic', 'Jacob Vanderwerf']);
- $creator->setUrl('https://jakevan.ca');
- $creator->setSameAs([
- 'https://bsky.app/profile/jakevan.ca',
- ]);
- $creator->setAreaServed(['Edmonton, Alberta', 'Alberta', 'Canada']);
- $offers = new OfferCatalog();
- $offers->setName('Services');
- $offers->setUrl('https://jakevan.ca/services');
+ $graphicDesign = new Service();
+ $graphicDesign->setName('Graphic Design');
+ $graphicDesign->setUrl('https://jakevan.ca/services/design/');
+ $graphicDesign->setDescription('From print to digital design.');
+ $websiteDesign = new Service();
+ $websiteDesign->setName('Development');
+ $websiteDesign->setUrl('https://jakevan.ca/services/development/');
+ $websiteDesign->setDescription('From basic websites to custom functionality.');
+ $strategy = new Service();
+ $strategy->setName('Strategy');
+ $strategy->setUrl('https://jakevan.ca/services/strategy/');
+ $strategy->setDescription('From developing your business plan to SEO.');
+ $art = new Service();
+ $art->setName('Art');
+ $art->setUrl('https://jakevan.ca/services/art/');
+ $art->setDescription('From unique, custom, handmade pieces to small-scale wholesale.');
- $graphicDesign = new Service();
- $graphicDesign->setName('Graphic Design');
- $graphicDesign->setUrl('https://jakevan.ca/services/design/');
- $graphicDesign->setDescription('From print to digital design.');
- $websiteDesign = new Service();
- $websiteDesign->setName('Development');
- $websiteDesign->setUrl('https://jakevan.ca/services/development/');
- $websiteDesign->setDescription('From basic websites to custom functionality.');
- $strategy = new Service();
- $strategy->setName('Strategy');
- $strategy->setUrl('https://jakevan.ca/services/strategy/');
- $strategy->setDescription('From developing your business plan to SEO.');
- $art = new Service();
- $art->setName('Art');
- $art->setUrl('https://jakevan.ca/services/art/');
- $art->setDescription('From unique, custom, handmade pieces to small-scale wholesale.');
-
- $offers->setItemListElement([
- $graphicDesign,
- $websiteDesign,
- $strategy,
- $art
- ]);
+ $offers->setItemListElement([
+ $graphicDesign,
+ $websiteDesign,
+ $strategy,
+ $art
+ ]);
- $creator->setHasOfferCatalog($offers);
- return $creator;
- }
- );
+ $creator->setHasOfferCatalog($offers);
+ return $creator;
+ }
+ );
+ }
+ if ($reference) {
+ return $this->getOptionSchemaReference('organization');
+ }
+ $config = JVB()->schemaHelper()::schema('organization');
+
+ return JVB()->schemaHelper()::classFromConfig($config);
}
public function getOptionSchemaReference(string $option):mixed
@@ -294,8 +318,8 @@
error_log('Attempted to get schema reference for: '.$option.', but it does not exist');
return null;
}
- $action = BASE.ucfirst($option).'Schema';
- $stored = JVB()->schemaHelper()::reference($action);
+
+ $stored = JVB()->schemaHelper()::reference($option);
if (empty($stored)){
error_log('Attempted to get schema reference for: '.$option.', but defaults not set.');
@@ -308,7 +332,7 @@
}
$class = new $type();
unset($stored['type']);
- $minimal = apply_filters($action.'Reference', ['name', 'url', 'sameAs', 'logo']);
+ $minimal = apply_filters(BASE.'OrganizationReference', ['name', 'url', 'sameAs', 'logo']);
foreach ($minimal as $property) {
$method = 'set'.ucfirst($property);
@@ -316,6 +340,7 @@
if (!$value) {continue;}
if (str_contains($value, '{{')) {
+ $meta = null;
$value = Resolver::resolve($property, $value);
}
$class->$method($value);
@@ -326,6 +351,7 @@
public function buildOrganizationSchema():array
{
$config = JVB()->schemaHelper()::schema('organization');
+
$class = JVB()->schemaHelper()::classFromConfig($config);
return ($class)? $class->outputSchema() : [];
}
--
Gitblit v1.10.0