¿Restricción de un complemento para que solo cargue su CSS y JS en las páginas seleccionadas?

9

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

Un ejemplo de mi pregunta es el complemento Formulario de contacto 7 que he usado para crear un formulario en una página de mi sitio (la página " contácteme "). 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, por una extensión que me interesa solo en una página del 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?

    
pregunta Tal Galili 22.08.2010 - 15:44

1 respuesta

9

Los estilos y los scripts siempre se configuran mediante las funciones wp_enqueue_script() y wp_enqueue_style() , que deben estar vinculadas a un gancho de acción en particular para poder funcionar. Eché un vistazo dentro del Formulario de contacto 7, y parece que está usando etiquetas de acción de wpcf7_enqueue_scripts y wpcf7_enqueue_styles para agregarlas a los ganchos wp_print_scripts y wp_print_styles .

Por lo tanto, lo que debe hacer es deshacer los scripts y estilos de cada página, pero su página de contacto. La acción wp_head se activa antes de la secuencia de comandos y las acciones de estilos, por lo que deberá agregar algo como esto al archivo de funciones del tema.php:

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');
}

La función is_page () devolverá true cuando estés en la página de contacto (asumiendo que el nombre es "contácteme") ... también puede usar la barra de página y la ID de página para el filtro. En todas las demás páginas, el condicional if() agregará la función de eliminación de script / style a la acción wp_head , que se activa justo antes de las acciones wp_print_scripts y wp_print_styles .

Esto debería eliminar el código adicional de sus páginas, y no tendrá que desactivar el complemento ni editar ningún archivo principal. Las funciones y el código que he enumerado anteriormente tampoco causarán que su tema se rompa si elimina el Formulario de contacto 7 en el futuro, tampoco ... así que no hay que preocuparse por la compatibilidad con actualizaciones futuras.

    
respondido por el EAMann 22.08.2010 - 16:33

Lea otras preguntas en las etiquetas