Make WordPress Core


Ignore:
Timestamp:
02/23/2016 01:01:43 AM (11 years ago)
Author:
westonruter
Message:

Customize: Prevent dropping backslashes from input on general settings and settings for nav menus and some widgets.

Ensures that intentional backslashes (e.g. "\o/") can be used in:

  • Site title
  • Site description
  • Nav menu name
  • Custom Menu widget title
  • Tag Cloud widget title
  • Text widget body if can't unfiltered_html

The latter three are also fixed on the widgets admin page.

Fixes #35898.

File:
1 edited

Legend:

Unmodified
Added
Removed
  • trunk/tests/phpunit/tests/customize/setting.php

    r35724 r36622  
    6868
    6969        public $post_data_overrides = array(
    70                 'unset_option_overridden' => 'unset_option_post_override_value',
    71                 'unset_theme_mod_overridden' => 'unset_theme_mod_post_override_value',
    72                 'set_option_overridden' => 'set_option_post_override_value',
    73                 'set_theme_mod_overridden' => 'set_theme_mod_post_override_value',
    74                 'unset_option_multi_overridden[foo]' => 'unset_option_multi_overridden[foo]_post_override_value',
    75                 'unset_theme_mod_multi_overridden[foo]' => 'unset_theme_mod_multi_overridden[foo]_post_override_value',
    76                 'set_option_multi_overridden[foo]' => 'set_option_multi_overridden[foo]_post_override_value',
    77                 'set_theme_mod_multi_overridden[foo]' => 'set_theme_mod_multi_overridden[foo]_post_override_value',
     70                'unset_option_overridden' => 'unset_option_post_override_value\\o/',
     71                'unset_theme_mod_overridden' => 'unset_theme_mod_post_override_value\\o/',
     72                'set_option_overridden' => 'set_option_post_override_value\\o/',
     73                'set_theme_mod_overridden' => 'set_theme_mod_post_override_value\\o/',
     74                'unset_option_multi_overridden[foo]' => 'unset_option_multi_overridden[foo]_post_override_value\\o/',
     75                'unset_theme_mod_multi_overridden[foo]' => 'unset_theme_mod_multi_overridden[foo]_post_override_value\\o/',
     76                'set_option_multi_overridden[foo]' => 'set_option_multi_overridden[foo]_post_override_value\\o/',
     77                'set_theme_mod_multi_overridden[foo]' => 'set_theme_mod_multi_overridden[foo]_post_override_value\\o/',
    7878        );
    7979
     
    300300                $type = 'custom_type';
    301301                $post_data_overrides = array(
    302                         "unset_{$type}_with_post_value" => "unset_{$type}_without_post_value",
    303                         "set_{$type}_with_post_value" => "set_{$type}_without_post_value",
     302                        "unset_{$type}_with_post_value" => "unset_{$type}_without_post_value\\o/",
     303                        "set_{$type}_with_post_value" => "set_{$type}_without_post_value\\o/",
    304304                );
    305305                $_POST['customized'] = wp_slash( wp_json_encode( $post_data_overrides ) );
     
    418418
    419419                // Try setting post value without user as admin.
    420                 $this->manager->set_post_value( $setting->id, 'hello world' );
     420                $this->manager->set_post_value( $setting->id, 'hello world \\o/' );
    421421                $this->assertFalse( $setting->save() );
    422422                $this->assertTrue( 0 === did_action( 'customize_update_custom' ) );
     
    438438         */
    439439        function handle_customize_update_custom_foo_action( $value, $setting = null ) {
    440                 $this->assertEquals( 'hello world', $value );
     440                $this->assertEquals( 'hello world \\o/', $value );
    441441                $this->assertInstanceOf( 'WP_Customize_Setting', $setting );
    442442        }
Note: See TracChangeset for help on using the changeset viewer.