1 ? $matches[1] : null; $val['unit'] = $num_matches > 2 ? $matches[2] : null; return $val; } protected function render_field( $value, $instance ) { $value_parts = $this->get_render_values($value); parent::render_field( $value_parts['value'], $instance ); } protected function render_after_field( $value, $instance ) { $value_parts = $this->get_render_values($value); $unit = $value_parts['unit']; if ( is_null( $unit ) ) { $unit_name = $this->get_unit_field_name( $this->base_name ); if( !empty( $instance[ $unit_name ] ) ) { $unit = $instance[ $unit_name ]; } else if ( isset( $this->default ) ) { $default_parts = $this->get_render_values($this->default); $unit = $default_parts['unit']; } } ?>
get_unit_field_name( $this->base_name ); //Initialize with default value, if any. $default_parts = $this->get_render_values($this->default); $unit = $default_parts['unit']; if( isset( $instance[ $unit_name ] ) ) { $units = siteorigin_widgets_get_measurements_list(); if ( in_array( $instance[ $unit_name ], $units ) ) { $unit = $instance[ $unit_name ]; } unset( $instance[ $unit_name ] ); } // Sensible default, if we somehow end up without a unit. if ( empty( $unit ) ) { $unit = 'px'; } // `strlen( $value ) == 0` should prevent 0, 0.0, or '0' from being seen as empty. $value = ( empty( $value ) && strlen( $value ) == 0 ) ? false : ( (float) $value ) . $unit; return $value; } // Get the name of the dropdown field rendered to allow the user to select a measurement unit. public function get_unit_field_name( $base_name ) { $v_name = $base_name; if( strpos($v_name, '][') !== false ) { // Remove this splitter $v_name = substr( $v_name, strrpos($v_name, '][') + 2 ); } return $v_name . '_unit'; } }