name = 'select'; $this->label = 'Select'; $this->category = 'choice'; } public function render( $field, $value = '', $name = null ) { $name = $name ?: "metaforge[{$field['name']}]"; $appearance = $field['appearance'] ?? 'select'; // Backward compatibility for the old 'multiple' toggle if ( isset( $field['multiple'] ) && empty( $field['appearance'] ) ) { $appearance = ! empty( $field['multiple'] ) ? 'multi_select' : 'select'; } $is_multiple = in_array( $appearance, array( 'checkbox', 'multi_select' ) ); $name_attr = $is_multiple ? $name . '[]' : $name; $val_array = is_array( $value ) ? $value : (array) $value; echo '
'; echo ''; echo '
'; if ( $appearance === 'checkbox' || $appearance === 'radio' ) { $list_class = $appearance === 'checkbox' ? 'mfe-choice-list mfe-checkbox-list' : 'mfe-choice-list mfe-radio-list'; echo '
'; $type = $appearance === 'checkbox' ? 'checkbox' : 'radio'; foreach ( $field['options'] as $key => $label ) { $is_selected = in_array( $key, $val_array ); echo ''; } echo '
'; } else { $placeholder = '— Select ' . esc_html( $field['label'] ) . ' —'; if ( $appearance === 'multi_select' ) { echo ''; echo ''; } foreach ( $field['options'] as $key => $label ) { $display_label = ( $key === $label || ( strpos( $label, '_' ) !== false && strpos( $label, ' ' ) === false ) ) ? ucwords( str_replace( '_', ' ', $label ) ) : $label; $is_selected = in_array( $key, $val_array ); echo ''; } echo ''; } echo '
'; echo '
'; } public function sanitize( $value, $field ) { if ( is_array( $value ) ) { return array_map( 'sanitize_text_field', $value ); } return sanitize_text_field( $value ); } }