24 lines
1.8 KiB
PHP
24 lines
1.8 KiB
PHP
<?php
|
|
if (!defined('ABSPATH')) exit;
|
|
class WMF_Field_Select extends WMF_Field_Base {
|
|
public $type='select'; public $label='Auswahlliste'; public $icon='dashicons-list-view'; public $category='auswahl';
|
|
public function defaults() { return array_merge(parent::defaults(),array('options'=>array(array('label'=>'Option 1','value'=>'option_1')),'multiple'=>'0')); }
|
|
public function render($field,$value='') {
|
|
$multi=!empty($field['multiple'])&&$field['multiple']==='1';
|
|
$name='wmf_fields['.esc_attr($field['id']).']'.($multi?'[]':''); ?>
|
|
<div class="<?php echo esc_attr($this->wrapper_classes($field)); ?>"<?php echo $this->conditional_attrs($field); ?> data-field-id="<?php echo esc_attr($field['id']); ?>">
|
|
<?php $this->render_label($field); ?>
|
|
<select id="<?php echo esc_attr($field['id']); ?>" name="<?php echo $name; ?>" class="wmf-input wmf-select" <?php echo $multi?'multiple':''; ?> <?php echo(!empty($field['required'])&&$field['required']==='1')?'required':''; ?>>
|
|
<?php if(!$multi): ?><option value=""><?php echo esc_html($field['placeholder']?:'— Bitte wählen —'); ?></option><?php endif; ?>
|
|
<?php foreach($field['options']??array() as $opt):
|
|
$sel=is_array($value)?in_array($opt['value'],$value):$value===$opt['value']; ?>
|
|
<option value="<?php echo esc_attr($opt['value']); ?>" <?php echo $sel?'selected':''; ?>><?php echo esc_html($opt['label']); ?></option>
|
|
<?php endforeach; ?>
|
|
</select>
|
|
<?php $this->render_description($field); ?>
|
|
<span class="wmf-field-error-msg"></span>
|
|
</div><?php
|
|
}
|
|
public function sanitize($v,$f) { return is_array($v)?array_map('sanitize_text_field',$v):sanitize_text_field($v); }
|
|
}
|