Hapus atribut type dari tag script dan style yang ditambahkan oleh WordPress


15
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

Kesalahan ini adalah beberapa pengantar baru oleh W3C dan mereka sudah mulai merayap dalam 3-4 hari terakhir saja.masukkan deskripsi gambar di sini

Kami membuat skrip seperti ini →

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

Bisakah kita memperbaiki ini dari metode enqueuing di atas entah bagaimana?

Perbarui →

ini adalah kesalahan aktual. Di kotak merah berasal dari total cache W3.masukkan deskripsi gambar di sini


5
validator W3C jarang kembali sebagai error untuk situs Wordpress atau cms populer. tampaknya semakin buruk setiap tahun. Validator (imho) harus digunakan sebagai alat untuk mengungkapkan beberapa kesalahan dasar (seperti lupa alttag, atau lupa menutup tag), tetapi tidak boleh dilihat sebagai standar seperti dulu.
David Sword

mereka telah memperkenalkannya setelah 2 Desember 017. sebelum itu tema saya bebas dari kesalahan / peringatan. Harus ada cara untuk menyingkirkan mereka.
The WP Intermediate

1
lihat ke script_loader_tagkait, Anda mungkin bisa melakukan str_replace()untuk menghapusnya.
David Sword

Layak menunjukkan bahwa ini hanya peringatan , bukan kesalahan. Situs Anda masih akan divalidasi.
swissspidy

Anda dapat memeriksa jawaban berikut juga - stackoverflow.com/a/53380692/2611955
Jahirul Islam Mamun

Jawaban:


16

Anda dapat menghapus type='*'atribut dan nilai dari wp_enqueueskrip dan gaya ed, menggunakan *_loader_tagkait masing-masing .

Berikut ini bekerja untuk saya:

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 );
}

Saya mencoba ini, tetapi itu tidak memperbaiki masalah. Mungkin kita perlu manipulasi.
WP Menengah

1
Saya berspekulasi bahwa beberapa skrip Anda dari plugin (seperti plugin cache dengan defertag) mungkin tidak menggunakan wp_enqueue_scriptdan kemudian tidak akan digunakan *_loader_tag. Dapatkah Anda silahkan konfirmasi bahwa dengan potongan saya menambahkan, pada kode sumber situs Anda, yang custom.jsmemang memiliki type='text/javascript'masih?
David Sword

Tidak. Saya menghapus plugin cache total w3. 3/8 kesalahan menghilang, tetapi 5 masih tersisa.
The WP Intermediate

Anda dapat melacak sumber lima dan melihat apakah mungkin untuk mengedit tag. Saya berspekulasi lagi bahwa mereka mungkin tidak menggunakan wp_enqueue. Saya sarankan menambahkan UPDATE ke posting asli Anda untuk mencerminkan 5 keras kepala kiri, dengan referensi kode dan plugin - mungkin dapat membantu lebih banyak lagi.
David Sword

Pak, Diperbarui kesalahan dengan gambar kali ini.
The WP Intermediate

13

WordPress 5.3 memperkenalkan cara yang jauh lebih sederhana untuk mencapai ini. Dengan mendaftarkan dukungan tema untuk HTML 5 untuk scriptdan style, type=""atribut akan dihilangkan:

add_action(
    'after_setup_theme',
    function() {
        add_theme_support( 'html5', [ 'script', 'style' ] );
    }
);

Itu berhasil, terima kasih.
Michael Rogers

1
ini cara yang benar untuk melakukannya.
Ankit Chauhan

2
Yang bagus! Ini harus menjadi jawaban yang diterima.
Joe

3

Dapatkan ini dari plugin tanah / root. melakukan pekerjaan untuk sebagian besar.

    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 );
}

apakah Anda mencoba ini
The WP Intermediate

3

The style_loader_tagdan script_loader_tagpendekatan di atas terlihat seperti mereka harus bekerja untuk apa pun markup Wordpress menghasilkan, dalam kasus di mana tema / plugin menggunakan fungsi enqueue yang tepat.

Jika Anda memiliki plugin yang melanggar yang tidak bekerja sama (IIRC Jetpack adalah / adalah pelanggar kecuali versi yang lebih baru sejak ingatan saya telah merevisi ini!), Dan Anda bersikeras untuk menyelesaikan masalah ini meskipun faktanya pengunjung Anda kemungkinan besar tidak akan melakukannya. terpengaruh dengan cara apa pun (browser mereka akan membuat halaman menjadi baik-baik saja!), Anda selalu dapat habis-habisan dan menggunakan buffering output:

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 );
}

Berhati-hatilah karena walaupun ini adalah solusi, itu tidak terlalu efisien. Anda akan menjalankan preg_replace()seluruh "final" output dari Wordpress sebelum dikirim ke browser klien, untuk setiap permintaan.

Output buffering dinyalakan di awal ( wp_loadedhook), yaitu tepat ketika wp + theme + plugins + etc terisi penuh, dan dimatikan pada saat terakhir ( shutdownhook) yang menyala tepat sebelum PHP menghentikan eksekusi. Regex harus bekerja melalui segalanya , dan itu bisa menjadi banyak konten!

The style_loader_tagdan script_loader_tagpendekatan di atas hanya menjalankan regex pada string yang sangat kecil (tag sendiri) sehingga dampak kinerja diabaikan.

