non-ACF sources * @a-order 2 */ public string $group; /** * @display seamless * @a-order 2 * @a-no-tab 1 */ public Field $field; /** * @a-type tab * @placement top * @label Sub Fields * @a-order 3 * @a-pro 1 */ public bool $repeaterFieldsTab; /** * @item \org\wplake\acf_views\AcfGroups\RepeaterField * @var RepeaterField[] * @label Sub fields * @instructions Setup sub fields here * @button_label Add Sub Field * @layout block * @collapsed local_acf_views_field__key * @a-no-tab 1 * @a-order 3 * @a-pro The field must be not required or have default value! */ public array $repeaterFields; private array $repeaterFieldsMeta; public function __construct(CreatorInterface $creator) { parent::__construct($creator); $this->repeaterFieldsMeta = []; } public function setSubFieldsMeta(array $repeaterFieldsMeta = [], bool $isForce = false): void { if ($repeaterFieldsMeta || $isForce) { $this->repeaterFieldsMeta = $repeaterFieldsMeta; return; } foreach ($this->repeaterFields as $repeaterField) { $fieldId = $repeaterField->getAcfFieldId(); $this->repeaterFieldsMeta[$fieldId] = new FieldMeta($fieldId); } } /** * @return FieldMeta[] */ public function getSubFieldsMeta(bool $isInitWhenEmpty = false): array { if (!$this->repeaterFieldsMeta && $isInitWhenEmpty) { $this->setSubFieldsMeta(); } return $this->repeaterFieldsMeta; } }