Pregunta

Me gustaría hacer que un complemento restringiera su carga de hojas de estilo CSS y archivos JavaScript JS a solo aquellas páginas para las que se necesitan.

Un ejemplo para mi pregunta es el complemento Formulario de contacto 7 que he usado para crear un formulario en una página en mi sitio (el "contáctame"Página). Sin embargo, agrega las siguientes líneas a cada página/publicación en el sitio web:

<link rel='stylesheet' id='contact-form-7-css'  href='http://www.r-statistics.com/wp-content/plugins/contact-form-7/styles.css?ver=2.3.1' type='text/css' media='all' /> 

<script type='text/javascript' src='http://www.r-statistics.com/wp-content/plugins/contact-form-7/scripts.js?ver=2.3.1'></script> 

Esto me hace sospechar que este complemento está afectando el tiempo de carga de mi sitio, para una extensión que me interesa en una sola página en el sitio.

Por lo tanto, mi pregunta es ¿cómo puedo eliminar estas líneas adicionales de todas las páginas, excepto la página "Contáctame" pero sin desactivar el complemento?

¿Fue útil?

Solución

Los estilos y los scripts siempre están configurados por las funciones wp_enqueue_script() y wp_enqueue_style(), que tienen que estar vinculados a un gancho de acción particular para funcionar. Eché un vistazo dentro del Formulario 7 de contacto, y parece que está usando etiquetas de acción de wpcf7_enqueue_scripts y wpcf7_enqueue_styles Para agregarlos al wp_print_scripts y wp_print_styles manos.

Entonces, lo que necesitas hacer es desaprobar los scripts y estilos de cada página pero su página de contacto. los wp_head Acción dispara antes del script y las acciones de los estilos, por lo que deberá agregar algo como esto a las funciones de su tema.php archivo:

function remove_wpcf7_extras() {
    remove_action('wp_print_scripts', 'wpcf7_enqueue_scripts');
    remove_action('wp_print_styles', 'wpcf7_enqueue_styles');
}

if( ! is_page('contact me') ) {
    add_action('wp_head', 'remove_wpcf7_extras');
}

los is_page () la función volverá true Cuando está en la página de contacto (suponiendo que el nombre sea "contácteme") ... también puede usar la babosa de la página y la identificación de la página para el filtro. En todas las demás páginas, la if() condicional agregará la función de eliminación de script/estilo a la wp_head acción, que dispara justo antes del wp_print_scripts y wp_print_styles comportamiento.

Esto debería eliminar el código adicional de sus páginas, y no tendrá que desactivar el complemento o editar cualquier archivo central. Las funciones y el código que enumeré anteriormente tampoco hará que su tema se rompa si elimina el Formulario de contacto 7 en el futuro, por lo que no es necesario preocuparse por la compatibilidad futura de actualización.

Licenciado bajo: CC-BY-SA con atribución
scroll top