Optimiser le chargement des ressources avec Contact Form 7

Contact Form 7 est une extension pour WordPress qui permet de générer des formulaires de contact de manière relativement simple. Ensuite, il nous suffit d’injecter le formulaire dans la page désirée grâce à un simple shortcode.

J’utilise parfois ce plugin pour des questions de simplicité, bien que généralement je code directement le formulaire à ma sauce.

Cette extension offre de nombreux avantages mais présente également quelques défauts dont un qui me parait pourtant facile à corriger. Contact Form 7 charge son script et son style sur toutes les pages du site alors que l’on en a besoin que sur les pages contenant un formulaire.

Nota : J’ai trouvé des solutions ici ou sur internet, mais je ne trouve pas celle que j’utilise et qui me paraît bien plus robuste et beaucoup plus simple. C’est donc pour cela que j’ai décidé d’écrire ce post.

Ma solution consiste à vérifier si la page contient le shortcode contact-form-7 grâce à la fonction intégrée de WordPress has_shortcode(). Ce test doit bien évidemment être fait avant que les scripts et styles soient insérés. Dans mon cas, je le vérifie au cours de l’action wp alors que nous disposons déjà du contenu de la page ou de l’article.

Ensuite, s’il s’avère que le shortcode n’existe pas, il suffit de retirer les actions wpcf7_enqueue_styles et wpcf7_enqueue_scripts (actions propres au plugin Contact Form 7) qui ont pour rôle de charger les ressources de l’extension.

Voici le code :

function cf7unloaded_deregister_contact_form() {
    global $post;
    if ( ! has_shortcode( $post->post_content, 'contact-form-7' ) ) {
        remove_action('wp_enqueue_scripts', 'wpcf7_enqueue_styles');
        remove_action('wp_enqueue_scripts', 'wpcf7_enqueue_scripts');
    }
}
add_action( 'wp', 'cf7unloaded_deregister_contact_form');

En résumé, vous voyez qu’il nous suffit de moins de 10 lignes de code pour résoudre le problème de manière automatique.

Si vous préférez, voici le plugin sur GitHub :

CF7 Unloaded

1 thoughts on “Optimiser le chargement des ressources avec Contact Form 7

  1. Strategio

    Les autres solutions recherche un slug ce qui impose de le coder en dur… pas vraiment pratique !

Répondre

Votre adresse email ne sera jamais publiée.

Vous pouvez utiliser les balises HTML et attributs suivants : <a href="" title=""> <abbr title=""> <acronym title=""> <b> <blockquote cite=""> <cite> <code> <del datetime=""> <em> <i> <q cite=""> <s> <strike> <strong>

*