it-swarm-es.com

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

Me gustaría hacer que un complemento restrinja la 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 utilizado para crear un formulario en una página de mi sitio (la página " contactarme "). 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 a excepción de la página "Contact Me" pero sin desactivar el complemento?

9
Tal Galili

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 de Contact Form 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.

Entonces, 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 dispara antes de las acciones de script y estilos, por lo que deberá agregar algo como esto al archivo functions.php de su tema:

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é en la página de contacto (asumiendo que el nombre es "contact me") ... 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 if() condicional agregará la función de eliminación de script/estilo a la acción wp_head, que se inicia 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.

9
EAMann