Saya kira jika Anda memiliki konten yang relatif statis dan menggunakan lapisan caching Anda bisa mencoba mengurangi masalah kinerja.

referensi manual php:


Ini adalah jawaban terbaik dan hanya berfungsi dengan baik tanpa kesalahan. Terima kasih sobat.
Ivijan Stefan Stipić

Satu-satunya solusi yang berfungsi
Timur Gafforov

Jika ada yang penasaran, WordPress sepertinya tidak menggunakan style_loader_tagatau script_loader_tagfilter saat menambahkan <script>tag untuk skrip inline . developer.wordpress.org/reference/classes/wp_scripts/…
firxworx

1

Ini sangat membantuku:

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

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


Yang dimaksud dengan pos OP di atas sebenarnya ada di sini: css-tricks.com/forums/topic/clean-up-script-tags-in-wordpress/… Catatan: skrip dihitamkan, tetapi dengan memilih teks, Anda dapat membacanya, dan itu seperti yang diposting di atas. LeoNovais tidak menawarkan penjelasan tambahan. Saya tidak tahu mengapa Trik CSS menghapus skripnya.
SherylHohman

1

Menurut kode dalam atribut type script-loader.php dihilangkan ketika dukungan tema html5 ditambahkan dengan argumen skrip dan gaya.

Lihat tautan di bawah ini:

function yourthemeprefix_theme_supportt() {
    add_theme_support(
        'html5',
        array(
            'script', // Fix for: The "type" attribute is unnecessary for JavaScript resources.
            'style',  // Fix for: The "type" attribute for the "style" element is not needed and should be omitted.
        )
    );
}
add_action( 'after_setup_theme', 'yourthemeprefix_theme_support' );

0

Membangun dari @ realmag77. Ini akan memanfaatkan plugin Autoptimize untuk dapat memfilter SEMUA atribut tipe tetapi tidak rusak jika tidak diinstal dan diaktifkan. Fallback berfungsi dengan baik tetapi skrip dan stylesheet yang dimuat melalui plugin tidak akan disaring. Saya tidak tahu bagaimana lagi untuk memfilter mereka tetapi melalui menggunakan bagian Autoptimize.

/* ==========================================
   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
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 );
}

Selamat datang di WPSE, Jeevan. Akan sangat membantu jika Anda memasukkan penjelasan dengan jawaban Anda tentang mengapa ini menyelesaikan masalah dan cara kerjanya.
butlerblog

0

Yah, karena saya sudah mencoba banyak kode lain dan yang disebutkan di sini, Masih ada jejak dari text/javascriptfile inti WordPress dan juga dari plugin lain dan kode javascript inline. Setelah menguji kode ini, semuanya telah diselesaikan:

// Remove w3 validator regarding "text/javascript"
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 );
}

Semoga bisa membantu :)

Terima kasih


-1

Jika Anda mengalami ini dengan WP Fastest Cache Anda dapat menghapus atribut type secara manual di plugin PHP script, ini seharusnya bekerja dengan plugin lain juga, tapi saya tidak tahu file di mana mereka menambahkan atribut type. Untuk WP Fastest Cache Anda harus pergi ke folder wp-content / plugins / wp-tercepat-cache / inc dan buka js-utilities.php kemudian cari teks / javascript dan hapus dengan atribut. Saya memiliki peringatan itu di W3 Validator dan memperbaikinya seperti itu, juga perlu diketahui bahwa ketika Anda akan memperbarui plugin yang dapat dikembalikan, untuk menonaktifkan pembaruan plugin Anda dapat mengedit wpFastestCache dan mengubah versi plugin ke sesuatu seperti ini 10.0.8.7.7


-1

Anda dapat mengoptimalkan kode HTML situs Anda seperti yang Anda inginkan dalam 2 langkah:

  • Pasang plugin ini: https://wordpress.org/plugins/autoptimize/
  • Aktifkan dalam opsi plugin 'Optimalkan Kode HTML?'
  • Dalam functions.php tema wordpress Anda saat ini berlaku kode berikutnya:

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

        $site_url = 'https://bulk-editor.com';    
        $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);

    dan jangan lupa untuk mengubah $ site_url ke tautan situs Anda tanpa memangkas pada akhirnya


-1

Anda dapat menggunakan fungsi di bawah ini untuk menghapus atribut tipe dari tautan dan tag skrip.

Rekatkan fungsi di bawah ini di functions.php untuk menghapus tipe = teks / css dari linktag

/ * Hapus atribut "'type = text / css'" dari stylesheet * /
function wpse51581_hide_type ($ src) {
    return str_replace ("type = 'text / css'", '', $ src);
}
add_filter ('style_loader_tag', 'wpse51581_hide_type');

================================================== =========================

Rekatkan fungsi di bawah ini di functions.php untuk menghapus type = 'text / javascript' dari script

// * Hapus tag jenis dari skrip dan gaya
add_filter ('script_loader_tag', 'codeless_remove_type_attr', 10, 2);
function codeless_remove_type_attr ($ tag, $ handle) {
    return preg_replace ("/ type = ['\"] text \ / (javascript | css) [' \ "] /", '', $ tag);
}

jawabannya benar tetapi masih ada yang memilih negatif
Infoconic
Dengan menggunakan situs kami, Anda mengakui telah membaca dan memahami Kebijakan Cookie dan Kebijakan Privasi kami.
Licensed under cc by-sa 3.0 with attribution required.