name = 'checkbox'; $this->label = 'Checkbox'; $this->category = 'choice'; } public function render( $field, $value = '', $name = null ) { $name = $name ?: "metaforge[{$field['name']}]"; // $value could be an array of selected keys if saved previously $selected_values = is_array( $value ) ? $value : (array) $value; $layout = isset( $field['layout'] ) ? $field['layout'] : 'vertical'; $group_class = ( $layout === 'horizontal' ) ? 'mfe-choice-layout-horizontal' : 'mfe-choice-layout-vertical'; echo '
'; echo ''; echo '
'; if ( ! empty( $field['options'] ) && is_array( $field['options'] ) ) { foreach ( $field['options'] as $key => $label ) { $display_label = ( $key === $label || ( strpos( $label, '_' ) !== false && strpos( $label, ' ' ) === false ) ) ? ucwords( str_replace( '_', ' ', $label ) ) : $label; $is_checked = in_array( (string) $key, $selected_values, true ) ? 'checked' : ''; // name is an array because Checkboxes accept multiple selections echo ''; } } else { echo 'No options configured.'; } echo '
'; echo '
'; } public function format_value( $value, $post_id, $field ) { if ( is_array( $value ) ) { return $value; } return ( $value !== '' && $value !== null ) ? array( $value ) : array(); } public function sanitize( $value, $field ) { if ( is_array( $value ) ) { return array_map( 'sanitize_text_field', $value ); } return sanitize_text_field( $value ); } }