WordPress tarafından eklenen komut dosyasından ve stil etiketlerinden type özniteliğini kaldır


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

Bu hatalar W3C tarafından yeni bir giriş niteliğindedir ve sadece son 3-4 gün içinde sürünmeye başlamıştır.resim açıklamasını buraya girin

Bunun gibi komut dosyaları sıralıyoruz →

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

Bunu bir şekilde yukarıdaki sıkma yönteminden düzeltebilir miyiz?

Güncelle →

bunlar asıl hatalardır. Kırmızı kutuda W3 toplam önbellekten geliyor.resim açıklamasını buraya girin


5
W3C doğrulayıcı Wordpress siteleri veya herhangi bir popüler cms için nadiren hatasız olarak döner. her yıl daha da kötüye gidiyor gibi görünüyor. Doğrulayıcı (imho) bazı temel hataları ortaya çıkarmak için araçlar olarak kullanılmalıdır ( altetiketleri unutmak veya bir etiketi kapatmayı unutmak gibi ), ancak eskisi gibi standart olarak ele alınmamalıdır.
David Sword

2 Aralık 017'den sonra tanıttılar. Bundan önce temam hatasız / uyarısızdı. Onlardan kurtulmanın bir yolu olmalı.
WP Orta Düzey

1
içine bakmak script_loader_tagkanca, bir yapmak mümkün olabilir str_replace()bunları kaldırmak için.
David Sword

Bunların sadece hatalar değil, uyarılar olduğunu belirtmeye değer . Siteniz yine de doğrulanacak.
swissspidy

Aşağıdaki yanıtı da kontrol edebilirsiniz - stackoverflow.com/a/53380692/2611955
Jahirul Islam Mamun

Yanıtlar:


16

type='*'Nitelikleri ve değerleri wp_enqueueilgili *_loader_tagkancaları kullanarak 'ed komut dosyalarından ve stillerden kaldırabilirsiniz .

Aşağıdakiler benim için çalıştı:

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

Bunu denedim, ancak sorunu çözmedi. Belki biraz manipülasyona ihtiyacımız olabilir.
WP Orta Düzey

1
Bunu spekülasyon bazı betiklerinizden eklentileri (olanlar eklentisi cache benzeri deferetiketi) kullanılarak olmayabilir wp_enqueue_scriptve sonra kullanmak ister *_loader_tag. Snippet'im eklendiğinde, sitenizin kaynak kodunda bunun hala custom.jsgeçerli olduğunu teyit edebilir misiniz type='text/javascript'?
David Sword

Hayır. W3 toplam önbellek eklentisini sildim. 3/8 hatası kayboldu, ancak 5 tanesi hala kaldı.
WP Orta Düzey

Beşinin kaynağını izleyebilir ve etiketleri düzenlemenin mümkün olup olmadığını görebilirsiniz. Muhtemelen kullanmadıklarını tekrar tahmin ediyorum wp_enqueue. Ben inatçı 5 sol kod ve eklenti referansları ile yansıtmak için orijinal yazı bir UPDATE eklemenizi öneririz - biraz daha yardımcı olabilir.
David Sword

Efendim, hataları bu kez güncelledi.
WP Intermediate

14

WordPress 5.3, bunu başarmak için oldukça basit bir yol sunar. İçin HTML 5 için tema desteği kaydederek scriptve style, type=""nitelik atlanır:

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

Teşekkürler çalıştı.
Michael Rogers

1
bunu yapmanın doğru yolu budur.
Ankit Chauhan

2
Güzel bir! Bu kabul edilen cevap olmalı.
Joe

3

Bunu toprak / kök eklentisinden aldım. işi çoğunlukla yaptı.

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

u denediniz mi
The WP Intermediate

3

Yukarıdaki style_loader_tagve script_loader_tagyaklaşımları, tema / eklentinin uygun enqueue işlevlerini kullandığı durumlarda, Wordpress'in oluşturduğu biçimlendirme için çalışması gerektiği gibi görünüyor.

İşbirliği yapmayan rahatsız edici eklentileriniz varsa (IIRC Jetpack, hatırladığımdan bu yana daha yeni bir sürüm olmadığı sürece bir suçludur!) Ve ziyaretçilerinizin büyük olasılıkla olmamasına rağmen bu sorunu çözme konusunda kararlısınız herhangi bir şekilde etkilenir (tarayıcıları sayfayı iyi hale getirir!), her zaman her şeye gidebilir ve çıktı arabelleğini kullanabilirsiniz:

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

Bu bir çözüm olsa da, çok etkili olmadığı konusunda uyarılmalıdır. preg_replace()Her istek için, istemcinin tarayıcısına gönderilmeden önce Wordpress'in tüm "son" çıktısında çalışıyordunuz .

Çıktı tamponlaması başlangıçta ( wp_loadedkanca) açılır , yani wp + theme + plugins + etc tam olarak yüklendiğinde ve shutdownPHP'nin kapatılmasından hemen önce tetiklenen son anda ( kanca) kapatılır. Normal ifade her şeyden geçmelidir ve bu çok fazla içerik olabilir!

Yukarıdaki style_loader_tagve script_loader_tagyaklaşımları, regex'i çok küçük bir dizede (etiketin kendisi) çalıştırır, böylece performans etkisi önemsizdir.

