From 3baf3d2545ba6ece6b74a64c0def59bd0774cf54 Mon Sep 17 00:00:00 2001
From: Jake Vanderwerf <get@jakevanderwerf.ca>
Date: Wed, 10 Jun 2026 16:34:12 +0000
Subject: [PATCH] =Laid the groundwork for an improved DashboardManager.php setup. Have to put it aside so I can get the dang Northeh done though.
---
inc/managers/SEO/render/Traits/ThingSchema.php | 62 ++++++++++++++++++++++++++-----
1 files changed, 52 insertions(+), 10 deletions(-)
diff --git a/inc/managers/SEO/render/Traits/ThingSchema.php b/inc/managers/SEO/render/Traits/ThingSchema.php
index c58861f..d41ad97 100644
--- a/inc/managers/SEO/render/Traits/ThingSchema.php
+++ b/inc/managers/SEO/render/Traits/ThingSchema.php
@@ -5,9 +5,12 @@
exit;
}
+use JVBase\managers\Cache;
use JVBase\managers\SEO\render\DataType\Date;
use JVBase\managers\SEO\render\DataType\DateTime;
use JVBase\managers\SEO\render\DataType\Time;
+use JVBase\managers\SEO\render\Thing\CreativeWork\MediaObject\ImageObject;
+use JVBase\managers\SEO\render\Thing\Intangible\StructuredValue\PropertyValue;
use JVBase\managers\SEO\render\Thing\Thing;
use JVBase\managers\SEO\render\Traits\_Properties\additionalTypeTrait;
use JVBase\managers\SEO\render\Traits\_Properties\alternateNameTrait;
@@ -28,17 +31,18 @@
nameTrait, ownerTrait, potentialActionTrait, sameAsTrait, subjectOfTrait, urlTrait;
protected string $id;
-
+ protected bool $showID = true;
protected array $ignore = [
'mappedMethods',
'ignore',
- 'id'
+ 'id',
+ 'showID',
];
public function outputSchema():array
{
global $wp;
- $current = home_url( add_query_arg( $_GET, $wp->request ) );
- $id = (isset($this->id)) ? $this->id : $current.'#'.strtolower($this->getTypeName());
+ $current = get_home_url(null, add_query_arg( $_GET, $wp->request ) );
+ $id = (isset($this->id)) ? $this->id : $current.'/#'.strtolower($this->getTypeName());
$elements = array_map(
function ($value) {
@@ -61,8 +65,9 @@
} else if (is_a($value, Time::class)) {
$value = $value->getTime();
}else if (!is_string($value)) {
-
- error_log('Normal value? '.print_r($value, true));
+ if (JVB_TESTING && !is_numeric($value)) {
+// error_log('Normal value? '.print_r($value, true));
+ }
}
return $value;
@@ -72,9 +77,10 @@
}, ARRAY_FILTER_USE_KEY)
);
- return array_merge([
+ $id = $this->showID ? ['@id' => $id] : [];
+
+ return array_merge($id, [
'@type' => $this->getTypeName(),
- '@id' => $id,
], array_filter($elements));
}
@@ -114,8 +120,8 @@
public function setId(string $id):void
{
if (!filter_var($id, FILTER_VALIDATE_URL)) {
- error_log('[SEO]Could not set id: '.$id.'. Should be a valid URL');
- return;
+ global $wp;
+ $id = home_url( add_query_arg( $_GET, $wp->request ) ).'/#'.sanitize_title($id);
}
$this->id = $id;
}
@@ -126,4 +132,40 @@
unset($this->$property);
}
}
+
+ public static function createImageFromID(int $ID):ImageObject|false
+ {
+ $cache = Cache::for('schemaImage')->connect('post');
+ return $cache->remember(
+ $ID,
+ function() use($ID) {
+ $imagePost = get_post($ID);
+ if (!$imagePost) {
+ return false;
+ }
+ $image = wp_get_attachment_image_src($ID,'full');
+ if (empty($image)) {
+ return false;
+ }
+ $imageObject = new ImageObject();
+ $imageObject->setUploadDate($imagePost->post_date);
+ $imageObject->setWidth($image[1]);
+ $imageObject->setHeight($image[2]);
+ $imageObject->setContentUrl($image[0]);
+
+ $caption = wp_get_attachment_caption($ID);
+ if (!empty($caption)) {
+ $imageObject->setCaption($caption);
+ }
+
+ return $imageObject;
+ }
+ );
+
+ }
+
+ public function showID(bool $showIt = true):void
+ {
+ $this->showID = $showIt;
+ }
}
--
Gitblit v1.10.0