getArgument('loop')) {
$this->createMultipleSearchBoxes($class->getArgument('loop'), $class);
} else {
$optionId = self::getOptionId($class);
$value = get_option($optionId)[$class->getId()];
$this->createSearchBox($class, null, $value);
}
}
/**
* @param array $loop
* @param SettingsFieldArguments $class
*
* @throws Exception
*/
public function createMultipleSearchBoxes(array $loop, SettingsFieldArguments $class): void
{
foreach ($loop as $id => $human) {
$value = null;
$newClass = clone $class;
$optionId = self::getOptionId($newClass);
$optionValue = get_option($optionId)[$newClass->getId()];
printf('
%s:
', $human);
if (array_key_exists($id, $optionValue)) {
$value = $optionValue[$id];
}
$newClass->setId($optionId . '_' . $id);
$this->createSearchBox($class, $id, $value ?? []);
}
}
/**
* Shipping method search callback.
*
* @param SettingsFieldArguments $class
* @param string|null $id
* @param $value
*/
public function createSearchBox(SettingsFieldArguments $class, ?string $id, $value): void
{
$args = $class->getArguments();
printf(
'";
}
/**
* @param SettingsFieldArguments $class
*
* @return string|null
*/
private static function getOptionId(SettingsFieldArguments $class): ?string
{
preg_match('/(\w+)\[/', $class->getName(), $matches);
if (!isset($matches[1])) {
return $class->getName();
}
return $matches[1];
}
}