it-swarm.com.de

Remove the type attribute from the word press addgefügten script- and stil tags

Warning: The type attribute is unnecessary for JavaScript resources.
    From line 10, column 146; to line 10, column 176
    feed/" /> <script type="text/javascript">window

 Warning: The type attribute for the style element is not needed and should be omitted.
    From line 11, column 1798; to line 11, column 1820
    </script> <style type="text/css">img.wp

Warning: The type attribute for the style element is not needed and should be omitted.
    From line 23, column 193; to line 23, column 251
    a='all' /><style id='kirki-styles-global-inline-css' type='text/css'>.envel

Warning: The type attribute is unnecessary for JavaScript resources.
    From line 23, column 905; to line 23, column 1010
    }</style> <script async type="text/javascript" src="http://....../wp-content/cache/minify/df983.js"></scri

Warning: The type attribute for the style element is not needed and should be omitted.
    From line 70, column 126; to line 70, column 167
    70.png" /><style type="text/css" id="wp-custom-css">@media

Warning: The type attribute is unnecessary for JavaScript resources.
    From line 441, column 156; to line 441, column 261
    iv></div> <script defer type="text/javascript" src="http://......./wp-content/cache/minify/26938.js"></scri

Warning: The type attribute is unnecessary for JavaScript resources.
    From line 441, column 272; to line 441, column 302
    </script> <script type='text/javascript'>/*  */

Warning: The type attribute is unnecessary for JavaScript resources.
    From line 443, column 17; to line 443, column 122
    </script> <script defer type="text/javascript" src="http://......../wp-content/cache/minify/6ce07.js"></scri

Diese Fehler wurden von W3C neu eingeführt und haben sich erst in den letzten 3-4 Tagen eingeschlichen.  enter image description here 

Wir stellen Skripte wie dieses in die Warteschlange →

wp_register_script( 'custom-js', get_template_directory_uri() . '/js/custom.js', array( 'jquery' ), '1.1', true );
    wp_enqueue_script( 'custom-js' );

Können wir das irgendwie aus der obigen Warteschlangenmethode beheben?

Aktualisieren →

das sind die eigentlichen fehler. In der roten Box kommen aus W3 insgesamt Cache.  enter image description here 

10
The WP Novice

Sie können die type='*'-Attribute und -Werte aus den wp_enqueue-Skripten und -Stilen entfernen, indem Sie die entsprechenden *_loader_tag-Hooks verwenden.

Folgendes hat für mich funktioniert:

add_action( 'wp_enqueue_scripts', 'myplugin_enqueue' );

function myplugin_enqueue() {
    // wp_register_script(...
    // wp_enqueue_script(...
}


add_filter('style_loader_tag', 'myplugin_remove_type_attr', 10, 2);
add_filter('script_loader_tag', 'myplugin_remove_type_attr', 10, 2);

function myplugin_remove_type_attr($tag, $handle) {
    return preg_replace( "/type=['\"]text\/(javascript|css)['\"]/", '', $tag );
}
14
David Sword

Habe dies aus dem Boden/Wurzel-Plugin. erledigte die Arbeit zum größten Teil.

    add_filter( 'style_loader_tag',  'clean_style_tag'  );
add_filter( 'script_loader_tag', 'clean_script_tag'  );

/**
 * Clean up output of stylesheet <link> tags
 */
function clean_style_tag( $input ) {
    preg_match_all( "!<link rel='stylesheet'\s?(id='[^']+')?\s+href='(.*)' type='text/css' media='(.*)' />!", $input, $matches );
    if ( empty( $matches[2] ) ) {
        return $input;
    }
    // Only display media if it is meaningful
    $media = $matches[3][0] !== '' && $matches[3][0] !== 'all' ? ' media="' . $matches[3][0] . '"' : '';

    return '<link rel="stylesheet" href="' . $matches[2][0] . '"' . $media . '>' . "\n";
}

/**
 * Clean up output of <script> tags
 */
function clean_script_tag( $input ) {
    $input = str_replace( "type='text/javascript' ", '', $input );

    return str_replace( "'", '"', $input );
}
3
kiwiot

Die obigen style_loader_tag- und script_loader_tag-Ansätze sollten für jedes Markup funktionieren, das Wordpress generiert, wenn das Theme/Plugin die richtigen Enqueue-Funktionen verwendet.

Wenn Sie Plugins haben, die nicht kooperieren (IIRC Jetpack ist/war ein Täter, es sei denn, eine neuere Version seit meiner Erinnerung hat dies überarbeitet!), Und Sie sind unnachgiebig über die Lösung dieses Problems trotz der Tatsache, dass Ihre Es ist unwahrscheinlich, dass Besucher in irgendeiner Weise davon betroffen sind (ihr Browser macht die Seite in Ordnung!). Sie können jederzeit alles tun und die Ausgabepufferung verwenden:

