Para mejorar la velocidad de mi web, me han comentado que puedo cambiar algo dentro de contact form 7 para que no cargue en cada visita si no solo cuando sea necesario.
Me dan este link con información Contenido solo visible a usuarios registrados
Hola
La idea sería que sólo cargues los estilos y scripts de contact form al cargar la página de contacto.
El código usualmente lo agregas en el archivo functions.php de tu theme.
Contenido solo visible a usuarios registrados
Saludos.
Hola Jhon; muchas gracias me queda mucho mas claro, una cosa mas, esto podría hacerlo directamente introduciendo el codigo atraves de añadir un nuevo codigo con el plug in Code Snippets, y poniendo en etiquetas al final, functions, php?
Hola
Supongo que te refieres a este plugin:
https://wordpress.org/plugins/code-snippets/
Si, efectivamente puesde usarlo sin problemas ya que el código usa Hooks, sin embargo sólo será necesario correr el código en el front-end del sitio (ver imagen adjunta de la documentación del plugin)
Saludos.
Buenos días! También me gustaría evitar que Contact Form cargue en cada visita de mi tienda online para mejorar su velocidad. He leído el post, pero me surgen algunas dudas. A ver si me las podéis resolver si no es molestia.
De todas las posibilidades que hay, yo quiero que automáticamente, a través del código, detecte en qué páginas hay formulario (/contacto, registro de cliente nuevo, compra, etc.) ¿Solo tengo que introducir un código? ¿Cuál sería?
Y segundo, ¿solo tengo que introducirlo exclusivamente en el functions.php? ¿En qué lugar exacto? Porque introduje uno al final del todo a modo de prueba y me petó la web
Url de mi sitio: https://www.tutiendadealfombras.com/
GRACIAS!!!
Hola Diana.
Lo primero sería añadir el siguiente código al final del archivo functions.php paar que no cargue los archivo JS y CSS de Contact
add_filter( 'wpcf7_load_js', '__return_false' );
add_filter( 'wpcf7_load_css', '__return_false' );
El siguiente paso sería indicar en qué páginas quieres que carguen esos archivos:
Un ejemplo sería el siguiente:
function deregister_cf7_js() {
if ( !is_page(array( 'contacto', 'presupuesto', 'index' ) )) {
wp_deregister_script( 'contact-form-7');
}
}
add_action( 'wp_print_scripts', 'deregister_cf7_js' );
function deregister_ct7_styles() {
if ( !is_page(array( 'contacto', 'presupuesto', 'index' ) )) {
wp_deregister_style( 'contact-form-7');
}
}
add_action( 'wp_print_styles', 'deregister_ct7_styles');
Tienes que modificar el slug por el de las páginas donde quieres que carguen " if ( !is_page(array( 'contacto', 'presupuesto', 'index' ) "
Lo tienes que hacer tanto para los JS como para los CSS " function deregister_cf7_js() " " function deregister_ct7_styles() "
El slug lo puedes localizar editando las páginas donde tienes los formularios:
Los dos códigos que te indique puedes añadirlos al final del archivo functions.php
Un saludo
Muchas gracias, Pepe!!!! Perdona mi torpeza, pero me surgen algunas cuestiones
a) ¿El código lo tengo que añadir al final de la última } del archivo functions.php?
b) ¿Quedaría así?
}
add_filter( 'wpcf7_load_js', '__return_false' );
add_filter( 'wpcf7_load_css', '__return_false' );
function deregister_cf7_js() {
if ( !is_page(array( 'contacto', 'presupuesto', 'index' ) )) {
wp_deregister_script( 'contact-form-7');
}
}
add_action( 'wp_print_scripts', 'deregister_cf7_js' );
function deregister_ct7_styles() {
if ( !is_page(array( 'contacto', 'presupuesto', 'index' ) )) {
wp_deregister_style( 'contact-form-7');
}
}
add_action( 'wp_print_styles', 'deregister_ct7_styles');
c) El problema de los slugs, es que al ser tienda online creo que hay algunas páginas que no son "editables", sino que van por .php (como registro de nuevo usuario, carrito de la compra, etc...) ¿Si me falta algún slugs qué puede pasar? ¿No había una opción de código que detectaba automáticamente las páginas que tenían ContactForm o algo así?
Disculpa mi torpeza de nuevo. Gracias por todo!
Perdona. Corrijo. Mi archivo functions.php actualmente termina así:
add_action( 'wp_enqueue_scripts', 'DLVJ_enqueue_scripts', 30 );
Hola
Agrega el código simplemente a partir de la siguiente línea
PD: En tu código anterior hay una llave que no tiene inicio, no se si es un error al copiar el código pero no debería ir ya que no forma parte del código
}
Saludos.
Mil gracias. ¿Entonces debería quedar así?
add_action( 'wp_enqueue_scripts', 'DLVJ_enqueue_scripts', 30 ); ((este es la última línea del archivo actual)) add_filter( 'wpcf7_load_js', '__return_false' );
add_filter( 'wpcf7_load_css', '__return_false' );
function deregister_cf7_js() {
if ( !is_page(array( 'contacto**', 'presupuesto**', 'index**' ) )) {
wp_deregister_script( 'contact-form-7');
}
}
add_action( 'wp_print_scripts', 'deregister_cf7_js' );
function deregister_ct7_styles() {
if ( !is_page(array( 'contacto**', 'presupuesto**', 'index**' ) )) {
wp_deregister_style( 'contact-form-7');
}
}
add_action( 'wp_print_styles', 'deregister_ct7_styles');
Una última cosa (perdonad mi ignorancia)
Una duda sobre los slugs, ¿los posts del blog que tengan permitidos la opción de dejar comentarios también hay que indicar su url una a una? ¿Y para los pots que introduzca en un futuro?
Hola,
Todo parece ser correcto, solo que no entiendo por qué agregas los ** aquí:
if ( !is_page(array( 'contacto**', 'presupuesto**', 'index**' ) )) {
Una duda sobre los slugs, ¿los posts del blog que tengan permitidos la opción de dejar comentarios también hay que indicar su url una a una? ¿Y para los pots que introduzca en un futuro?
Sí, es correcto. Ya que el script que estás insertando valida mediante un arreglo o lista de slugs de posts y paginas permitidas si los scripts de Contact Form deben o no cargarse.
Saludos 🙂
Gracias a todos! Me siguen surgiendo algunas dudas. Perdonad las molestias.
Os cuento:
Los *** los he colocado porque sé que los slugs esos tendría que cambiarlos
Pero la cuestión es: para https://tutiendadealfombras.com/envio-y-devoluciones/#login-popup ¿qué slug tendría que poner?
Y por último, ¿los comentarios, registros de nuevos usuarios... van también por contact form? ¿O simplemente es el de /contacto? Es que poner los slugs de los artículos de mi blog, uno a uno, es un trabajazo.
Gracias!
Hola Diana.
Solo tienes que indicar en qué páginas quieres que carguen, es decir solo añade los slug de las páginas donde tienes algún formulario de Contact Form.
En la página que indicas no hay ningún formulario a si que no tienes que añadir nada.
Si repasas la contestación que te di antes veras que primero añadimos dos lineas de código:
add_filter( 'wpcf7_load_js', '__return_false' );
add_filter( 'wpcf7_load_css', '__return_false' );
Estos códigos lo que hacen es que no carguen los archivos en ninguna página, es decir, si solo dejas esos códigos los formularios cargarian sin estilos y para que caguen añadimos el los siguientes bloques que de código, uno para los archivos JS
function deregister_cf7_js()
y otro para los archivos CSS
function deregister_ct7_styles()
En esos bloques es donde tienes que añadir los slug de las páginas que sí que tienen algún formulario de Contact Form.
¿los comentarios, registros de nuevos usuarios... van también por contact form?
En principio no, solo tienes que ir a Contacto y ver los formularios que tienes creados, esos serian los que tienes que añadir.
Un saludo
¡¡Muchas gracias a todos!! Así ha quedado el código (pegado al final del todo). ¿Estaría todo correcto, verdad?
add_filter( 'wpcf7_load_js', '__return_false' );
add_filter( 'wpcf7_load_css', '__return_false' );
function deregister_cf7_js() {
if ( !is_page(array( 'contacto', 'finalizar-compra-2', 'mi-cuenta' ) )) {
wp_deregister_script( 'contact-form-7');
}
}
add_action( 'wp_print_scripts', 'deregister_cf7_js' );
function deregister_ct7_styles() {
if ( !is_page(array( 'contacto', 'finalizar-compra-2', 'mi-cuenta' ) )) {
wp_deregister_style( 'contact-form-7');
}
}
add_action( 'wp_print_styles', 'deregister_ct7_styles');