WordPress.org

Make WordPress Core

Ticket #40485: 40485.2.diff

File 40485.2.diff, 2.6 KB (added by desrosj, 3 years ago)

Refreshed patch.

  • src/wp-includes/functions.wp-scripts.php

     
    355355function wp_script_add_data( $handle, $key, $value ) {
    356356        return wp_scripts()->add_data( $handle, $key, $value );
    357357}
     358
     359/**
     360 * Get metadata for a script.
     361 *
     362 * Works only if the script has already been added.
     363 *
     364 * Possible values for $key and $value:
     365 * 'data' array Localized script data.
     366 *
     367 * @since 5.0.0
     368 *
     369 * @see WP_Dependency::get_data()
     370 *
     371 * @param string $handle     Name of the script.
     372 * @param string $key        Name of data point for which we're retrieving a value.
     373 * @return bool|string|array False when the script is not registered, or data is not
     374 *                           stored in $key, string or array of data when it exists.
     375 */
     376function wp_script_get_data( $handle, $key ){
     377        return wp_scripts()->get_data( $handle, $key );
     378}
  • tests/phpunit/tests/dependencies/scripts.php

     
    185185        }
    186186
    187187        /**
     188         * Testing `wp_script_get_data` with data added through `wp_localize_script`.
     189         *
     190         * @ticket 40485
     191         */
     192        function test_wp_script_get_data_with_localized_data() {
     193                $data = array(
     194                        'key' => 'value',
     195                        'key2' => 'value',
     196                );
     197                $l10n = array();
     198
     199                wp_enqueue_script( 'test-get-data', 'example.com', array(), null );
     200                wp_localize_script( 'test-get-data', 'localized_data', $data );
     201
     202                // Simulate preparing data for localization.
     203                foreach ( (array) $data as $key => $value ) {
     204                        if ( ! is_scalar( $value ) )
     205                                continue;
     206
     207                        $l10n[ $key ] = html_entity_decode( (string) $value, ENT_QUOTES, 'UTF-8' );
     208                }
     209
     210                $localized_data = 'var localized_data = ' . wp_json_encode( $data ) . ';';
     211
     212                $this->assertEquals( $localized_data, wp_script_get_data( 'test-get-data', 'data' ) );
     213        }
     214
     215        /**
     216         * Testing `wp_script_get_data` for retrieving the conditional data key.
     217         *
     218         * @ticket 40485
     219         */
     220        function test_wp_script_get_data_with_conditional_key() {
     221                // Enqueue & add an invalid key
     222                wp_enqueue_script( 'test-get-date-conditional', 'example.com', array(), null );
     223                wp_script_add_data( 'test-get-date-conditional', 'conditional', 'lt IE 9' );
     224
     225                $this->assertEquals( 'lt IE 9', wp_script_get_data( 'test-get-date-conditional', 'conditional' ) );
     226        }
     227
     228        /**
    188229         * Testing 'wp_register_script' return boolean success/failure value.
    189230         *
    190231         * @ticket 31126