Edit File by line
/home/zeestwma/richards.../wp-inclu...
File: script-loader.php
}
[3000] Fix | Delete
[3001] Fix | Delete
/**
[3002] Fix | Delete
* Prints an inline script tag.
[3003] Fix | Delete
*
[3004] Fix | Delete
* It is possible to inject attributes in the `<script>` tag via the {@see 'wp_script_attributes'} filter.
[3005] Fix | Delete
* Automatically injects type attribute if needed.
[3006] Fix | Delete
*
[3007] Fix | Delete
* @since 5.7.0
[3008] Fix | Delete
*
[3009] Fix | Delete
* @param string $data Data for script tag: JavaScript, importmap, speculationrules, etc.
[3010] Fix | Delete
* @param array $attributes Optional. Key-value pairs representing `<script>` tag attributes.
[3011] Fix | Delete
*/
[3012] Fix | Delete
function wp_print_inline_script_tag( $data, $attributes = array() ) {
[3013] Fix | Delete
echo wp_get_inline_script_tag( $data, $attributes );
[3014] Fix | Delete
}
[3015] Fix | Delete
[3016] Fix | Delete
/**
[3017] Fix | Delete
* Allows small styles to be inlined.
[3018] Fix | Delete
*
[3019] Fix | Delete
* This improves performance and sustainability, and is opt-in. Stylesheets can opt in
[3020] Fix | Delete
* by adding `path` data using `wp_style_add_data`, and defining the file's absolute path:
[3021] Fix | Delete
*
[3022] Fix | Delete
* wp_style_add_data( $style_handle, 'path', $file_path );
[3023] Fix | Delete
*
[3024] Fix | Delete
* @since 5.8.0
[3025] Fix | Delete
*
[3026] Fix | Delete
* @global WP_Styles $wp_styles
[3027] Fix | Delete
*/
[3028] Fix | Delete
function wp_maybe_inline_styles() {
[3029] Fix | Delete
global $wp_styles;
[3030] Fix | Delete
[3031] Fix | Delete
$total_inline_limit = 20000;
[3032] Fix | Delete
/**
[3033] Fix | Delete
* The maximum size of inlined styles in bytes.
[3034] Fix | Delete
*
[3035] Fix | Delete
* @since 5.8.0
[3036] Fix | Delete
*
[3037] Fix | Delete
* @param int $total_inline_limit The file-size threshold, in bytes. Default 20000.
[3038] Fix | Delete
*/
[3039] Fix | Delete
$total_inline_limit = apply_filters( 'styles_inline_size_limit', $total_inline_limit );
[3040] Fix | Delete
[3041] Fix | Delete
$styles = array();
[3042] Fix | Delete
[3043] Fix | Delete
// Build an array of styles that have a path defined.
[3044] Fix | Delete
foreach ( $wp_styles->queue as $handle ) {
[3045] Fix | Delete
if ( ! isset( $wp_styles->registered[ $handle ] ) ) {
[3046] Fix | Delete
continue;
[3047] Fix | Delete
}
[3048] Fix | Delete
$src = $wp_styles->registered[ $handle ]->src;
[3049] Fix | Delete
$path = $wp_styles->get_data( $handle, 'path' );
[3050] Fix | Delete
if ( $path && $src ) {
[3051] Fix | Delete
$size = wp_filesize( $path );
[3052] Fix | Delete
if ( ! $size ) {
[3053] Fix | Delete
continue;
[3054] Fix | Delete
}
[3055] Fix | Delete
$styles[] = array(
[3056] Fix | Delete
'handle' => $handle,
[3057] Fix | Delete
'src' => $src,
[3058] Fix | Delete
'path' => $path,
[3059] Fix | Delete
'size' => $size,
[3060] Fix | Delete
);
[3061] Fix | Delete
}
[3062] Fix | Delete
}
[3063] Fix | Delete
[3064] Fix | Delete
if ( ! empty( $styles ) ) {
[3065] Fix | Delete
// Reorder styles array based on size.
[3066] Fix | Delete
usort(
[3067] Fix | Delete
$styles,
[3068] Fix | Delete
static function ( $a, $b ) {
[3069] Fix | Delete
return ( $a['size'] <= $b['size'] ) ? -1 : 1;
[3070] Fix | Delete
}
[3071] Fix | Delete
);
[3072] Fix | Delete
[3073] Fix | Delete
/*
[3074] Fix | Delete
* The total inlined size.
[3075] Fix | Delete
*
[3076] Fix | Delete
* On each iteration of the loop, if a style gets added inline the value of this var increases
[3077] Fix | Delete
* to reflect the total size of inlined styles.
[3078] Fix | Delete
*/
[3079] Fix | Delete
$total_inline_size = 0;
[3080] Fix | Delete
[3081] Fix | Delete
// Loop styles.
[3082] Fix | Delete
foreach ( $styles as $style ) {
[3083] Fix | Delete
[3084] Fix | Delete
// Size check. Since styles are ordered by size, we can break the loop.
[3085] Fix | Delete
if ( $total_inline_size + $style['size'] > $total_inline_limit ) {
[3086] Fix | Delete
break;
[3087] Fix | Delete
}
[3088] Fix | Delete
[3089] Fix | Delete
// Get the styles if we don't already have them.
[3090] Fix | Delete
$style['css'] = file_get_contents( $style['path'] );
[3091] Fix | Delete
[3092] Fix | Delete
/*
[3093] Fix | Delete
* Check if the style contains relative URLs that need to be modified.
[3094] Fix | Delete
* URLs relative to the stylesheet's path should be converted to relative to the site's root.
[3095] Fix | Delete
*/
[3096] Fix | Delete
$style['css'] = _wp_normalize_relative_css_links( $style['css'], $style['src'] );
[3097] Fix | Delete
[3098] Fix | Delete
// Set `src` to `false` and add styles inline.
[3099] Fix | Delete
$wp_styles->registered[ $style['handle'] ]->src = false;
[3100] Fix | Delete
if ( empty( $wp_styles->registered[ $style['handle'] ]->extra['after'] ) ) {
[3101] Fix | Delete
$wp_styles->registered[ $style['handle'] ]->extra['after'] = array();
[3102] Fix | Delete
}
[3103] Fix | Delete
array_unshift( $wp_styles->registered[ $style['handle'] ]->extra['after'], $style['css'] );
[3104] Fix | Delete
[3105] Fix | Delete
// Add the styles size to the $total_inline_size var.
[3106] Fix | Delete
$total_inline_size += (int) $style['size'];
[3107] Fix | Delete
}
[3108] Fix | Delete
}
[3109] Fix | Delete
}
[3110] Fix | Delete
[3111] Fix | Delete
/**
[3112] Fix | Delete
* Makes URLs relative to the WordPress installation.
[3113] Fix | Delete
*
[3114] Fix | Delete
* @since 5.9.0
[3115] Fix | Delete
* @access private
[3116] Fix | Delete
*
[3117] Fix | Delete
* @param string $css The CSS to make URLs relative to the WordPress installation.
[3118] Fix | Delete
* @param string $stylesheet_url The URL to the stylesheet.
[3119] Fix | Delete
*
[3120] Fix | Delete
* @return string The CSS with URLs made relative to the WordPress installation.
[3121] Fix | Delete
*/
[3122] Fix | Delete
function _wp_normalize_relative_css_links( $css, $stylesheet_url ) {
[3123] Fix | Delete
return preg_replace_callback(
[3124] Fix | Delete
'#(url\s*\(\s*[\'"]?\s*)([^\'"\)]+)#',
[3125] Fix | Delete
static function ( $matches ) use ( $stylesheet_url ) {
[3126] Fix | Delete
list( , $prefix, $url ) = $matches;
[3127] Fix | Delete
[3128] Fix | Delete
// Short-circuit if the URL does not require normalization.
[3129] Fix | Delete
if (
[3130] Fix | Delete
str_starts_with( $url, 'http:' ) ||
[3131] Fix | Delete
str_starts_with( $url, 'https:' ) ||
[3132] Fix | Delete
str_starts_with( $url, '/' ) ||
[3133] Fix | Delete
str_starts_with( $url, '#' ) ||
[3134] Fix | Delete
str_starts_with( $url, 'data:' )
[3135] Fix | Delete
) {
[3136] Fix | Delete
return $matches[0];
[3137] Fix | Delete
}
[3138] Fix | Delete
[3139] Fix | Delete
// Build the absolute URL.
[3140] Fix | Delete
$absolute_url = dirname( $stylesheet_url ) . '/' . $url;
[3141] Fix | Delete
$absolute_url = str_replace( '/./', '/', $absolute_url );
[3142] Fix | Delete
[3143] Fix | Delete
// Convert to URL related to the site root.
[3144] Fix | Delete
$url = wp_make_link_relative( $absolute_url );
[3145] Fix | Delete
[3146] Fix | Delete
return $prefix . $url;
[3147] Fix | Delete
},
[3148] Fix | Delete
$css
[3149] Fix | Delete
);
[3150] Fix | Delete
}
[3151] Fix | Delete
[3152] Fix | Delete
/**
[3153] Fix | Delete
* Function that enqueues the CSS Custom Properties coming from theme.json.
[3154] Fix | Delete
*
[3155] Fix | Delete
* @since 5.9.0
[3156] Fix | Delete
*/
[3157] Fix | Delete
function wp_enqueue_global_styles_css_custom_properties() {
[3158] Fix | Delete
wp_register_style( 'global-styles-css-custom-properties', false );
[3159] Fix | Delete
wp_add_inline_style( 'global-styles-css-custom-properties', wp_get_global_stylesheet( array( 'variables' ) ) );
[3160] Fix | Delete
wp_enqueue_style( 'global-styles-css-custom-properties' );
[3161] Fix | Delete
}
[3162] Fix | Delete
[3163] Fix | Delete
/**
[3164] Fix | Delete
* Hooks inline styles in the proper place, depending on the active theme.
[3165] Fix | Delete
*
[3166] Fix | Delete
* @since 5.9.1
[3167] Fix | Delete
* @since 6.1.0 Added the `$priority` parameter.
[3168] Fix | Delete
*
[3169] Fix | Delete
* For block themes, styles are loaded in the head.
[3170] Fix | Delete
* For classic ones, styles are loaded in the body because the wp_head action happens before render_block.
[3171] Fix | Delete
*
[3172] Fix | Delete
* @link https://core.trac.wordpress.org/ticket/53494.
[3173] Fix | Delete
*
[3174] Fix | Delete
* @param string $style String containing the CSS styles to be added.
[3175] Fix | Delete
* @param int $priority To set the priority for the add_action.
[3176] Fix | Delete
*/
[3177] Fix | Delete
function wp_enqueue_block_support_styles( $style, $priority = 10 ) {
[3178] Fix | Delete
$action_hook_name = 'wp_footer';
[3179] Fix | Delete
if ( wp_is_block_theme() ) {
[3180] Fix | Delete
$action_hook_name = 'wp_head';
[3181] Fix | Delete
}
[3182] Fix | Delete
add_action(
[3183] Fix | Delete
$action_hook_name,
[3184] Fix | Delete
static function () use ( $style ) {
[3185] Fix | Delete
echo "<style>$style</style>\n";
[3186] Fix | Delete
},
[3187] Fix | Delete
$priority
[3188] Fix | Delete
);
[3189] Fix | Delete
}
[3190] Fix | Delete
[3191] Fix | Delete
/**
[3192] Fix | Delete
* Fetches, processes and compiles stored core styles, then combines and renders them to the page.
[3193] Fix | Delete
* Styles are stored via the style engine API.
[3194] Fix | Delete
*
[3195] Fix | Delete
* @link https://developer.wordpress.org/block-editor/reference-guides/packages/packages-style-engine/
[3196] Fix | Delete
*
[3197] Fix | Delete
* @since 6.1.0
[3198] Fix | Delete
*
[3199] Fix | Delete
* @param array $options {
[3200] Fix | Delete
* Optional. An array of options to pass to wp_style_engine_get_stylesheet_from_context().
[3201] Fix | Delete
* Default empty array.
[3202] Fix | Delete
*
[3203] Fix | Delete
* @type bool $optimize Whether to optimize the CSS output, e.g., combine rules.
[3204] Fix | Delete
* Default false.
[3205] Fix | Delete
* @type bool $prettify Whether to add new lines and indents to output.
[3206] Fix | Delete
* Default to whether the `SCRIPT_DEBUG` constant is defined.
[3207] Fix | Delete
* }
[3208] Fix | Delete
*/
[3209] Fix | Delete
function wp_enqueue_stored_styles( $options = array() ) {
[3210] Fix | Delete
$is_block_theme = wp_is_block_theme();
[3211] Fix | Delete
$is_classic_theme = ! $is_block_theme;
[3212] Fix | Delete
[3213] Fix | Delete
/*
[3214] Fix | Delete
* For block themes, this function prints stored styles in the header.
[3215] Fix | Delete
* For classic themes, in the footer.
[3216] Fix | Delete
*/
[3217] Fix | Delete
if (
[3218] Fix | Delete
( $is_block_theme && doing_action( 'wp_footer' ) ) ||
[3219] Fix | Delete
( $is_classic_theme && doing_action( 'wp_enqueue_scripts' ) )
[3220] Fix | Delete
) {
[3221] Fix | Delete
return;
[3222] Fix | Delete
}
[3223] Fix | Delete
[3224] Fix | Delete
$core_styles_keys = array( 'block-supports' );
[3225] Fix | Delete
$compiled_core_stylesheet = '';
[3226] Fix | Delete
$style_tag_id = 'core';
[3227] Fix | Delete
// Adds comment if code is prettified to identify core styles sections in debugging.
[3228] Fix | Delete
$should_prettify = isset( $options['prettify'] ) ? true === $options['prettify'] : defined( 'SCRIPT_DEBUG' ) && SCRIPT_DEBUG;
[3229] Fix | Delete
foreach ( $core_styles_keys as $style_key ) {
[3230] Fix | Delete
if ( $should_prettify ) {
[3231] Fix | Delete
$compiled_core_stylesheet .= "/**\n * Core styles: $style_key\n */\n";
[3232] Fix | Delete
}
[3233] Fix | Delete
// Chains core store ids to signify what the styles contain.
[3234] Fix | Delete
$style_tag_id .= '-' . $style_key;
[3235] Fix | Delete
$compiled_core_stylesheet .= wp_style_engine_get_stylesheet_from_context( $style_key, $options );
[3236] Fix | Delete
}
[3237] Fix | Delete
[3238] Fix | Delete
// Combines Core styles.
[3239] Fix | Delete
if ( ! empty( $compiled_core_stylesheet ) ) {
[3240] Fix | Delete
wp_register_style( $style_tag_id, false );
[3241] Fix | Delete
wp_add_inline_style( $style_tag_id, $compiled_core_stylesheet );
[3242] Fix | Delete
wp_enqueue_style( $style_tag_id );
[3243] Fix | Delete
}
[3244] Fix | Delete
[3245] Fix | Delete
// Prints out any other stores registered by themes or otherwise.
[3246] Fix | Delete
$additional_stores = WP_Style_Engine_CSS_Rules_Store::get_stores();
[3247] Fix | Delete
foreach ( array_keys( $additional_stores ) as $store_name ) {
[3248] Fix | Delete
if ( in_array( $store_name, $core_styles_keys, true ) ) {
[3249] Fix | Delete
continue;
[3250] Fix | Delete
}
[3251] Fix | Delete
$styles = wp_style_engine_get_stylesheet_from_context( $store_name, $options );
[3252] Fix | Delete
if ( ! empty( $styles ) ) {
[3253] Fix | Delete
$key = "wp-style-engine-$store_name";
[3254] Fix | Delete
wp_register_style( $key, false );
[3255] Fix | Delete
wp_add_inline_style( $key, $styles );
[3256] Fix | Delete
wp_enqueue_style( $key );
[3257] Fix | Delete
}
[3258] Fix | Delete
}
[3259] Fix | Delete
}
[3260] Fix | Delete
[3261] Fix | Delete
/**
[3262] Fix | Delete
* Enqueues a stylesheet for a specific block.
[3263] Fix | Delete
*
[3264] Fix | Delete
* If the theme has opted-in to load block styles on demand,
[3265] Fix | Delete
* then the stylesheet will be enqueued on-render,
[3266] Fix | Delete
* otherwise when the block inits.
[3267] Fix | Delete
*
[3268] Fix | Delete
* @since 5.9.0
[3269] Fix | Delete
*
[3270] Fix | Delete
* @param string $block_name The block-name, including namespace.
[3271] Fix | Delete
* @param array $args {
[3272] Fix | Delete
* An array of arguments. See wp_register_style() for full information about each argument.
[3273] Fix | Delete
*
[3274] Fix | Delete
* @type string $handle The handle for the stylesheet.
[3275] Fix | Delete
* @type string|false $src The source URL of the stylesheet.
[3276] Fix | Delete
* @type string[] $deps Array of registered stylesheet handles this stylesheet depends on.
[3277] Fix | Delete
* @type string|bool|null $ver Stylesheet version number.
[3278] Fix | Delete
* @type string $media The media for which this stylesheet has been defined.
[3279] Fix | Delete
* @type string|null $path Absolute path to the stylesheet, so that it can potentially be inlined.
[3280] Fix | Delete
* }
[3281] Fix | Delete
*/
[3282] Fix | Delete
function wp_enqueue_block_style( $block_name, $args ) {
[3283] Fix | Delete
$args = wp_parse_args(
[3284] Fix | Delete
$args,
[3285] Fix | Delete
array(
[3286] Fix | Delete
'handle' => '',
[3287] Fix | Delete
'src' => '',
[3288] Fix | Delete
'deps' => array(),
[3289] Fix | Delete
'ver' => false,
[3290] Fix | Delete
'media' => 'all',
[3291] Fix | Delete
)
[3292] Fix | Delete
);
[3293] Fix | Delete
[3294] Fix | Delete
/**
[3295] Fix | Delete
* Callback function to register and enqueue styles.
[3296] Fix | Delete
*
[3297] Fix | Delete
* @param string $content When the callback is used for the render_block filter,
[3298] Fix | Delete
* the content needs to be returned so the function parameter
[3299] Fix | Delete
* is to ensure the content exists.
[3300] Fix | Delete
* @return string Block content.
[3301] Fix | Delete
*/
[3302] Fix | Delete
$callback = static function ( $content ) use ( $args ) {
[3303] Fix | Delete
// Register the stylesheet.
[3304] Fix | Delete
if ( ! empty( $args['src'] ) ) {
[3305] Fix | Delete
wp_register_style( $args['handle'], $args['src'], $args['deps'], $args['ver'], $args['media'] );
[3306] Fix | Delete
}
[3307] Fix | Delete
[3308] Fix | Delete
// Add `path` data if provided.
[3309] Fix | Delete
if ( isset( $args['path'] ) ) {
[3310] Fix | Delete
wp_style_add_data( $args['handle'], 'path', $args['path'] );
[3311] Fix | Delete
[3312] Fix | Delete
// Get the RTL file path.
[3313] Fix | Delete
$rtl_file_path = str_replace( '.css', '-rtl.css', $args['path'] );
[3314] Fix | Delete
[3315] Fix | Delete
// Add RTL stylesheet.
[3316] Fix | Delete
if ( file_exists( $rtl_file_path ) ) {
[3317] Fix | Delete
wp_style_add_data( $args['handle'], 'rtl', 'replace' );
[3318] Fix | Delete
[3319] Fix | Delete
if ( is_rtl() ) {
[3320] Fix | Delete
wp_style_add_data( $args['handle'], 'path', $rtl_file_path );
[3321] Fix | Delete
}
[3322] Fix | Delete
}
[3323] Fix | Delete
}
[3324] Fix | Delete
[3325] Fix | Delete
// Enqueue the stylesheet.
[3326] Fix | Delete
wp_enqueue_style( $args['handle'] );
[3327] Fix | Delete
[3328] Fix | Delete
return $content;
[3329] Fix | Delete
};
[3330] Fix | Delete
[3331] Fix | Delete
$hook = did_action( 'wp_enqueue_scripts' ) ? 'wp_footer' : 'wp_enqueue_scripts';
[3332] Fix | Delete
if ( wp_should_load_block_assets_on_demand() ) {
[3333] Fix | Delete
/**
[3334] Fix | Delete
* Callback function to register and enqueue styles.
[3335] Fix | Delete
*
[3336] Fix | Delete
* @param string $content The block content.
[3337] Fix | Delete
* @param array $block The full block, including name and attributes.
[3338] Fix | Delete
* @return string Block content.
[3339] Fix | Delete
*/
[3340] Fix | Delete
$callback_separate = static function ( $content, $block ) use ( $block_name, $callback ) {
[3341] Fix | Delete
if ( ! empty( $block['blockName'] ) && $block_name === $block['blockName'] ) {
[3342] Fix | Delete
return $callback( $content );
[3343] Fix | Delete
}
[3344] Fix | Delete
return $content;
[3345] Fix | Delete
};
[3346] Fix | Delete
[3347] Fix | Delete
/*
[3348] Fix | Delete
* The filter's callback here is an anonymous function because
[3349] Fix | Delete
* using a named function in this case is not possible.
[3350] Fix | Delete
*
[3351] Fix | Delete
* The function cannot be unhooked, however, users are still able
[3352] Fix | Delete
* to dequeue the stylesheets registered/enqueued by the callback
[3353] Fix | Delete
* which is why in this case, using an anonymous function
[3354] Fix | Delete
* was deemed acceptable.
[3355] Fix | Delete
*/
[3356] Fix | Delete
add_filter( 'render_block', $callback_separate, 10, 2 );
[3357] Fix | Delete
return;
[3358] Fix | Delete
}
[3359] Fix | Delete
[3360] Fix | Delete
/*
[3361] Fix | Delete
* The filter's callback here is an anonymous function because
[3362] Fix | Delete
* using a named function in this case is not possible.
[3363] Fix | Delete
*
[3364] Fix | Delete
* The function cannot be unhooked, however, users are still able
[3365] Fix | Delete
* to dequeue the stylesheets registered/enqueued by the callback
[3366] Fix | Delete
* which is why in this case, using an anonymous function
[3367] Fix | Delete
* was deemed acceptable.
[3368] Fix | Delete
*/
[3369] Fix | Delete
add_filter( $hook, $callback );
[3370] Fix | Delete
[3371] Fix | Delete
// Enqueue assets in the editor.
[3372] Fix | Delete
add_action( 'enqueue_block_assets', $callback );
[3373] Fix | Delete
}
[3374] Fix | Delete
[3375] Fix | Delete
/**
[3376] Fix | Delete
* Loads classic theme styles on classic themes in the frontend.
[3377] Fix | Delete
*
[3378] Fix | Delete
* This is used for backwards compatibility for Button and File blocks specifically.
[3379] Fix | Delete
*
[3380] Fix | Delete
* @since 6.1.0
[3381] Fix | Delete
* @since 6.2.0 Added File block styles.
[3382] Fix | Delete
* @since 6.8.0 Moved stylesheet registration outside of this function.
[3383] Fix | Delete
*/
[3384] Fix | Delete
function wp_enqueue_classic_theme_styles() {
[3385] Fix | Delete
if ( ! wp_theme_has_theme_json() ) {
[3386] Fix | Delete
wp_enqueue_style( 'classic-theme-styles' );
[3387] Fix | Delete
}
[3388] Fix | Delete
}
[3389] Fix | Delete
[3390] Fix | Delete
/**
[3391] Fix | Delete
* Removes leading and trailing _empty_ script tags.
[3392] Fix | Delete
*
[3393] Fix | Delete
* This is a helper meant to be used for literal script tag construction
[3394] Fix | Delete
* within `wp_get_inline_script_tag()` or `wp_print_inline_script_tag()`.
[3395] Fix | Delete
* It removes the literal values of "<script>" and "</script>" from
[3396] Fix | Delete
* around an inline script after trimming whitespace. Typically this
[3397] Fix | Delete
* is used in conjunction with output buffering, where `ob_get_clean()`
[3398] Fix | Delete
* is passed as the `$contents` argument.
[3399] Fix | Delete
*
[3400] Fix | Delete
* Example:
[3401] Fix | Delete
*
[3402] Fix | Delete
* // Strips exact literal empty SCRIPT tags.
[3403] Fix | Delete
* $js = '<script>sayHello();</script>;
[3404] Fix | Delete
* 'sayHello();' === wp_remove_surrounding_empty_script_tags( $js );
[3405] Fix | Delete
*
[3406] Fix | Delete
* // Otherwise if anything is different it warns in the JS console.
[3407] Fix | Delete
* $js = '<script type="text/javascript">console.log( "hi" );</script>';
[3408] Fix | Delete
* 'console.error( ... )' === wp_remove_surrounding_empty_script_tags( $js );
[3409] Fix | Delete
*
[3410] Fix | Delete
* @since 6.4.0
[3411] Fix | Delete
* @access private
[3412] Fix | Delete
*
[3413] Fix | Delete
* @see wp_print_inline_script_tag()
[3414] Fix | Delete
* @see wp_get_inline_script_tag()
[3415] Fix | Delete
*
[3416] Fix | Delete
* @param string $contents Script body with manually created SCRIPT tag literals.
[3417] Fix | Delete
* @return string Script body without surrounding script tag literals, or
[3418] Fix | Delete
* original contents if both exact literals aren't present.
[3419] Fix | Delete
*/
[3420] Fix | Delete
function wp_remove_surrounding_empty_script_tags( $contents ) {
[3421] Fix | Delete
$contents = trim( $contents );
[3422] Fix | Delete
$opener = '<SCRIPT>';
[3423] Fix | Delete
$closer = '</SCRIPT>';
[3424] Fix | Delete
[3425] Fix | Delete
if (
[3426] Fix | Delete
strlen( $contents ) > strlen( $opener ) + strlen( $closer ) &&
[3427] Fix | Delete
strtoupper( substr( $contents, 0, strlen( $opener ) ) ) === $opener &&
[3428] Fix | Delete
strtoupper( substr( $contents, -strlen( $closer ) ) ) === $closer
[3429] Fix | Delete
) {
[3430] Fix | Delete
return substr( $contents, strlen( $opener ), -strlen( $closer ) );
[3431] Fix | Delete
} else {
[3432] Fix | Delete
$error_message = __( 'Expected string to start with script tag (without attributes) and end with script tag, with optional whitespace.' );
[3433] Fix | Delete
_doing_it_wrong( __FUNCTION__, $error_message, '6.4' );
[3434] Fix | Delete
return sprintf(
[3435] Fix | Delete
'console.error(%s)',
[3436] Fix | Delete
wp_json_encode(
[3437] Fix | Delete
sprintf(
[3438] Fix | Delete
/* translators: %s: wp_remove_surrounding_empty_script_tags() */
[3439] Fix | Delete
__( 'Function %s used incorrectly in PHP.' ),
[3440] Fix | Delete
'wp_remove_surrounding_empty_script_tags()'
[3441] Fix | Delete
) . ' ' . $error_message
[3442] Fix | Delete
)
[3443] Fix | Delete
);
[3444] Fix | Delete
}
[3445] Fix | Delete
}
[3446] Fix | Delete
[3447] Fix | Delete
It is recommended that you Edit text format, this type of Fix handles quite a lot in one request
Function