[WordPress] Charger des scripts et feuilles de styles en fonction du contenu des billets

Dès lors que l’on commence à bloguer sérieusement, on s’intéresse à l’optimisation de ses blogs. L’une des premières choses à faire est de lancer la chasse aux ressources inutiles.

Les scripts sont particulièrement impliquées. Il n’est pas rare qu’un plugin mal codé charge un script ou deux, sans discernement. Or, potentiellement, ces scripts ne servent pas tout le temps, sur toutes les pages.

 
Le petit bout de code qui suit permet de charger un script JS en fonction du contenu d’un billet, un chargement conditionnel en quelques sortes :

add_action('wp_print_styles','load_scripts_if_contains');

function load_scripts_if_contains() {
    global $post;
    if (is_single() && strpos($post->post_content, 'unmotcle') !== false) {
        wp_enqueue_script('monscript');
        wp_enqueue_style('messtyles');
    }
}

Au préalable, il faudra avoir déclaré vos scripts et feuilles de styles :

wp_register_script( 'monscript', '/chemin/vers/votre/script/monscript.js');
wp_register_style('messtyles', '/chemin/vers/votre/script/messtyles.css');

Bien entendu, il faut utiliser des mots clés particuliers. Par exemple la présence d’une classe d’image wp-image peut vous permettre de charger une lightbox.

add_action('wp_print_styles','load_scripts_if_contains');

function load_scripts_if_contains() {
    global $post;
    if (is_single() && strpos($post->post_content, 'wp-image') !== false) {
        wp_enqueue_script('lightbox');
        wp_enqueue_style('lightbox');
    }
}

Très pratique pour ne pas charger inutilement un tas de ressources.