add_action('wp_loaded', 'output_buffer_start');
function output_buffer_start() { 
    ob_start("output_callback"); 
}

add_action('shutdown', 'output_buffer_end');
function output_buffer_end() { 
    ob_end_flush(); 
}

function output_callback($buffer) {
    return preg_replace( "%[ ]type=[\'\"]text\/(javascript|css)[\'\"]%", '', $buffer );
}

Seien Sie gewarnt, dass dies zwar eine Lösung ist, aber nicht sehr effizient. Sie würden preg_replace() für die gesamte "endgültige" Ausgabe von Wordpress ausführen, bevor sie für jede Anforderung an den Browser des Clients gesendet wird.

Die Ausgabepufferung wird zu Beginn aktiviert (wp_loaded hook), dh direkt, wenn wp + theme + plugins + etc vollständig geladen sind, und wird im letzten Moment deaktiviert (shutdown hook), der kurz vor PHP ausgelöst wird. Beendet die Ausführung. Die Regex muss alles durcharbeiten, und das könnte eine Menge Inhalt sein!

Die oben beschriebenen Ansätze style_loader_tag und script_loader_tag führen den regulären Ausdruck nur für eine sehr kleine Zeichenfolge (das Tag selbst) aus, sodass die Auswirkungen auf die Leistung vernachlässigbar sind.

Ich nehme an, wenn Sie relativ statischen Inhalt haben und eine Caching-Ebene verwenden, können Sie versuchen, die Performance-Bedenken abzumildern.

pHP-Handbuch Referenzen:

3
firxworx

Das hat mir sehr geholfen:

add_filter('script_loader_tag', 'clean_script_tag');
  function clean_script_tag($input) {
  $input = str_replace("type='text/javascript' ", '', $input);
  return str_replace("'", '"', $input);
}

Dank CSS-Tricks (LeoNovais): https://css-tricks.com/forums/topic/clean-up-script-tags-in-wordpress/#post-246425

1
nikeshulak

Aufbau von @ realmag77. Dies nutzt das Autoptimize-Plugin, um ALLE Typattribute herauszufiltern, aber nicht zu brechen, wenn es nicht installiert und aktiviert ist. Der Fallback funktioniert einwandfrei, aber die Skripte und Stylesheets, die über Plugins geladen werden, werden nicht gefiltert. Ich weiß nicht, wie ich sie filtern soll, aber mithilfe des Autoptimize-Teils.

/* ==========================================
   Remove type attribute on JS/CSS
   (requires Autoptimize plugin and Optimize HTML checked)
   but with fallback just in case
========================================== */

// If Autoptimize is installed and activated, remove type attributes for all JS/CSS
if ( is_plugin_active( 'autoptimize/autoptimize.php' ) ) {

    add_filter('autoptimize_html_after_minify', function($content) {

        $site_url = home_url();
        $content = str_replace("type='text/javascript'", '', $content);
        $content = str_replace('type="text/javascript"', '', $content);

        $content = str_replace("type='text/css'", '', $content);
        $content = str_replace('type="text/css"', '', $content);

        $content = str_replace($site_url . '/wp-includes/js', '/wp-includes/js', $content);
        $content = str_replace($site_url . '/wp-content/cache/autoptimize', '/wp-content/cache/autoptimize', $content);
        $content = str_replace($site_url . '/wp-content/themes/', '/wp-content/themes/', $content);
        $content = str_replace($site_url . '/wp-content/uploads/', '/wp-content/uploads/', $content);
        $content = str_replace($site_url . '/wp-content/plugins/', '/wp-content/plugins/', $content);

        return $content;

    }, 10, 1);

} else {

    // Fallback to remove type attributes except for those loaded through plugins
    add_filter('style_loader_tag', 'pss_remove_type_attr', 10, 2);
    add_filter('script_loader_tag', 'pss_remove_type_attr', 10, 2);
    function pss_remove_type_attr($tag, $handle) {
        return preg_replace( "/type=['\"]text\/(javascript|css)['\"]/", '', $tag );
    }
}
0
amlcreative
add_action('wp_loaded', 'prefix_output_buffer_start');
function prefix_output_buffer_start() { 
    ob_start("prefix_output_callback"); 
}

add_action('shutdown', 'prefix_output_buffer_end');
function prefix_output_buffer_end() { 
    ob_end_flush(); 
}

function prefix_output_callback($buffer) {
    return preg_replace( "%[ ]type=[\'\"]text\/(javascript|css)[\'\"]%", '', $buffer );
}
0
Jeevan Singla