Attribut zum Link-Tag hinzufügen, das durch wp_register_style generiert wird?

Lesezeit: 4 Minuten

Benutzer-Avatar
Benutzer8737780

Meine ursprüngliche Frage wurde hier beantwortet: Google Fonts geben an: Auf der angeforderten Ressource ist kein Header „Access-Control-Allow-Origin“ vorhanden.

Gibt es eine Möglichkeit, das data-noprefix-Attribut zu meinem Google Fonts-Link-Tag hinzuzufügen?

Meine functions.php sieht so aus:

wp_register_script( 'prefixfree', get_template_directory_uri().'/js/prefixfree.min.js', array( 'jquery' ) );
wp_enqueue_script( 'prefixfree' );

wp_register_style( 'google-fonts', 'http://fonts.googleapis.com/css?family=Source+Sans+Pro:300,300italic,400,400italic,600,600italic,700,700italic', '', '', 'all' );
wp_enqueue_style( 'google-fonts' );

Das hat bei mir funktioniert:

add_filter( 'style_loader_tag', 'add_noprefix_attribute', 10, 2 );

function add_noprefix_attribute($link, $handle) {
    if( $handle === 'google-fonts' ) {
        $link = str_replace( '/>', 'data-noprefix />', $link );
    }
    return $link;
}

style_loader_tag ist eine offizielle WordPress-API, siehe Dokumentation: https://developer.wordpress.org/reference/hooks/style_loader_tag/

apply_filters( 'style_loader_tag', $html, $handle, $href, $media )
Filtert das HTML-Link-Tag eines eingereihten Stils.

Stellen Sie zuerst Ihre Stylesheets in die Warteschlange

Weitere Informationen finden Sie in der Dokumentation: https://developer.wordpress.org/reference/functions/wp_enqueue_style/

function add_styles() {
    // Example loading external stylesheet, could be used in both a theme and/or plugin
    wp_enqueue_style( 'font-awesome-5', 'https://use.fontawesome.com/releases/v5.5.0/css/all.css', array(), null );

    // Example theme
    wp_enqueue_style( 'font-awesome-5', get_theme_file_uri( '/assets/css/fontawesome.min.css' ), array(), null );

    // Example plugin
    wp_enqueue_style( 'font-awesome-5', plugins_url( '/assets/css/fontawesome.min.css', __FILE__ ), array(), null );
};
add_action( 'wp_enqueue_scripts', 'add_styles' );

Das $handle ist 'font-awesome-5'

Ich tue null damit es keine Versionsnummer gibt. Auf diese Weise wird es zwischengespeichert.

Einfacher String-Ersatz

Ein einfaches str_replace reicht aus, um das zu erreichen, was Sie wollen, siehe Beispiel unten

function add_font_awesome_5_cdn_attributes( $html, $handle ) {
    if ( 'font-awesome-5' === $handle ) {
        return str_replace( "media="all"", "media="all" integrity='sha384-B4dIYHKNBt8Bc12p+WXckhzcICo0wtJAoU8YZTY5qE0Id1GSseTk6S+L3BlXeVIU' crossorigin='anonymous'", $html );
    }
    return $html;
}
add_filter( 'style_loader_tag', 'add_font_awesome_5_cdn_attributes', 10, 2 );

Fügen Sie verschiedene Attribute hinzu

Nachfolgend ein Beispiel zum Hinzufügen verschiedener Attribute zu (mehreren) verschiedenen Stylesheets

function add_style_attributes( $html, $handle ) {

    if ( 'font-awesome-5' === $handle ) {
        return str_replace( "media="all"", "media="all" integrity='sha384-B4dIYHKNBt8Bc12p+WXckhzcICo0wtJAoU8YZTY5qE0Id1GSseTk6S+L3BlXeVIU' crossorigin='anonymous'", $html );
    }

    if ( 'another-style' === $handle ) {
        return str_replace( "media="all"", "media="all" integrity='blajbsf' example", $html );
    }

    if ( 'bootstrap-css' === $handle ) {
        return str_replace( "media="all"", "media="all" integrity='something-different' crossorigin='anonymous'", $html );
    }

    return $html;
}
add_filter( 'style_loader_tag', 'add_style_attributes', 10, 2 );

Fügen Sie allen Stilen Attribute hinzu

Unten ein Beispiel, um die gleichen Attribute zu mehr als einem Stylesheet hinzuzufügen

function add_attributes_to_all_styles( $html, $handle ) {

        // add style handles to the array below
        $styles = array(
            'font-awesome-5',
            'another-style',
            'bootstrap-css'
        );

        foreach ( $styles as $style ) {
            if ( $style === $handle ) {
                return str_replace( "media="all"", "media="all" integrity='sha384-B4dIYHKNBt8Bc12p+WXckhzcICo0wtJAoU8YZTY5qE0Id1GSseTk6S+L3BlXeVIU' crossorigin='anonymous'", $html );
            }
        }

        return $html;
}
add_filter( 'style_loader_tag', 'add_attributes_to_all_styles', 10, 2 );

script_loader_tag

Ich möchte auch das script_loader_tag erklären, weil das auch praktisch ist, aber diese API funktioniert in Kombination mit wp_enqueue_script.

Die script_loader_tag-API ist fast gleich, nur einige kleine Unterschiede, siehe Dokumentation: https://developer.wordpress.org/reference/hooks/script_loader_tag/

apply_filters( 'script_loader_tag', $tag, $handle, $src )
Filtert das HTML-Skript-Tag eines in die Warteschlange eingereihten Skripts.

Unten ein Beispiel zum Zurückstellen eines einzelnen Skripts

function add_defer_jquery( $tag, $handle ) {
    if ( 'jquery' === $handle ) {
        return str_replace( "src", "defer src", $tag );
    }
    return $tag;
}
add_filter( 'style_loader_tag', 'add_defer_jquery', 10, 2 );

Unten ein Beispiel, um mehr als ein Skript zu verschieben

function add_defer_attribute( $tag, $handle ) {

    // add script handles to the array below
    $scripts_to_defer = array(
        'jquery',
        'jquery-migrate',
        'bootstrap-bundle-js'
    );

    foreach ( $scripts_to_defer as $defer_script ) {
        if ( $defer_script === $handle ) {
            return str_replace( "src", "defer src", $tag );
        }
    }

    return $tag;
}
add_filter( 'script_loader_tag', 'add_defer_attribute', 10, 2 );

Also habe ich beide API’s erklärt style_loader_tag und script_loader_tag. Und ich habe einige Beispiele für beide APIs gegeben. Ich hoffe, dass dies für viele Leute da draußen nützlich ist. Ich habe Erfahrung mit beiden APIs.

1352700cookie-checkAttribut zum Link-Tag hinzufügen, das durch wp_register_style generiert wird?

This website is using cookies to improve the user-friendliness. You agree by using the website further.

Privacy policy