Shortcodes, CSS und JS nur wenn nötig einbinden

Vor kurzem wollte ich eine neue Funktionalität für mein Blog haben, und ich wollte dafür ein neues plugin hinzufügen. Also habe ich verschiedene getestet und bin auf etwas überraschendes gestoßen: zumindest eines der plugins, die ich mir angeschaut habe, wollte seine CSS-Datei und jquery auf jeder Seite meines Blogs laden. Nach einigen weiteren Tests wurde mir dann klar dass dieses Verhalten weit verbreitet ist.

Und das ist nicht gut so. Jquery ist durchaus klein, CSS Stile normalerweise auch. Aber das ist kein Grund sie jedem Besucher beim Aufruf irgend einer beliebigen Seite aufzuzwingen. Ein paar weitere Nachforschungen haben keine einfache Lösung ergeben, also habe ich meine eigene geschrieben.

Normalerweise bindet ein plugin seine Dateien über die wp_print_styles oder wp_print_scripts Aktionen ein:

<?php
add_action( 'wp_print_styles', 'deinplugin_css_einbinden' );function deinplugin_css_einbinden() {
    echo $csslink;
}

Nimm statt dessen etwas wie folgendes:

<?php
add_action( 'wp_print_styles', 'deinplugin_css_einbinden' );function deinplugin_css_einbinden() {
    // Prüfen ob der shortcode im Inhalt der Seite vorkommt
    global $post;
    if ( strstr( $post->post_content, '{deinshortcode}' ) ) {
        echo $csslink;
    }
}
?>

Das ist schon alles. Bitte fügt eure CSS- und JavaScript-Dateien nicht jeder Seite meines Blogs hinzu.

Update: Dieser exzellente Artikel stellt eine verbesserte Lösung dieses Problems dar.

Update 2: Die bisher beste Lösung um JavaScript zu laden

0 Kommentare

Antworte

Antwort abbrechen
Markdown. Syntax highlighting with <code lang="php"><?php echo "Hello, world!"; ?></code> etc.
DjangoBitcoinTuxHTML5 badgeUpset confused bugHackerMoneyUpset confused bugMoneygit