WordPress functions.php

The WordPress functions.php file is one of the most central files of any WordPress installation. It can control much of the functionality and behavior of your website. However, beginners often don’t understand what the file does and what they can use it for. This article will change that.

In the following, you will learn what the functions.php is, where to find it, and what it can do. After that, I will talk about the file’s pros and cons and close the article with a few example code snippets that you can input into functions.php to enhance your WordPress website.

Sounds good? Then let’s not dilly-dally and dive right into it.

What is functions.php and what does it do?

The functions.php file is part of pretty much every WordPress installation. More specifically, you can usually find it in the directory of every theme installed on your site (including child themes).

So what does this ubiquitous file do?

The functions.php file is kind of like a theme-dependent plugin. You can use it to add any kind of functionality to your site (like plugins do). However, because functions.php is part of your theme, your changes will only be active as long as the theme is, whereas plugins work no matter which theme you’re using.

To do its job, functions.php can contain PHP code as well as native WordPress functions. If you know your way around things like theme hooks, you can even use functions.php to create your own hooks!

Because it can contain all types of code snippets the functions file is very powerful. However, you know what uncle Ben said: with great power also comes great responsibility. For that reason, let’s next discuss when to use functions.php and when not to.

Pros and cons of using the WordPress functions.php file

So, functions.php basically works like a plugin. However, it doesn’t just do one specific thing. Instead, the file can be a collection of code for many different purposes. For example:

  • Creating widget areas
  • Adding new image sizes to your site
  • Changing the text of the ‘read more’ link
  • Adding custom fonts

As you can see, the file is extremely flexible. For that reason, if you want to make small changes to your site, the WordPress functions.php file is the perfect way to accomplish that.

On the other side, it also has its limits. First and foremost, if there is any small mistake in the file (such as a missing semicolon) it can take down your entire site.

Scary, I know.

Plus, if it’s the only way you make changes to your site, the file can quickly become chaotic and confusing.

Finally, as you learned earlier, if you ever switch WordPress themes, you’ll lose the changes in your functions.php file. If you think you’ll be switching themes soon, or are adding functionality that you want to work independently of your theme, you may be better off using the Code Snippets plugin:

This plugin gives you a simpler, theme-independent way to add code snippets to functions.php

Example functions you can use on your site

Alright, now that you know all about this important file, you can start using it. Below, you will find a few code snippets that you can copy and paste to your theme’s functions file (with site-specific customizations, of course). The best way to use them is to paste them at the end of your functions.php file.

1. Add Google Analytics to your site

Adding Google Analytics to your site is always a good idea. It will help you understand your audience better and track their behavior on your site so you can improve it.

Usually, you would include Google Analytics on your site via a plugin, however, it’s also possible to do it manually via the WordPress functions.php file. Here’s what that looks like:

https://gist.github.com/nschaeferhoff/e7fe59a1d59a9e1f303dcde95bb363ea

To make the code snippet work, you need to replace everything between <script async... and the final </script> with your own Google Analytics tracking code.

2. Hide specific WordPress login errors

When somebody tries to log into your site with faulty information, WordPress will tell that person whether the problem is an invalid username or an invalid password:

WordPress standard login error message

Unfortunately, this can make it easier for hackers to get into your site. For that reason, you can use the code snippet below to change the error message to something less revealing.

https://gist.github.com/nschaeferhoff/9098cd6cd2e9127a8db1626b3866ed89

Just change the text between the " " to whatever you want the message to say.

WordPress functions.php modify login error message

3. Display the number of words in an article

Sometimes it’s useful to show the number of words in your posts. That way, visitors have the opportunity to decide whether they want to invest their time into the entire article or not.

First, add the following to your functions.php file:

https://gist.github.com/nschaeferhoff/4f7f96a1aee961d269143378d64d06b1

The code above strips the HTML tags from your content and then counts the leftover words.

After that, you need to add echo word_count(); wherever you want the number of words to show up. For example, I added the following line to the entry meta section of my post template.

https://gist.github.com/nschaeferhoff/d8e7614a714a392e62130c52457db838

In the code above, I wrapped the number of words in an HTML section (in order to change its appearance if necessary) and added some text around it. The actual number is displayed where it says word_count(). The command echo simply tells the browser to display everything on the page.

After that, I looked into my child theme (it’s important that you use a child theme) for the file that is responsible for displaying posts on my site. In Twenty Seventeen, that is content.php, which is located in the theme folder under template-parts > post. However, it will probably be different in yours.

To find out which template file your theme is using, you can install the What The File plugin. It will display which file and template parts are used for displaying the page or post you are currently on.

Finally, I simply located the entry-meta section in my file and pasted the code right before the section closes. In Twenty Seventeen, that ends up looking like this:

https://gist.github.com/nschaeferhoff/538349e121df430d622bde4c0cfa8580

Here is the result:

wordpress functions.php add word count

(Thanks to Thomas Hardy for the original code snippet!)

4. Add estimated reading time to posts

Instead of showing the word count, you can also go one step further and display the estimated reading time. To do this, you just need to add some extra code to the example above:

https://gist.github.com/nschaeferhoff/41b2b2466117b12bd9b53f6e154af76c

What this snippet by Matt Birchler does is take the number of words and divide it by a reading speed of 200 words per minute (that happens where it says $word_count / 200, simply change this number if you think your readers might be slower or faster). It then outputs the results with minute or minutes at the end.

You can add it to your site the same way as the word count in the last example. The only difference is that you replace word_count() with reading_time() in your code. Here’s how I did it:

https://gist.github.com/nschaeferhoff/e7c1c075221d4394c9efc8dcf0552702

And this is is what it ended up looking like on the page:

add reading time via the functions.php file

5. Delay posts from being sent to RSS

Our final example is a way to keep posts from immediately going to your RSS feed when you hit Publish. That can be a good idea because it gives you time to correct those typos you only see once you have already sent the post out to the world.

The problem: while on your site you can simply change any mistakes, once your post is out on RSS, it’s out there. However, no longer! Use the snippet below to keep this from happening.

https://gist.github.com/nschaeferhoff/9e8f09d62c862a2cea84f58c6f5beeff

In this example, the number of minutes the post is delayed by (the part after $wait) is set to 10. Feel free to change it to whatever timing you find appropriate.

Summing up

The WordPress functions.php file is a powerful tool to make changes to your website. If you know your way around it, there is little you can’t do.

Above, I have explained what the WordPress functions.php is, what it is used for and its advantages and disadvantages. I have also given you plenty of examples so you can grasp the possibilities of this file.

From here, it’s up to you to look into what you need on your site and how to make it happen. The functions file will help you achieve it.

What is you favorite thing to do with the WordPress functions.php file? Let us know in the comments section below!
Free guide

5 Essential Tips to Speed Up
Your WordPress Site

Reduce your loading time by even 50-80%
just by following simple tips.

Download free guide