Contact Form 7 es un plugin muy popular entre los usuarios de WordPress que sirve para añadir formularios de contacto en sitios creados con WordPress. Es muy fácil de configurar y permite crear y personalizar formularios diferentes. Sin embargo, la mayoría de blogs y sitios corporativos lo usan en una sola página creada para contactar. Y si lo tenemos activo, el plugin añade su propio JavaScript y sus estilos CSS en el <head> de todas las páginas, sin discriminar cuales son las que realmente lo necesitan.
Esto crea una innecesaria carga de código y peso en todas las páginas del sitio. Así que vamos a aprender cómo desactivarlo en aquellas páginas donde no se necesita.
Tenemos dos opciones: la primera mediante uso de condicionales en el archivo functions.php de nuestro tema activo, la segunda mediante desactivación en wp-config.php y posterior activación solamente en las plantillas de páginas donde haya formularios:
Mediante uso de condicionales en functions.php
add_action( 'wp_print_scripts', 'deregister_cf7_javascript', 100 ); //eliminar Java Script de contact form 7 function deregister_cf7_javascript() { if ( !is_page('contacto') ) { wp_deregister_script( 'contact-form-7' ); } } //eliminar CSS de contact form 7 add_action( 'wp_print_styles', 'deregister_cf7_styles', 100 ); function deregister_cf7_styles() { if ( !is_page('contacto') ) { wp_deregister_style( 'contact-form-7' ); } }
De esta forma la condición que estamos poniendo es la siguiente:
si la página no es la página llamada «contacto» eliminar script y estilos css del plugin Contact Form 7
Obviamente donde pone ‘contacto’ debes poner el nombre de la página que contiene el formulario. O bien usar el ID de esta forma:
if ( !is_page(13) ) {
donde 13 sería el ID de la página que contiene el formulario.
Mediante desactivación en wp-config.php e inclusión en plantilla de página
La segunda, y mucho más limpia y completa, es la que propone la página oficial del plugin:
1. Primero controlamos en wp-config.php que no cargue ni el script ni el CSS añadiendo estas líneas de código:
define('WPCF7_LOAD_JS', false); define('WPCF7_LOAD_CSS', false);
2. Después los llamamos desde contact.php o cualquier otra plantilla de página del tema activo para que los cargue solo cuando existe un formulario:
<?php if ( function_exists( 'wpcf7_enqueue_scripts' ) ) { wpcf7_enqueue_scripts(); wpcf7_enqueue_styles(); } ?>
Necesario advertir que esta llamada debe hacerse antes de wp_head()
.
Más info: Contact Form 7
Hola, gracias por el post, muy bueno. Tengo una duda, si son varias páginas en las que se quiere añadir la excepción en el primer caso, como se hace? Con los id separados por comas? Saludos!
Gracias Juan, si tienes dudas, recuerda que en el codex tienes numerosos ejemplos,
aquí van dos que en teoría deberían funcionarte:
!is_page( array( 1, 'acerca-de', 'Contacto' ) );
!is_page( array(1, 2, 3) );
Esta parte me la puedes aclarar?
2. Después los llamamos desde contact.php o cualquier otra plantilla de página del tema activo para que los cargue solo cuando existe un formulario:
Yo tengo el formulario de contacto en http://www.blog.com/contacto
Donde busco contact.php?
Gracias por el tutorial, muy bien explicado
Gracias a tí Felipe por el feedback.
Hola tengo una version mejorar en base de su script que no necesita indicar que pagina es la que quiere desconectar o conectar, el mismo la detecta automáticamente.
if (!is_admin() && WPCF7_LOAD_JS) {
if (!function_exists('jclconsultor_wpcf7_scripts')){
function jclconsultor__wpcf7_scripts($content) {
$pos=strpos($content,'class="wpcf7"');
if ($pos===false){
if (WPCF7_LOAD_JS){
wp_deregister_script('contact-form-7');
wp_deregister_style('contact-form-7');
}
}
return $content;
}
add_filter('the_content','jclconsultor_wpcf7_scripts',99999);
}
}
Gracias, la probaremos!