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 );
}
}