Cómo modificar lo que se muestra en wp_head, ya sea por un tema o por WordPress en general

13 abr 2013, 15:08:57
Vistas: 19.3K
Votos: 5

He estado trabajando en el rendimiento de mi sitio usando YSLOW, y noté que WordPress está mostrando cosas en el head del documento que sé que no necesito.

Por ejemplo, ya estoy llamando a jQuery 1.9 desde el CDN de Google, así que no necesito la llamada a jQuery en wp-includes.

Además, un plugin está incluyendo una hoja de estilos que no necesito (porque estoy sobrescribiendo el 99% de esos estilos en mi tema de todos modos), así que me gustaría eliminar esa llamada también.

Entonces, ¿cómo puedo editar lo que muestra la función wp_head(), ya sea que WordPress lo esté poniendo ahí (como la llamada a jQuery en wp-includes) o que un plugin lo esté poniendo (como la llamada a la hoja de estilos)?

0
Todas las respuestas a la pregunta 2
0

Primero: no encoles versiones personalizadas de scripts incluidos en el núcleo de WordPress, incluyendo (y especialmente) jQuery.

Segundo, para responder a tu pregunta: esos scripts y hojas de estilo del Plugin son encolados, usando add_action(), a través de una función de retorno enganchada en uno de los siguientes ganchos de acción:

  • wp_head
  • wp_enqueue_scripts
  • wp_print_scripts
  • wp_print_styles

(Hay otros, pero esos son los más probables.)

Dentro de la función de retorno, se usan las siguientes funciones para encolar:

Así que, para una hoja de estilo encolada por un Plugin, llamada foobar.css, necesitarías buscar en los archivos del Plugin las llamadas a wp_enqueue_style(), luego anotar el nombre de la función de retorno dentro de la cual se llama. Después, encontrar la llamada a add_action() que referencia esa función de retorno. Por ejemplo:

add_action( 'wp_head', 'pluginname_enqueue_styles' );

Una vez que hayas encontrado esa llamada, puedes anularla tú mismo, usando remove_action():

remove_action( 'wp_head', 'pluginname_enqueue_styles' );
13 abr 2013 15:17:23
0

No estoy de acuerdo en que reemplazar las versiones por defecto con una versión alojada en una CDN sea una mala práctica. Sin embargo, la responsabilidad recae en ti para asegurarte de que estás usando una versión compatible con todos tus plugins. Asegúrate de probar exhaustivamente.

Para reemplazar jQuery por defecto con la versión de la CDN, añade algo como esto a tu archivo functions.php:

function replace_jquery() {
    if (!is_admin()) {
        wp_deregister_script('jquery');
        wp_register_script('jquery', 'http://ajax.googleapis.com/ajax/libs/jquery/1.9.1/jquery.min.js', false, '1.9.1');
        wp_enqueue_script('jquery');
    }
}
add_action('init', 'replace_jquery');
13 abr 2013 15:23:38