web-dev-qa-db-fra.com

Comment puis-je modifier ce qui est affiché dans wp_head, que ce soit par un thème ou Wordpress en général?

Je travaille sur les performances de mon site avec YSLOW et constate que Wordpress affiche dans ma tête de document des éléments dont je sais que je n’ai pas besoin.

Par exemple, j'appelle déjà jQuery 1.9 à partir du CDN Google. Je n'ai donc pas besoin de l'appel de jQuery dans wp-includes.

En outre, un plugin inclut une feuille de style dont je n'ai pas besoin (car j'écrase de toute façon 99% de ces styles dans mon thème), aussi j'aimerais me débarrasser de cet appel.

Alors, comment puis-je modifier ce qui est généré par la fonction wp_head(), que Wordpress le mette là (comme l'appel wp-includes jQuery) ou qu'un plug-in le mette là (comme l'appel de la feuille de style)?

5
Joel Glovier

Premièrement: ne mettez pas en file d'attente les versions personnalisées des scripts fournis avec WordPress , y compris (et en particulier) jQuery.

Deuxièmement, pour répondre à votre question: ces scripts et feuilles de style de plug-in sont mis en file d'attente, à l'aide de add_action() , via un rappel relié à l'un des points suivants:

  • wp_head
  • wp_enqueue_scripts
  • wp_print_scripts
  • wp_print_styles

(Il y en a d'autres, mais ce sont les plus probables.)

Dans le rappel, les fonctions suivantes sont utilisées pour mettre en file d'attente:

Ainsi, pour une feuille de style mise en file d'attente, nommée foobar.css, vous devez rechercher dans les fichiers de plug-in les appels à wp_enqueue_style(), puis noter le nom de la fonction de rappel dans laquelle elle est appelée. Ensuite, recherchez l'appel add_action() qui fait référence à cette fonction de rappel. par exemple.:

add_action( 'wp_head', 'pluginname_enqueue_styles' );

Une fois que vous avez trouvé cet appel, vous pouvez le remplacer vous-même, en utilisant remove_action() :

remove_action( 'wp_head', 'pluginname_enqueue_styles' );
5
Chip Bennett

Je ne suis pas d'accord pour dire que remplacer les versions par défaut avec une version hébergée sur CDN est une mauvaise pratique. Il vous incombe toutefois de vous assurer que vous utilisez une version compatible avec tous vos plug-ins. Assurez-vous de bien tester.

Pour remplacer le jQuery par défaut avec la version CDN, ajoutez quelque chose comme ceci à votre 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');
2
Matt Shelton