it-swarm.com.de

WENIGER CSS enqueue_style mit add_filter, um rel attribute zu ändern

Ich versuche, less css mit Wordpress zu verwenden.

Sie sollten einen Link zu Ihren .less-Dateien erstellen, wobei das rel-Attribut auf 'stylesheet/less' gesetzt ist. Aber ich kann nicht herausfinden, wie ich den Code ändern soll, den enqueue_style ausgibt.

Gibt es eine Möglichkeit, einen Filter anzuwenden und die Ausgabe zu beeinflussen?

BEARBEITEN: Wenn jemand neugierig ist, wie ich dazu gekommen bin, ist hier das Code-Snippet:

function enqueue_less_styles($tag, $handle) {
    global $wp_styles;
    $match_pattern = '/\.less$/U';
    if ( preg_match( $match_pattern, $wp_styles->registered[$handle]->src ) ) {
        $handle = $wp_styles->registered[$handle]->handle;
        $media = $wp_styles->registered[$handle]->args;
        $href = $wp_styles->registered[$handle]->src . '?ver=' . $wp_styles->registered[$handle]->ver;
        $rel = isset($wp_styles->registered[$handle]->extra['alt']) && $wp_styles->registered[$handle]->extra['alt'] ? 'alternate stylesheet' : 'stylesheet';
        $title = isset($wp_styles->registered[$handle]->extra['title']) ? "title='" . esc_attr( $wp_styles->registered[$handle]->extra['title'] ) . "'" : '';

        $tag = "<link rel='stylesheet' id='$handle' $title href='$href' type='text/less' media='$media' />";
    }
    return $tag;
}
add_filter( 'style_loader_tag', 'enqueue_less_styles', 5, 2);
8
cbaigorri

Ja, die endgültige Ausgabe der Style-Links wird durch den style_loader_tag-Filter geleitet.

5
Rarst

Ich habe eine Funktion erstellt, die die query () - Methode der WP_Dependancies-Klasse verwendet. Außerdem wird die Ausgabe nicht neu generiert, sondern es werden nur die erforderlichen Teile neu geschrieben.

Die Funktion greift auf das globale $ wp_styles-Objekt zu und führt eine Abfrage durch, um das Stylesheet-Objekt abzurufen. Mit der Regex wird der Quellcode überprüft, ob er eine .less-Datei enthält, und wenn dies wahr ist, wird das rel-Attribut entsprechend geändert. In meiner Funktion habe ich außerdem das -css-Suffix in der ID durch ein -less-Suffix ersetzt. Entfernen Sie einfach diese Zeile, wenn es Ihnen nicht gefällt.

function allow_less_stylesheets( $style_tag, $handle )
{
    global $wp_styles;

    $obj = $wp_styles->query( $handle );
    if( $obj === false )
    {
        return $style_tag;
    }
    if( !preg_match( '/\.less$/U', $obj->src ) )
    {
        return $style_tag;
    }

    // the current stylesheet is a LESS stylesheet, so make according changes
    $rel = isset( $obj->extra['alt'] ) && $obj->extra['alt'] ? 'alternate stylesheet' : 'stylesheet';
    $style_tag = str_replace( "rel='" . $rel . "'", "rel='stylesheet/less'", $style_tag );
    $style_tag = str_replace( "id='" . $handle . "-css'", "id='" . $handle . "-less'", $style_tag );
    return $style_tag;
}
2
flixos90

rel=stylesheet in rel=stylesheet/less in $tag Definition ändern .. auch rel=alternate stylesheet/less, funktioniert nicht ..

0
user32359