feat: Pods fields in Theme Builder bodies checked against the template's post types (E12)

Both forms Divi writes are recognized (ruling Q11): custom_meta_<key> and the
dialog form post_meta_key + select_meta_key. Choice fields get a note about the
stored value, relation fields name IDs (F4). Only templates the user may edit
are checked or named; others are counted (Q21 pattern). Warnings only, also in
the dry run of a live body. DynamicFields extracted from lit/divi-dynamic-sources.

Co-Authored-By: Claude Opus 5.5 (1M context) <noreply@anthropic.com>
This commit is contained in:
2026-09-27 21:02:53 +02:00
co-authored by Claude Opus 5.5
parent a31d4340f9
commit 6be2e65432
15 changed files with 778 additions and 86 deletions
@@ -95,6 +95,20 @@ final class VariableRef
return is_array($settings) ? $settings : [];
}
/** The option name of $value when it is exactly one content reference ("custom_meta_role"); null otherwise. */
public static function nameOf(string $value): ?string
{
try {
$payload = self::payloadOf($value);
} catch (InvalidArgumentException) {
return null;
}
$name = $payload['value']['name'] ?? null;
return ($payload['type'] ?? null) === 'content' && is_string($name) ? $name : null;
}
/** @param array<string, mixed>|stdClass $settings */
public static function serialize(string $type, string $name, array|stdClass $settings): string
{