From f4be611c51473359e6d41780f0313c446079e9d3 Mon Sep 17 00:00:00 2001
From: Jake Vanderwerf <get@jakevanderwerf.ca>
Date: Tue, 09 Jun 2026 15:19:24 +0000
Subject: [PATCH] =Switched the /base/options.php to the same pattern as Site.php: a class based approached rather than a filter. Updated Meta.php to play along with the defined fields from there in Meta::forOptions. Had to change openingHoursSpecificationsTrait.php to not use the translater functions __('text','textdomain') for now, as we load before init.
---
inc/meta/Meta.php | 44 ++++++++++++++++++++++++++++++--------------
1 files changed, 30 insertions(+), 14 deletions(-)
diff --git a/inc/meta/Meta.php b/inc/meta/Meta.php
index a6594a7..d870467 100644
--- a/inc/meta/Meta.php
+++ b/inc/meta/Meta.php
@@ -1,6 +1,7 @@
<?php
namespace JVBase\meta;
+use JVBase\base\Options;
use JVBase\registrar\Registrar;
use WP_Post;
use WP_Term;
@@ -17,9 +18,9 @@
*/
protected string $type;
/**
- * @var string the full slug, with BASE
+ * @var ?string the full slug, with BASE
*/
- protected string $slug;
+ protected ?string $slug;
protected string $contentType;
protected Item $item;
@@ -27,7 +28,7 @@
protected Validator $validator;
protected Sanitizer $sanitizer;
protected array $fields;
- protected WP_Post|WP_Term|WP_User|null $wpObject;
+ protected WP_Post|WP_Term|WP_User|false|null $wpObject;
protected int|string $ID;
protected MetaTypeManager $typeManager;
protected static array $instances = ['post' => [],'term' => [], 'user'=>[],'options'=>[]];
@@ -75,7 +76,7 @@
/**
* Create Meta instance for options
*/
- public static function forOptions(?string $baseKey = 'ajv'): self
+ public static function forOptions(?string $baseKey = BASE): self
{
if (array_key_exists($baseKey, self::$instances['options'])) {
return self::$instances['options'][$baseKey];
@@ -116,14 +117,21 @@
- $registrar = Registrar::getInstance($this->slug);
+ $registrar = !is_null($this->slug) ? Registrar::getInstance($this->slug) : false;
$fields = $registrar ? $registrar->getFields() : [];
+ if ($this->type == 'options') {
+ $options = Options::getInstance();
+ $fields = $options->getFields();
+ }
$meta = match($type) {
'post' => get_post_meta($id),
'term' => get_term_meta($id),
'user' => get_user_meta($id),
default => []
};
+ if (!$meta) {
+ $meta = [];
+ }
$meta = array_map(fn($value) => maybe_unserialize($value[0]), $meta);
foreach ($fields as $fieldName => $config) {
@@ -192,8 +200,15 @@
if (str_contains($name, ':')) {
return $this->getByPath($name);
}
-
- return $this->fields[$name]->get();
+ if (!array_key_exists($name, $this->fields)) {
+ error_log('[Meta]::get Attempted to get unregistered field: '.$name);
+ return '';
+ }
+ if (is_null($this->fields[$name])) {
+ error_log('[Meta]::get Field does not seem to be setup yet: '.$name);
+ return '';
+ }
+ return $this->fields[$name]->get()??'';
}
/**
@@ -312,12 +327,12 @@
}
break;
case 'term':
- $result = wp_update_term($this->ID, $this->slug, $defaults);
+ $termDefaults = array_map(fn($field) => $field->value, $defaults);
+ $result = wp_update_term($this->ID, $this->slug, $termDefaults);
break;
case 'user':
- $data = array_merge([
- 'ID' => $this->ID
- ], $defaults);
+ $userDefaults = array_map(fn($field) => $field->value, $defaults);
+ $data = array_merge(['ID' => $this->ID], $userDefaults);
$result = wp_update_user($data);
break;
}
@@ -343,9 +358,10 @@
error_log('Problem saving field: '.$field->name.' with value: '.print_r($field->value, true));
}
}
- if ($this->type === 'term' && Registrar::getInstance($this->slug)->hasFeature('is_content')) {
- update_term_meta($this->ID, BASE.'date_modified', date('Y-m-d H:i:s'));
- }
+ //Now handled directly from Registrar
+// if ($this->type === 'term' && Registrar::getInstance($this->slug)->hasFeature('is_content')) {
+// update_term_meta($this->ID, BASE.'date_modified', date('Y-m-d H:i:s'));
+// }
}
--
Gitblit v1.10.0