diff --git a/includes/fields/class-gravityview-field-name.php b/includes/fields/class-gravityview-field-name.php index 90f9f58fb5..e624a7c6b3 100644 --- a/includes/fields/class-gravityview-field-name.php +++ b/includes/fields/class-gravityview-field-name.php @@ -22,8 +22,31 @@ class GravityView_Field_Name extends GravityView_Field { public function __construct() { $this->label = esc_html__( 'Name', 'gk-gravityview' ); + parent::__construct(); } + + + public function field_options( $field_options, $template_id, $field_id, $context, $input_type, $form_id ) { + + if ( 'edit' === $context ) { + return $field_options; + } + + + $field_options['only_initials'] = array( + 'type' => 'checkbox', + 'label' => __( 'Only show initials', 'gk-gravityview' ), + 'desc' => __( 'Only show the initials of the name.', 'gk-gravityview' ), + 'value' => '', + 'group' => 'display', + ); + + + return $field_options; + } + + } new GravityView_Field_Name(); diff --git a/templates/fields/field-name-html.php b/templates/fields/field-name-html.php index 94b9e0d060..e50459d0e2 100644 --- a/templates/fields/field-name-html.php +++ b/templates/fields/field-name-html.php @@ -16,8 +16,34 @@ $display_value = $gravityview->display_value; $entry = $gravityview->entry->as_entry(); + +$field_settings = $gravityview->field->as_configuration(); + if ( floatval( $field_id ) != intval( $field_id ) ) { - echo esc_html( gravityview_get_field_value( $entry, $field_id, $display_value ) ); + $display_value = esc_html( gravityview_get_field_value( $entry, $field_id, $display_value ) ); } else { - echo gravityview_get_field_value( $entry, $field_id, $display_value ); + $display_value = gravityview_get_field_value( $entry, $field_id, $display_value ); +} + + +if ( !empty( $field_settings['only_initials'] ) ) { + $names = explode( ' ', $display_value ); + $initials = ''; + + foreach ( $names as $name ) { + $initials .= trim(mb_strtoupper( mb_substr($name, 0, 1) )) . '.'; + } + + /** + * Filter to override custom initials. + * + * @since TBD + * + * @param string $initials The initials to display. + * @param string $display_value The full name to display. + * @param \GV\Template_Context $gravityview The GravityView template context. + */ + $display_value = apply_filters('gk/gravityview/fields/name/initials', $initials, $display_value, $gravityview); } + +echo $display_value; \ No newline at end of file