WordPress : Comment mettre en file d’attente les scripts et les styles uniquement lorsqu’ils sont nécessaires ?

Publié par Jean-Michel le

J’ai créé une page basée sur ACF et la disposition des champs flexibles. Dans mon thème, j’ai des scripts JS comme la maçonnerie, fancybox, lazyload. Pour l’instant, j’utilise la norme wp_enqueue_styledans function.phple fichier. Existe-t-il un moyen intelligent de mettre les scripts en file d’attente uniquement si un certain bloc d’ACF est choisi, et une seule fois si ce bloc a été inséré plus tôt ?

Merci!

Solution n°1 trouvée

J’utilise ce qui suit pour mettre en file d’attente un script spécifique sur post.php, qui est déclenché par le admin_enqueue_scriptshook :

if ( in_array( get_current_screen()->base, [ 'post' ] ) ) {
    // Load scripts only on the post edit page.
    wp_enqueue_script( PLUGIN_NAME, PLUGIN_ROOT_URL . 'resources/js/script.js', [], PLUGIN_VERSION, false );
}

Au lieu de la vérification que je fais, vous pouvez récupérer le contenu du message et le scanner pour le bloc dont vous avez besoin. Ainsi:

if ( is_singular() ) {
    $post = get_post();
    if ( $post && has_blocks( $post ) ) {
        $blocks = parse_blocks( $post->post_content );
        $postContainsBlock = ... // Search $blocks array for the required block.

        if ( $postContainsBlock ) {
            wp_enqueue_script( PLUGIN_NAME, PLUGIN_ROOT_URL . 'resources/js/script.js', [], PLUGIN_VERSION, false );
        }
    }
}

Remarque : Je n’ai pas testé le code ci-dessus.

Catégories : Wordpress

Jean-Michel

Jean-Michel est en charge de la partie blog du site. Il met en place la stratégie de contenu et répond aux questions fréquentes sur Wordpress.

0 commentaire

Laisser un commentaire

Avatar placeholder

Votre adresse e-mail ne sera pas publiée. Les champs obligatoires sont indiqués avec *