Watch every course in the library with a membership.
Each course includes high-quality videos taught by expert instructors.

Start Your Free Trial Now

Style the menu with icons from Font Awesome Build Wordpress Themes

On many websites, icon fonts have become commonly used to replace images. Icon fonts are a great res… Show More

WordPress: Building Themes from Scratch Using Underscores

with Morten Rand-Hendriksen

Video: Style the menu with icons from Font Awesome Build Wordpress Themes

On many websites, icon fonts have become commonly used to replace images. Icon fonts are a great resource because they are scalable and look nice no matter what size they are viewed in. And, because they are treated as fonts, you can change their features, such as color and size. In this lesson, you will learn about styling the menu with icons from Font Awesome.
Expand all | Collapse all
  1. 10m 55s
    1. Welcome
      1m 4s
    2. What to know before you start this course
      2m 40s
    3. How this course and the lesson files work
      3m 12s
    4. Introducing Simone: A preview of the final project
      3m 59s
  2. 21m 28s
    1. Installing and running WordPress on your computer
      3m 53s
    2. Getting and installing Underscores
      4m 11s
    3. Installing WordPress Theme Unit Test data
      4m 18s
    4. Installing the Developer plugin
      2m 58s
    5. Installing and setting up NetBeans or another IDE
      6m 8s
  3. 16m 15s
    1. Designing for mobile, content, and style
      4m 52s
    2. How do WordPress themes work?
      4m 48s
    3. Understanding the WordPress template hierarchy
      2m 19s
    4. Underscores: An overview
      4m 16s
  4. 37m 5s
    1. Setting up style.css
      4m 47s
    2. Configuring baseline settings and functions
      6m 6s
    3. Enabling custom fonts and font icons
      5m 44s
    4. Applying global styles
      5m 11s
    5. Styling basic layout components
      6m 19s
    6. Making the site layout responsive
      8m 58s
  5. 23m 18s
    1. Styling the default header
      6m 25s
    2. Hiding the site title and tagline
      5m 32s
    3. Adding an optional header image function
      5m 23s
    4. Placing the header image behind the site title
      5m 58s
  6. 40m 55s
    1. Setting up menus
      3m 12s
    2. Styling the menu
      7m 42s
    3. Using Superfish for accessible menus
      8m 0s
    4. Making the menu responsive
      7m 3s
    5. Creating a custom social media menu
      5m 51s
    6. Styling the menu with icons from Font Awesome
      9m 7s
  7. 18m 9s
    1. Adding the search form
      6m 27s
    2. Adding the search icon
      6m 55s
    3. Adding show/hide functionality to the search form with jQuery
      4m 47s
  8. 33m 20s
    1. Adding a widgetized area to the footer
      7m 10s
    2. Using the Monster widget plugin to test all widgets
      2m 11s
    3. Styling the footer
      3m 6s
    4. General widget styling
      5m 33s
    5. Adding custom styles to specific widgets
      7m 34s
    6. Using Masonry to make footer widgets responsive
      7m 46s
  9. 54m 49s
    1. Changing the Single Post Template content structure
      5m 54s
    2. Changing the output of meta elements
      7m 2s
    3. Styling the Single Post Template
      7m 57s
    4. Making post meta responsive
      6m 21s
    5. Styling blockquotes
      5m 39s
    6. Creating pull quotes and pull images
      5m 1s
    7. Working with image captions
      4m 27s
    8. Working with image galleries
      4m 57s
    9. Single-post navigation
      7m 31s
  10. 30m 23s
    1. Working with the comments template
      8m 42s
    2. Using Gravatars in comments
      2m 42s
    3. Styling comments
      7m 26s
    4. Highlighting post author comments
      3m 36s
    5. Styling the comment form and messages
      7m 57s
  11. 18m 43s
    1. How do featured images (post thumbnails) work?
      2m 57s
    2. Defining featured image sizes
      3m 30s
    3. Generating new featured images with a plugin
      1m 46s
    4. Adding featured images to a template
      5m 7s
    5. Styling the featured image
      5m 23s
  12. 1h 2m
    1. The index template hierarchy
      2m 21s
    2. Customizing and styling index templates
      10m 10s
    3. Displaying excerpts or full content on index pages
      3m 6s
    4. Adding a custom Read More link
      3m 48s
    5. Adding featured images
      4m 0s
    6. Creating custom pagination navigation
      6m 4s
    7. Highlighting Sticky Posts
      2m 55s
    8. Creating custom post format templates
      5m 30s
    9. Highlighting the most recent post in the index template
      7m 22s
    10. Embracing modular design
      2m 29s
    11. Working with archive.php
      5m 54s
    12. Customizing the search results and the 404 template
      8m 28s
  13. 9m 7s
    1. Styling pages
      3m 4s
    2. Creating custom page templates
      6m 3s
  14. 4m 30s
    1. Adding editor styles to match front-end styles
      4m 30s
  15. 2m 20s
    1. Further learning
      2m 20s

