Make WordPress Core

Ticket #35023: get_field_name_alt.patch

File get_field_name_alt.patch, 1.2 KB (added by pbearne, 9 years ago)

I better way to fix this

  • src/wp-includes/class-wp-widget.php

     
    183183         * @param string $field_name Field name
    184184         * @return string Name attribute for $field_name
    185185         */
    186         public function get_field_name($field_name) {
    187                 if ( false === $pos = strpos( $field_name, '[' ) ) {
     186        public function get_field_name( $field_name ) {
     187                if ( ! preg_match( '/]$/', $field_name ) ) {
    188188                        return 'widget-' . $this->id_base . '[' . $this->number . '][' . $field_name . ']';
    189189                } else {
     190                        $pos = strpos( $field_name, '[' );
    190191                        return 'widget-' . $this->id_base . '[' . $this->number . '][' . substr_replace( $field_name, '][', $pos, strlen( '[' ) );
    191192                }
    192193        }
  • tests/phpunit/tests/widgets.php

     
    351351                                'widget-foo[2][posttypes][4][][6]',
    352352                                'posttypes[4][][6]',
    353353                        ),
     354                        array(
     355                                'widget-foo[2][posttypes][name]',
     356                                'posttypes][name',
     357                        ),
    354358                );
    355359        }
    356360