Home of a med student who likes to manage websites and talk tech!

Remove unwanted WordPress header elements

with 183 comments

WordPress LogoI was performing a bit of optimization on one of my WordPress blogs and wanted to clean up the header. The default installation of WordPress adds quite a bit up there and this bloat can be compounded by a theme’s own customizations. After quite a bit of searching around Google, I came up with a clean solution. Here is what I did to help de-clutter my theme’s header.

In addition to custom Javascript and CSS calls that may clutter your theme’s header.php file, you may find some other elements whose features you will never use or could do without. However, these elements usually only appear when viewing your pages through your browser, because activated plugins will automatically insert them via PHP. Take, for example, WP-PageNavi. This is a great plugin for placing numbered page links in your WordPress blog, but it inserts a call to its own stylesheet. Being the optimization junkie that I am, it would be better for me to just combine WP-PageNavi’s stylesheet with my theme’s stylesheet so a single CSS file loads all of the styles. The problem is getting rid of WP-PageNavi’s call to its own stylesheet without deactivating the plugin altogether.

Many of these header insertions are being called by the wp_head() hook. Look in your theme’s header.php file and you will see it there. If you think that simply removing the hook will eliminate these extra insertions, you are correct, but it doesn’t come without consequences. Doing so may completely cripple the functionality of your blog because there are other necessary insertions that are required to make your theme work properly. You can, however, disable individual insertions without removing the wp_head() hook, which gives you more control.

In order to achieve removal of plugins hooking into wp_head() you will need to look at that plugin’s main PHP file. Look for functions that look like this:

add_action('wp_head', 'plugin_function_here');

Adding the following line to your theme’s functions.php file and saving it will disable that insertion via wp_head():

remove_action('wp_head', 'plugin_function_here');

Reload a page in your web browser and view the source to see the changes. Quite self-explanatory and simple, isn’t it? Just be careful of what you remove.

There are unique cases where forcing a remove_action from wp_head() does not work. In the case of WP-PageNavi, there is no explicit action being added to wp_head(), but it will still load its own stylesheet. If you look at wp-pagenavi.php you will notice the ‘Enqueue PageNavi Stylesheets’ function that inserts the stylesheet via a wp_print_styles action:

add_action('wp_print_styles', 'pagenavi_stylesheets');

To stop WP-PageNavi’s stylesheet from being called in the header, all you need to do is add the following to your theme’s functions.php file:

remove_action('wp_print_styles', 'pagenavi_stylesheets');

By now you should be noticing a trend. Find the function, then remove the function. Here are some other elements that you can remove that are in direct reference to wp_head(). Note that you should only disable these features if you do not use them.

// Really Simple Discovery
remove_action('wp_head', 'rsd_link');
// Windows Live Writer
remove_action('wp_head', 'wlwmanifest_link');

You can take things a bit further as I have done. I noticed that my theme calls for jQuery Javascript through wp_head() plus a few other Javascript files outside of wp_head(). Again, I was looking at a way of possibly combining and compressing my theme’s Javascript, but how would I disable jQuery loading through wp_head()? I could not find a function reference that would allow me to remove it and trying remove_action('wp_head', 'jquery'); didn’t work. I did find that wp_deregister_script('jquery'); could work perfectly. However, if placed in your theme’s functions.php file, the WordPress Dashboard admin area would become seriously crippled! No longer would the fancy drop-down menus work and various other features stopped working properly all of a sudden. Obviously, the admin area requires jQuery (duh!), so I had to remove the entry from my theme’s functions.php file. Being inquisitive as I am, I placed wp_deregister_script('jquery'); in my theme’s header.php file instead and, to my surprise, doing this disabled jQuery from loading in the theme yet allowed the admin area to retain full functionality.


Be aware that my theme still utilizes jQuery. It is just that I have chosen to pack all of my Javascript together and call for it through a static URL within script tags.

I hope this post is helpful to persons who are interested in gaining more control over their theme’s header and reducing all of the clutter. Please be careful of what you edit and, of course, have fun with WordPress!

About these ads

Written by falcon1986

15 July, 2009 at 10:25 AM

183 Responses

Subscribe to comments with RSS.

  1. Hello, always i used to check weblog posts here in the early hours in the
    daylight, as i like to gain knowledge of more and more.

  2. Pretty component of content. I simply stumbled upon your website
    and in accession capital to claim that I get in fact loved account your weblog posts.
    Anyway I’ll be subscribing to your feeds or even I achievement you get entry to persistently fast.

    attorney law

    10 August, 2014 at 11:19 PM

  3. Excellent post. I was checking continuously this blog and I am impressed!
    Extremely useful info specifically the last part :) I care for
    such info a lot. I was seeking this particular information for a very long
    time. Thank you and best of luck.

  4. I seldom leave remarks, however after looking at some of
    the remarks here Remove unwanted WordPress header elements | Falcon1986-Online.
    I do have some questions for you if you do not
    mind. Could it be only me or does it look like
    some of these remarks appear as if they are left by
    brain dead visitors? :-P And, if you are writing on
    other social sites, I’d like to keep up with everything fresh
    you have to post. Could you make a list of the complete urls of all your
    social networking sites like your twitter feed, Facebook page or linkedin profile?

    you could look here

    14 August, 2014 at 11:03 AM

  5. I always spent my half an hour to read this weblog’s posts all the time along with
    a mug of coffee.

  6. Hey just wanted to give you a quick heads up and let you
    know a few of the pictures aren’t loading properly.
    I’m not sure why but I think its a linking issue.
    I’ve tried it in two different browsers and both show the same outcome.

    bingo games in new york

    17 August, 2014 at 10:25 AM

  7. obviously like your web-site however you have to take a look at the spelling on several of your posts.
    A number of them are rife with spelling issues and I to find it very bothersome to inform the reality nevertheless I’ll definitely come again again.

  8. What’s up everyone, it’s my first pay a visit at this web page, and paragraph is truly fruitful in support of me, keep
    up posting such articles.

  9. Simply desire to say your article is as surprising. The clearness in your publish is
    just cool and that i can suppose you are a professional
    on this subject. Well with your permission let me to grasp your
    RSS feed to keep updated with impending post. Thanks a million and please keep up the gratifying work.

  10. Thanks , I have recently been searching for info approximately this topic
    for a long time and yours is the best I’ve discovered so far.

    However, what about the conclusion? Are you certain about the source?

  11. At this moment I am going to do my breakfast, later than having my breakfast
    coming again to read more news.

    penny stock picks

    19 August, 2014 at 8:07 AM

  12. hi!,I really like your writing so much! percentage we keep in touch more approximately your article on AOL?
    I require an expert on this area to unravel my problem.
    Maybe that’s you! Taking a look forward to peer you.

    make video games free

    20 August, 2014 at 4:27 AM

  13. Thank you for some other magnificent article. Where else could anybody get that type of information in such a perfect way of writing?
    I have a presentation subsequent week, and I
    am on the search for such information.

  14. Why users still use to read news papers when in this technological globe all is available on web?

Leave a Reply

Fill in your details below or click an icon to log in:

WordPress.com Logo

You are commenting using your WordPress.com account. Log Out / Change )

Twitter picture

You are commenting using your Twitter account. Log Out / Change )

Facebook photo

You are commenting using your Facebook account. Log Out / Change )

Google+ photo

You are commenting using your Google+ account. Log Out / Change )

Connecting to %s


Get every new post delivered to your Inbox.

%d bloggers like this: