Make WordPress Core


Ignore:
Timestamp:
02/23/2016 01:01:43 AM (10 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.