Jake Vanderwerf
2026-03-03 772462eeca3002a1d52508aeba485aab2b4742ad
inc/meta/Meta.php
@@ -1,6 +1,8 @@
<?php
namespace JVBase\meta;
use JVBase\registrar\Registrar;
if (!defined('ABSPATH')) {
   exit;
}
@@ -245,7 +247,7 @@
         return [];
      }
      return jvbGetFields($contentType ?? 'options', $objectType);
      return Registrar::getFieldsFor($contentType??'options');
   }
   // ─────────────────────────────────────────────────────────────
@@ -276,6 +278,11 @@
    */
   public function get(string $name): mixed
   {
      // Handle repeater subfield path
      if (str_contains($name, ':')) {
         return $this->getByPath($name);
      }
      // Check computed fields first
      if (isset($this->computed[$name])) {
         return ($this->computed[$name])($this);
@@ -301,6 +308,11 @@
    */
   public function set(string $name, mixed $value): self
   {
      // Handle repeater subfield path (e.g., "services:2:image")
      if (str_contains($name, ':')) {
         return $this->setByPath($name, $value);
      }
      $config = $this->item->getFieldConfig($name);
      if (!$config) {
@@ -442,6 +454,30 @@
      return new Repeater($this, $name);
   }
   protected function setByPath(string $path, mixed $value): self
   {
      $parts = explode(':', $path, 3);
      if (count($parts) !== 3) {
         return $this;
      }
      [$repeaterName, $rowIndex, $subField] = $parts;
      $this->repeater($repeaterName)->setField((int) $rowIndex, $subField, $value);
      return $this;
   }
   protected function getByPath(string $path): mixed
   {
      $parts = explode(':', $path, 3);
      if (count($parts) !== 3) {
         return null;
      }
      [$repeaterName, $rowIndex, $subField] = $parts;
      return $this->repeater($repeaterName)->field((int) $rowIndex, $subField);
   }
   // ─────────────────────────────────────────────────────────────
   // Utility Methods
   // ─────────────────────────────────────────────────────────────