*/ private array $variationData; /** * @var \WP_Post */ private \WP_Post $variation; /** * @param MetaFieldModel $metaField * @param int $loop * @param array $variationData * @param \WP_Post $variation */ public function __construct(MetaFieldModel $metaField, int $loop, array $variationData, \WP_Post $variation) { $this->metaField = $metaField; $this->loop = $loop; $this->variationData = $variationData; $this->variation = $variation; } /** * @return AbstractField|null */ public function generate(): ?AbstractField { $className = 'ACPT_Lite\\Core\\Generators\\Meta\\Fields\\'. $this->metaField->getType().'Field'; $value = $this->variationData[$this->metaField->getDbName()][0] ?? null; if (!empty($value) && is_serialized($value)) { $value = Serializer::unserialize($value); } if (class_exists($className)) { /** @var AbstractField $instance */ $instance = new $className($this->metaField, MetaTypes::CUSTOM_POST_TYPE, $this->variation->ID); $instance->setWooCommerceLoopIndex($this->loop); if (!empty($value)) { $instance->setValue($value); } return $instance; } return null; } }