From ba1e1ccf869b818f7a7a897264dfea05563a7796 Mon Sep 17 00:00:00 2001
From: Jake Vanderwerf <get@jakevanderwerf.ca>
Date: Sun, 07 Jun 2026 20:10:20 +0000
Subject: [PATCH] =Major overhaul of Integrations. Playing around with adding fields to post types through Registrar from an integrations' class file.
---
inc/registrar/config/seo/Meta.php | 69 ++++++++++++++++++++++++++++++++++
1 files changed, 68 insertions(+), 1 deletions(-)
diff --git a/inc/registrar/config/seo/Meta.php b/inc/registrar/config/seo/Meta.php
index 4ab4021..f7522e1 100644
--- a/inc/registrar/config/seo/Meta.php
+++ b/inc/registrar/config/seo/Meta.php
@@ -11,13 +11,23 @@
protected string $slug;
protected string $title;
+ protected array $titleConfig = [
+ 'maxLength' => 60,
+ 'alts' => []
+ ];
protected string $description;
+ protected array $descriptionConfig = [
+ 'maxLength' => 120,
+ 'alts' => []
+ ];
protected int $image;
protected int $twitterImage;
public function __construct(string $slug) {
$this->slug = $slug;
+
+ $this->titleConfig['alts'] = apply_filters(BASE.jvbNoBase($slug).'TitleAlts', []);
add_action('init', [$this, 'init']);
}
@@ -25,6 +35,7 @@
if (!function_exists('tsf')){
return;
}
+
if ($this->hasTitle()){
add_filter('the_seo_framework_title_from_generation', [$this, 'filterTitle'], 10, 2);
}
@@ -36,6 +47,27 @@
}
}
+ public function setAlts(array $alts, string $type = 'title'):void
+ {
+ foreach (array_values($alts) as $i => $alt) {
+ if (!is_string($alt)) {
+ error_log('[Registrar.config.Meta]:setAlts invalid string attempted: '.print_r($alt, true));
+ unset($alts[$i]);
+ }
+ }
+ switch ($type) {
+ case 'title':
+ $this->titleConfig['alts'] = $alts;
+ break;
+ case 'description':
+ $this->descriptionConfig['alts'] = $alts;
+ break;
+ default:
+ error_log('[Registrar.config.Meta]:setAlts invalid type attempted: '.print_r($type, true));
+
+ }
+ }
+
public function hasTitle():bool
{
return !empty($this->title);
@@ -53,15 +85,50 @@
return !empty($this->twitterImage);
}
+ public function testLength(int $ID, string $result, string $type):string
+ {
+ $maxLength = match($type) {
+ 'title' => $this->titleConfig['maxLength'],
+ 'description' => $this->descriptionConfig['alts'],
+ default => false
+ };
+ if (!$maxLength) {
+ error_log('[Registrar.config.Meta]:testLength invalid type: '.$type);
+ return $result;
+ }
+ $alts = match($type) {
+ 'title' => $this->titleConfig['alts'],
+ 'description' => $this->descriptionConfig['alts'],
+ };
+
+
+ usort($alts, fn($a, $b) => mb_strlen($b) <=> mb_strlen($a));
+
+
+ $meta = new \JVBase\meta\Meta($ID, Registrar::getInstance($this->slug)->getType());
+ foreach ($alts as $alt) {
+ $alt = Resolver::resolve($alt, $meta);
+ $r = $result.' '.trim($alt);
+ if (mb_strlen($r) <= $maxLength) {
+ return $r;
+ }
+ }
+ return rtrim($result, $maxLength - 3).'...';
+ }
+
public function filterTitle(string $title, ?array $args): string
{
+ error_log('Filtering title...');
if (jvbTSFDoIt($this->slug, $args)){
return $title;
}
$ID = jvbTSFGetID($args);
+
$meta = new \JVBase\meta\Meta($ID, Registrar::getInstance($this->slug)->getType());
- return Resolver::resolve($this->title, $meta);
+ $resolved = Resolver::resolve($this->title, $meta);
+ $resolved = $this->testLength($ID, $resolved, 'title');
+ return $resolved;
}
public function filterDescription(string $description, ?array $args): string
--
Gitblit v1.10.0