please wait ...
Styling the menu with icons from Font Awesome
Video Duration: 9m 7s 6h 23m Advanced


On many websites, icon fonts have become commonly used to replace images. Icon fonts are a great resource because they are scalable and look nice no matter what size they are viewed in. And, because they are treated as fonts, you can change their features, such as color and size. In this lesson, you will learn about styling the menu with icons from Font Awesome.

View Course Description

Ready for your next WordPress challenge? Learn how to build more complex custom themes using the _s (aka Underscores) starter theme. Morten Rand-Hendriksen takes you from basic layout and customization to enabling advanced responsive design and accessibility features. He reinforces the basics lessons with DRY (don't repeat yourself) development practices and a structured approach that will help you build WordPress themes that meet modern standards. Plus, he'll explore core concepts like understanding the WordPress template hierarchy, creating functions, adding custom JavaScript, applying styles, and more.

Topics include:
  • Installing WordPress, Underscores, plugins, and NetBeans
  • Designing for mobile, content, and style
  • Setting up the basic theme
  • Building a custom header
  • Designing responsive, accessible menus
  • Adding a custom search form
  • Using and styling widgets
  • Adjusting the Single Post Template
  • Working with comments, featured images, index templates, and static pages
  • Adding editor styles to match front-end styles
WordPress underscores

Styling the menu with icons from Font Awesome

Over the last couple of years, the use of Icon fonts has become popular and for a good reason. Icon fonts allow us to insert icons where we normally insert images and these icons can be colored and shaped and sized in any way we want. And as a bonus, they look great on all screens, regardless of what resolution or size they are displayed in. If you want to know more about icon fonts, you should check out James Williamson's course on icon fonts in the library.

Here I'm going to give you a crash course on how to use a specific Icon font called Font Awesome. And we're going to use it to swap out these menu items, Twitter, Google, and Facebook, and other social media items with the icons that match their logos. In the beginning of this course, when we set up functions.php, you may remember we enqueued the font awesome style sheet. Now we get to use it for the first time. So let's go to Font Awesome and see how it all works.

If you go to and you select icons, you'll see the list of all the available icons that we can use in our site. What I'm looking for in this case are social media or brand icons and if I scroll all the way to the bottom of this page, there's a large section of these brand icons that we could call in and target different brands. So what we're going to do now, is use these icons in place of the text. And to do that we first need to understand how these icons work.

So let's take a look at one of them. I'll pick this one. Fa-Twitter, which is just a Twitter icon. And here, in the demo page, you see, first of all, how great it is to use icon fonts. because you can see, this is the same icon, scaled up in multiple different sizes. And it always looks nice and clean, no matter what size it is. But what we're looking for, here. Is how to implement the icon into our site. The suggested use is to do what you see down here. Call in the class FA, and then FA Twitter, which will call in this icon and wrap it inside an I tag.

Now this is something we're going to be doing later on, but right now I'm instead going to use CSS to automatically inject the icon in where I want it. So instead of using this type of mark-up, I'm actually going to go look for the Unicode here. So you see that the Unicode for this particular icon is F099. Now, what I mean by the Unicode is, this is in fact a font. So, just like you would hit A on your keyboard to get an A, you hit the equivalent font item for F099 to get the Twitter icon.

That also means we can treat these icons as fonts, so we can apply font color to them, and font size and so on. So I've created some code snippets that we're going to use here to get the social media to behave the way we want. So we're going to start off by aligning the social media menu to the right hand side. So I'm going to grab the two first lines here. So grab my new source of ul, and uloi, and copy it. Then I have to go to NetBeans, open style.css, and navigate to my menus.

And you'll remember they are at 5.2, so I'll search for 5.2. And here, I'm going to add a new menu. So I'll scroll all the way to the bottom of my menu section. So under small menu here. And here, I'm going to paste in my new social media menu. So these first two rules, all they do is shift the menu over to the right-hand side. So I'm just going to test that. So I'll save this style sheet so far and reload my page. And you see the menu items shift over, that's great.

Next, we're going to apply some generic styling, so that we can make all of these items, just display the same icon. So I'm going to go with the FontAwesome, and find the icon I want to use, and here if I scroll up a bit. You'll see there's an icon called fa-users that looks like, you know, a social group. So first, I want to add this social icon to the front of each of the text elements. So, I want the icon to appear first, and the word Twitter, or Google, or Facebook.

To do that, I'm going to use a pseudo element called Before. So, I'll copy out this code first, and I'll explain exactly what's going on. So when I paste this, rule here, what happens is, I'm saying, find the link items, within the list items, within the social media menu. And then place this content here before that item. And the content we're placing, is the icon that we just looked at, that social media icon. So what'll happen is, when the page is loaded, the browser will say oh, there's extra content here, and I'm going to place it before the list item.

And the rest of it is pretty standard. I've displayed it as an inline block, I set some padding so that it looks nice. And I've also set the font family to FontAwesome and the font size and the font color. So now if I save this new rule set, and reload, you'll see that in front of each of my menu items, the CSS is now injecting the font icon. Now that this works, I can use a custom type of rule set to target each individual font item. And what am going to do here is grab these rows here and these rows have this custom atrif targeting device inside them.

So what's happening here, I'm saying. If the link has the word in it then use this font icon. If it has Twitter in is use this icon, if it has Dribble in it use this icon, and so on, and so on, and so on. And this is what Justin figured out. That was so smart. So when we take this code here copy it out and paste it in. What will happen is the styles will automatically recognize which social media network we're pointing at with our urls and then it'll inject the proper icon for that social media network.

So now I can reload the page. And you'll see for Twitter, we have a Twitter account. For Google+, we have the Google+ logo, and for Facebook, we have the Facebook logo. Now I just need to do one more thing. I need to hide the text, Twitter, Google, and Facebook. Now I already have some functionality in my site that hides content, you'll remember when I tabbed through my pages here. We get, like, this skip to content link. And the skip to content link has a class assigned to it called screen reader text. So the idea is, you hide the text so that only screen readers can see it, and that's highly appropriate for these links.

So now I need to wrap the actual text within my links in a class that targets the screen reader text. And that's done in the function we created that outputs the menu. So if you go back to the snippets and scroll down, you'll find that in template-tags.php, I've made a small change to my function. What I've done is, I've added this link_before and link_after and this basically wraps the text within the link in the screen reader text class, the screen reader text class will hide the text.

So I'm going to copy out this new function, go back to my theme, and find includes template tags, scroll to the bottom. And here I'm going to replace my existing function with this new one, save it, and now, when I reload my page again. The text disappears and we're left with just the social media icons. So now we have a custom menu, placed somewhere else on the page, that displays a completely different type of content and is still configurable from inside WordPress. And the only thing that's left to do now, is to make that menu responsive.

Because right now, if we scale it down. You'll see the menu disappears at the 600 point just like the other menu. So here, I need to add in some media queries, just to make sure that my social media menu stays in tact, even though we go down to smaller screens. So again, I'll go back to my code snippets. And you'll see here at the bottom of the CSS that I've created for this movie. I have a simple media query that targets the social menu when the screen is below 600 pixels wide. So I'm going to copy this media query out, go to style.css, and just paste it in below these social media links, save style.css, reload the browser one last time.

And now, when I scale down the size of my browser. You'll see the menu stays intact. So now you know how to configure the existing menu and also add new menus to your site. And you can use this exact same approach to add menus anywhere you want, in the footer, in the side bar, within the content itself, or below the existing menu. The only limitation here is what you can come up with.

There are currently no FAQs about WordPress: Building Themes from Scratch Using Underscores.






Don't show this message again
Share a link to this course

What are exercise files?

Exercise files are the same files the author uses in the course. Save time by downloading the author's files instead of setting up your own files, and learn by following along with the instructor.

Can I take this course without the exercise files?

Yes! If you decide you would like the exercise files later, you can upgrade to a premium account any time.

Become a member Download sample files See plans and pricing

Please wait... please wait ...
Upgrade to get access to exercise files.

Exercise files video

How to use exercise files.

Learn by watching, listening, and doing, Exercise files are the same files the author uses in the course, so you can download them and follow along Premium memberships include access to all exercise files in the library.

Exercise files

Exercise files video

How to use exercise files.

For additional information on downloading and using exercise files, watch our instructional video or read the instructions in the FAQ .

This course includes free exercise files, so you can practice while you watch the course. To access all the exercise files in our library, become a Premium Member.

* Estimated file size

Are you sure you want to mark all the videos in this course as unwatched?

This will not affect your course history, your reports, or your certificates of completion for this course.

Mark all as unwatched Cancel


You have completed WordPress: Building Themes from Scratch Using Underscores.

Return to your organization's learning portal to continue training, or close this page.


Upgrade to View Courses Offline


With our new Desktop App, Annual Premium Members can download courses for Internet-free viewing.

Upgrade Now

After upgrading, download Desktop App Here.

Become a Member and Create Custom Playlists

Join today and get unlimited access to the entire library of online learning video courses—and create as many playlists as you like.

Get started

Already a member?

Log in

Exercise files

Learn by watching, listening, and doing! Exercise files are the same files the author uses in the course, so you can download them and follow along. Exercise files are available with all Premium memberships. Learn more

Get started

Already a Premium member?

Exercise files video

How to use exercise files.

Ask a question

Thanks for contacting us.
You’ll hear from our Customer Service team within 24 hours.

Please enter the text shown below:

Exercise files

Access exercise files from a button right under the course name.

Mark videos as unwatched

Remove icons showing you already watched videos if you want to start over.

Control your viewing experience

Make the video wide, narrow, full-screen, or pop the player out of the page into its own window.

Interactive transcripts

Click on text in the transcript to jump to that spot in the video. As the video plays, the relevant spot in the transcript will be highlighted.

You started this assessment previously and didn’t complete it.

You can pick up where you left off, or start over.

Resume Start over

Learn more, save more. Upgrade today!

Get our Annual Premium Membership at our best savings yet.

Upgrade to our Annual Premium Membership today and get even more value from your subscription:

“In a way, I feel like you are rooting for me. Like you are really invested in my experience, and want me to get as much out of these courses as possible this is the best place to start on your journey to learning new material.”— Nadine H.

Thanks for signing up.

We’ll send you a confirmation email shortly.

Sign up and receive emails about and our online training library:

Here’s our privacy policy with more details about how we handle your information.

Keep up with news, tips, and latest courses with emails from

Sign up and receive emails about and our online training library:

Here’s our privacy policy with more details about how we handle your information.

submit Lightbox submit clicked
Terms and conditions of use

We've updated our terms and conditions (now called terms of service).Go
Review and accept our updated terms of service.