¿Cómo puedo eliminar jquery de la parte frontal de mi WordPress?


Mi sitio de wordpress es un poco pesado para descargar. En el frontend, incluye jquery innecesariamente. En mi firebug se ve como:

jquery.js?ver=1.3.2

Y

jquery.form.js?ver=2.02m

No necesito que estos sean incluidos para mí.

Estoy feliz de que permanezcan en el wp-admin, pero me gustaría que no cargaran en el frontend.

He encontrado el archivo que creo que los está cargando en wp-includes/script-loader.php pero no estoy seguro de qué descomentar o qué hacer para eliminarlo por completo para el delantero.

¿Hay alguna manera de hacer esto, eliminando jquery sin arruinar el back-end?

Author: Pieter Goosen, 2009-07-21

9 answers

JQuery puede ser añadido por su tema. Si su tema lo está agregando correctamente, debería usar la función wp_enqueue_script(). Para eliminar jQuery, simplemente use la función wp_deregister_script().

wp_deregister_script('jquery');

La eliminación de jQuery para todo el sitio podría causar algunas consecuencias no deseadas para su sección de administración. Para evitar eliminar jQuery en sus páginas de administración, use este código en su lugar:

if ( !is_admin() ) wp_deregister_script('jquery');

Ahora solo las páginas que no son páginas de administración ejecutarán la función wp_deregister_script().

Añada este código a las funciones.php archivo en el directorio del tema.

 28
Author: NerdStarGamer,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/ajaxhispano.com/template/agent.layouts/content.php on line 61
2009-07-21 22:09:20

Todas las otras soluciones ahora están desactualizadas a partir de wordpress 3.6

add_filter( 'wp_default_scripts', 'change_default_jquery' );

function change_default_jquery( &$scripts){
    if(!is_admin()){
        $scripts->remove( 'jquery');
        $scripts->add( 'jquery', false, array( 'jquery-core' ), '1.10.2' );
    }
}
 29
Author: deweydb,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/ajaxhispano.com/template/agent.layouts/content.php on line 61
2014-05-08 19:38:18

El método correcto para eliminar completamente un estilo o script es desquitarlo y cancelarlo. También debe tener en cuenta que los scripts front-end se manejan a través del wp_enqueue_scripts gancho mientras que los scripts de back-end se manejan a través de la admin_enqueue_scripts garfio.

Así que con eso en mente, puedes hacer lo siguiente

add_filter( 'wp_enqueue_scripts', 'change_default_jquery', PHP_INT_MAX );

function change_default_jquery( ){
    wp_dequeue_script( 'jquery');
    wp_deregister_script( 'jquery');   
}

EDITAR 1

Esto ha sido completamente probado en la versión 4.0 de Wordpress y funciona como se esperaba.

EDITAR 2

As prueba de concepto, pegue el siguiente código en sus funciones.php. Esto imprimirá un mensaje de éxito o fracaso en la cabeza de su sitio, back end y front end

add_action( 'wp_head', 'check_jquery' );
add_action( 'admin_head', 'check_jquery' );
function check_jquery() {

    global $wp_scripts;

    foreach ( $wp_scripts->registered as $wp_script ) {
        $handles[] = $wp_script->handle; 
    }

    if( in_array( 'jquery', $handles ) ) {
        echo 'jquery has been loaded';
    }else{
        echo 'jquery has been removed';
    }
}
 20
Author: Pieter Goosen,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/ajaxhispano.com/template/agent.layouts/content.php on line 61
2014-11-21 18:07:21

Busque en sus archivos de tema.

Wp-content/themes/header.php

Puede incluir el .archivos js.

 4
Author: Ahmet Kakıcı,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/ajaxhispano.com/template/agent.layouts/content.php on line 61
2009-07-21 06:21:58

Wordpress agrega esta llamada a jQuery a través de una etiqueta de plantilla llamada <?php wp_head(); ?>, que aparece en la mayoría de los temas, y es necesaria para que algunos complementos funcionen.

Podría ser molesto, no solo por la carga, sino porque podría matar jQuery cargado previamente, e incluso podría interponerse en el camino de algunos complementos que intentan cargar jQuery también.

La solución rápida está abriendo el encabezado del archivo.php en el directorio de tu tema, y añadiendo:

<?php wp_deregister_script('jquery'); ?>

Justo antes

<?php wp_head(); ?>

O simplemente combine ambos en:

<?php wp_deregister_script('jquery'); wp_head(); ?>

Se puede encontrar una explicación más técnica aquí

 4
Author: Adam Tal,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/ajaxhispano.com/template/agent.layouts/content.php on line 61
2014-11-23 10:36:14

JQuery.js es solo 15KB si está utilizando la versión minificada, y estos estarían totalmente ausentes si estuviera utilizando un tema que no lo requiere.

Probablemente debería buscar un tema ligero sin jQuery en lugar de hackearlo y luego ver el tema romper en varios lugares porque están buscando esos archivos js.

 3
Author: Jon Limjap,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/ajaxhispano.com/template/agent.layouts/content.php on line 61
2009-07-21 06:25:08

Busque en el origen de su página renderizada; Wordpress a menudo incluye jQuery por defecto cuando se llama a <?php wp_head(); ?> en header.php, por lo que puede seguir viendo jQuery incluido en su sitio.

Si elimina <?php wp_head(); ?> en el encabezado.php, es posible que pierda otra funcionalidad de plugin, como muchos plugins "gancho" en Wordpress en ese momento.

Pero incluir jQuery no es tan importante. Es pequeño y Wordpress depende de él para algunas cosas.

 3
Author: markratledge,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/ajaxhispano.com/template/agent.layouts/content.php on line 61
2009-07-21 17:57:00

Pude reducir 2.2 segundos la velocidad de carga de mi página "Eventos" al des-registrar jQuery. jQuery es una buena opción, pero en mi opinión la velocidad de la página es mucho más importante.

Nunca tendrás un usuario por más de 5 segundos, así que si jQuery te está causando problemas de rendimiento, entonces yo digo que te deshagas.

 1
Author: Heath,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/ajaxhispano.com/template/agent.layouts/content.php on line 61
2012-02-19 23:45:37
function my_init() {
    if (!is_admin()) {
        wp_deregister_script('jquery');
        wp_register_script('jquery', false);
    }
}
add_action('init', 'my_init');

Es correcto - elimina la biblioteca jquery js. Código de otras respuestas elimina todos los js (incluso js que sus plugins instalados añade)

Probado en 4.3.1

 1
Author: user25,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/ajaxhispano.com/template/agent.layouts/content.php on line 61
2015-11-02 02:08:33