ファンクション
wcexics_get_singleselect_items_form( Aivec\Welcart\Extensions\ItemComboSet\Types\ComboGroup $group, Aivec\Welcart\Extensions\ItemComboSet\Types\GroupItem[] $items, array $selection )
パラメータ パラメータ
- $group
(ComboGroup) (必須)
- $items
(GroupItem[]) (必須)
- $selection
(配列) (必須)
ファイル: src/template-functions.php
function wcexics_get_singleselect_items_form($group, $items, $selection) {
$selected = null;
$hookargs = [
'sessionSelections' => $selection,
'groupItems' => $items,
'group' => $group,
];
$targetcombosetid = isset($_SESSION['wcexicsComboSetId']) ? (int)$_SESSION['wcexicsComboSetId'] : null;
$gname = "wcexicsGroups[{$group->getComboSetId()}][{$group->getId()}][]";
ob_start();
?>
<select
class="combo-set-group-item"
id="wcexics_group_<?php echo esc_attr($group->getId()); ?>"
name="<?php echo esc_attr($gname); ?>"
data-group-id="<?php echo esc_attr($group->getId()); ?>"
>
<?php
if ($group->getOptional() === true) {
?>
<option value="-1"><?php _e('-- Select --', 'usces'); ?></option>
<?php
}
$index = 0;
foreach ($items as $item) {
$id = 'combo-set-group-item_' . $item->getId();
$isselected = false;
if (!empty($selection)) {
$isselected = in_array($item->getId(), $selection, true);
} else {
$isselected = $index === 0 && $group->getOptional() === false;
}
if ($isselected === true) {
$selected = $item;
}
?>
<option
id="<?php echo esc_attr($id); ?>"
value="<?php echo esc_attr($item->getId()); ?>"
data-item-id="<?php echo $item->getId(); ?>"
data-group-id="<?php echo esc_attr($item->getGroupId()); ?>"
<?php echo $isselected ? ' selected' : ''; ?>
>
<?php echo wcexics_get_group_item_label($item); ?>
</option>
<?php
$index++;
}
?>
</select>
<?php
foreach ($items as $item) {
?>
<div
id="group-item-details_<?php echo $item->getId(); ?>"
class="combo-set-form__group-item-details"
<?php echo $selected !== null && $selected->getId() === $item->getId() ? '' : ' style="display: none"'; ?>
>
<?php
$skucode = urlencode($item->getSkuData()['code']);
$errors = usces_singleitem_error_message($item->getPostId(), $skucode, 'return');
if (!empty($errors) && $group->getComboSetId() === $targetcombosetid) {
$ehtml = '<div class="wcexics_errors">';
$ehtml .= $errors;
$ehtml .= '</div>';
$ehtml = apply_filters(
'wcexics_filter_singleselect_group_item_error_html',
$ehtml,
array_merge(
$hookargs,
[
'errors' => $errors,
'item' => $item,
'selected' => $selected,
]
)
);
echo $ehtml;
}
wcexics_display_item_options($item);
?>
</div>
<?php
}
$html = (string)ob_get_clean();
$html = apply_filters('wcexics_filter_singleselect_items_form_html', $html, $hookargs);
return $html;
}