Göreceli olarak statik içeriğiniz varsa ve önbellek katmanı kullandıysanız, performans endişesini azaltmaya çalışabilirsiniz.

php manuel referanslar:


Bu en iyi cevaptır ve sadece hatasız düzgün çalışır. Teşekkürler dostum.
Ivijan Stefan Stipić

Tek çalışma çözümü
Timur Gafforov

Kimse meraklıysa, WordPress satır içi komut dosyaları için etiket eklerken style_loader_tagveya script_loader_tagfiltrelerini kullanmıyor gibi görünüyor . developer.wordpress.org/reference/classes/wp_scripts/…<script>
firxworx

1

Bu bana çok yardımcı oldu:

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

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


Yukarıdaki OP'nin gönderme yaptığı aslında buradadır: css-tricks.com/forums/topic/clean-up-script-tags-in-wordpress/… Not: komut dosyası karartılır, ancak metni seçerek okuyun ve yukarıda da belirtildiği gibi. LeoNovais herhangi bir ek açıklama sunmamaktadır. CSS Tricks'in senaryosunu neden kararttığını bilmiyorum.
SherylHohman

1

Script-loader.php türündeki koda göre , html5 tema desteği kod ve stil bağımsız değişkenleriyle eklendiğinde atlanır.

Aşağıdaki bağlantılara bakın:

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

@ Realmag77 'in oluşturulması. Bu, TÜM tür özniteliklerini filtreleyebilmek için Autoptimize eklentisinden yararlanır, ancak yüklü ve etkin değilse kırılmaz. Yedek iyi çalışır, ancak eklentiler aracılığıyla yüklenen komut dosyaları ve stil sayfaları filtrelenmez. Onları nasıl filtreleyeceğimi bilmiyorum ama Autoptimize bölümünü kullanarak.

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

WPSE'ye hoş geldiniz Jeevan. Bunun sorunu neden çözdüğüne ve nasıl çalıştığına dair cevabınıza bir açıklama eklerseniz yardımcı olur.
butlerblog

0

Peki, çünkü tonlarca diğer kodları ve burada belirtilenleri denedim text/javascript, WordPress çekirdek dosyalarından ve diğer eklenti ve satır içi javascript kodlarından hala izler var . Bu kodu test ettikten sonra her şey çözüldü:

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

Umarım biraz yardımcı olabilir :)

teşekkür ederim


-1

WP Fastest Cache ile bunu yaşıyorsanız, eklenti PHP betiğinde type niteliğini manuel olarak silebilirsiniz, bu diğer eklentilerle de çalışmalıdır, ancak type özelliğini ekledikleri dosyaları bilmiyorum. WP En Hızlı Önbellek için wp-content / plugins / wp-fastest-cache / inc klasörüne gitmeli ve js-utilities.php dosyasını açmalı, ardından text / javascript'i aramalı ve öznitelikle silmelisiniz. W3 Validator üzerinde bu uyarıyı aldım ve bu şekilde düzelttim, eklentiyi güncellediğinizde bu değişikliğin geri alınabileceğini unutmayın, eklenti güncellemesini devre dışı bırakmak için wpFastestCache'i düzenleyebilir ve eklenti sürümünü böyle bir şeye değiştirebilirsiniz. 10.0.8.7.7


-1

Sitenizin HTML kodunu 2 adımda istediğiniz gibi optimize edebilirsiniz:

  • Bu eklentiyi yükle: https://wordpress.org/plugins/autoptimize/
  • Eklenti seçeneklerinde 'HTML Kodu optimize edilsin mi?'
  • Geçerli wordpress temanızın function.php dosyasında sonraki kodu uygulayın:

    add_filter ('autoptimize_html_after_minify', işlev ($ 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);

    ve sonunda eğik çizgi olmadan $ site_url adresini site bağlantınızla değiştirmeyi unutmayın


-1

Bağlantı ve komut dosyası etiketlerinden tür niteliklerini kaldırmak için aşağıdaki işlevleri kullanabilirsiniz.

linkEtiketlerdeki type = text / css öğesini kaldırmak için aşağıdaki işlevi function.php dosyasına yapıştırın

/ * Stil sayfasından "'type = text / css'" niteliğini kaldır * /
işlev wpse51581_hide_type ($ src) {
    return str_replace ("type = 'text / css'", '', $ src);
}
add_filter ('style_loader_tag', 'wpse51581_hide_type');

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

Type = 'text / javascript' türünü kaldırmak için aşağıdaki işlevi function.php dosyasına yapıştırın script

// * Komut dosyası ve stilde tür etiketini kaldır
add_filter ('script_loader_tag', 'codeless_remove_type_attr', 10, 2);
işlev codeless_remove_type_attr ($ tag, $ handle) {
    return preg_replace ("/ type = ['\"] metin \ / (javascript | css) [' \ "] /", '', $ etiketi);
}

cevap doğru ama yine de birisi olumsuz oy kullandı
Infoconic
Sitemizi kullandığınızda şunları okuyup anladığınızı kabul etmiş olursunuz: Çerez Politikası ve Gizlilik Politikası.
Licensed under cc by-sa 3.0 with attribution required.