{"id":3304,"date":"2013-01-26T15:51:12","date_gmt":"2013-01-26T14:51:12","guid":{"rendered":"https:\/\/www.creativejuiz.fr\/blog\/?p=3304"},"modified":"2013-06-02T11:34:34","modified_gmt":"2013-06-02T09:34:34","slug":"astuce-wordpress-charger-fichiers-js-css-contact-form-7","status":"publish","type":"post","link":"https:\/\/www.creativejuiz.fr\/blog\/tutoriels\/astuce-wordpress-charger-fichiers-js-css-contact-form-7","title":{"rendered":"Astuce WordPress : charger les fichiers JS et CSS de Contact Form 7 uniquement si n\u00e9cessaire"},"content":{"rendered":"<p><a href=\"http:\/\/wordpress.org\/extend\/plugins\/contact-form-7\/\">Contact Form 7<\/a> est devenu l&rsquo;un des plugins de r\u00e9f\u00e9rence pour quiconque souhaite construire un formulaire enti\u00e8rement personnalisable sur WordPress. Comme tout plugin, il tente de r\u00e9pondre \u00e0 une probl\u00e9matique en englobant un maximum de contextes, aussi, les fichiers JS et CSS qu&rsquo;il embarque sont ins\u00e9r\u00e9s sur toutes les pages de votre site par d\u00e9faut.<!--more--><\/p>\n<h2>La probl\u00e9matique<\/h2>\n<p>Charger ces fichiers sur la totalit\u00e9 de vos pages web demande au visiteur des ressources inutiles.<br \/>\nL&rsquo;impact est moindre sur un visiteur qui poss\u00e8de une bonne connexion internet, mais \u00e0 l&rsquo;\u00e8re du mobile (entendez par l\u00e0, mobilit\u00e9, donc tablette, mini-tablette, smartphone etc.) et des connexions souvent moins bonnes que notre bon vieux 56k, la moindre \u00e9conomie est bonne \u00e0 prendre.<\/p>\n<p>Je ne sais pas si le probl\u00e8me est commun, mais comme je vois beaucoup d&rsquo;articles qui proposent de <a href=\"http:\/\/www.geekpress.fr\/wordpress\/astuce\/desactiver-javascript-css-contact-form-7-750\/\">d\u00e9sactiver les fichiers JS et CSS de Contact Form 7<\/a> (merci pour l&rsquo;astuce au passage&nbsp;!), j&rsquo;en vois beaucoup moins qui proposent de les charger uniquement en cas de besoin, ce qui permettrait de continuer \u00e0 b\u00e9n\u00e9ficier des fonctionnalit\u00e9s et styles de base du plugin.<\/p>\n<h2>Une solution ?<\/h2>\n<p>Il doit en exister des meilleures, mais pour le moment j&rsquo;en ai trouv\u00e9 une qui fonctionne plut\u00f4t bien.<br \/>\nCollez ce code \u00e0 la fin de votre fichier <code>functions.php<\/code>.<\/p>\n<pre class=\"code\"><code class=\"php boc-nogutter boc-nocontrols\">\/**\r\n * Contact Form 7 - Load files only if necessary\r\n *\/\r\n\r\nif (!function_exists('juiz_wpcf7_dequeue_scripts_styles')) {\r\n\tfunction juiz_wpcf7_dequeue_scripts_styles() {\r\n\t\tif ( WPCF7_LOAD_JS && WPCF7_LOAD_CSS ) {\r\n\t\t\tglobal $post;\r\n\t\t\tif ( !strpos($post->post_content, '[contact-form-7') ) {\r\n\t\t\t\twp_dequeue_script('contact-form-7');\r\n\t\t\t\twp_dequeue_style('contact-form-7');\r\n\t\t\t}\r\n\t\t}\r\n\t}\r\n\tadd_action( 'wp_enqueue_scripts', 'juiz_wpcf7_dequeue_scripts_styles' );\r\n}<\/code><\/pre>\n<p>Quelques explications s&rsquo;imposent peut-\u00eatre.<\/p>\n<p>Les constantes <code>WPCF7_LOAD_JS<\/code> et <code>WPCF7_LOAD_CSS<\/code> sont d\u00e9finies par le plugin lorsqu&rsquo;il est activ\u00e9. Elles retournent <code>true<\/code> lorsqu&rsquo;elles existent, <code>false<\/code> si un r\u00e9glage particulier est fait, et ne sont pas d\u00e9finies si le plugin n&rsquo;est pas activ\u00e9.<br \/>\nDu coup mon code propose d&rsquo;intervenir uniquement si le plugin est activ\u00e9, et si les fichiers demandent \u00e0 \u00eatre charg\u00e9s.<\/p>\n<p>Le reste du code v\u00e9rifie si on trouve le shortcode de Contact Form 7 dans le contenu, si ce <strong>n&rsquo;est pas<\/strong> le cas, alors on retire les fichiers du chargement gr\u00e2ce aux fonctions <code>wp_dequeue_script()<\/code> et <code>wp_dequeue_style()<\/code>.<\/p>\n<p>Il est possible d&rsquo;\u00eatre beaucoup plus pr\u00e9cis en v\u00e9rifiant si la constante CSS existe d&rsquo;une part pour d\u00e9sactiver uniquement CSS en cas de besoin, d&rsquo;autre part la JS pour ne d\u00e9sactiver que la JS.<br \/>\nPersonnellement je ne d\u00e9sactive pas l&rsquo;un sans l&rsquo;autre en g\u00e9n\u00e9rale \ud83d\ude42<\/p>\n<p>Je n&rsquo;ai pas encore trouv\u00e9 de probl\u00e8me \u00e0 cette mani\u00e8re de faire, mais j&rsquo;ai encore le nez dedans, donc n&rsquo;h\u00e9sitez pas \u00e0 commenter si vous trouvez \u00e0 redire&nbsp;! <del datetime=\"2013-04-21\">La seule limite c&rsquo;est le <code>preg_match()<\/code> qui s&rsquo;ex\u00e9cute sur chaque contenu, m&rsquo;enfin on a rien sans rien.<\/del><br \/>\n<ins datetime=\"2013-04-21\">Merci \u00e0 <a href=\"#comment-17861\">jb pour l&rsquo;optimisation<\/a><\/ins><\/p>\n","protected":false},"excerpt":{"rendered":"<p>Contact Form 7 est devenu l&rsquo;un des plugins de r\u00e9f\u00e9rence pour quiconque souhaite construire un formulaire enti\u00e8rement personnalisable sur WordPress. Comme tout plugin, il tente de r\u00e9pondre \u00e0 une probl\u00e9matique en englobant un maximum de contextes, aussi, les fichiers JS et CSS qu&rsquo;il embarque sont ins\u00e9r\u00e9s sur toutes les pages de votre site par d\u00e9faut.<\/p>\n","protected":false},"author":4,"featured_media":3307,"comment_status":"open","ping_status":"open","sticky":false,"template":"","format":"standard","meta":{"_acf_changed":false,"_bluesky_dont_syndicate":"","_bluesky_syndication_accounts":"","_bluesky_syndication_text":"","footnotes":""},"categories":[9,13],"tags":[437,228,539,540],"coauthors":[],"class_list":["post-3304","post","type-post","status-publish","format-standard","has-post-thumbnail","hentry","category-tutoriels","category-wordpress","tag-add_action","tag-astuce","tag-wp_dequeue_script","tag-wp_dequeue_style"],"acf":[],"aioseo_notices":[],"_links":{"self":[{"href":"https:\/\/www.creativejuiz.fr\/blog\/wp-json\/wp\/v2\/posts\/3304","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/www.creativejuiz.fr\/blog\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/www.creativejuiz.fr\/blog\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/www.creativejuiz.fr\/blog\/wp-json\/wp\/v2\/users\/4"}],"replies":[{"embeddable":true,"href":"https:\/\/www.creativejuiz.fr\/blog\/wp-json\/wp\/v2\/comments?post=3304"}],"version-history":[{"count":0,"href":"https:\/\/www.creativejuiz.fr\/blog\/wp-json\/wp\/v2\/posts\/3304\/revisions"}],"wp:featuredmedia":[{"embeddable":true,"href":"https:\/\/www.creativejuiz.fr\/blog\/wp-json\/wp\/v2\/media\/3307"}],"wp:attachment":[{"href":"https:\/\/www.creativejuiz.fr\/blog\/wp-json\/wp\/v2\/media?parent=3304"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/www.creativejuiz.fr\/blog\/wp-json\/wp\/v2\/categories?post=3304"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/www.creativejuiz.fr\/blog\/wp-json\/wp\/v2\/tags?post=3304"},{"taxonomy":"author","embeddable":true,"href":"https:\/\/www.creativejuiz.fr\/blog\/wp-json\/wp\/v2\/coauthors?post=3304"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}