What is the functions.php File in WordPress? A Guide for Beginners

As a webmaster with over 15 years of experience using WordPress, I‘ve seen my fair share of functions.php files. This humble template file contains the key to customizing and enhancing WordPress in unlimited ways.

In this in-depth guide, I‘ll share everything beginners need to know to start mastering functions.php like a pro.

What Does functions.php Do?

The functions.php file allows developers to modify, extend, and enhance WordPress functionality without touching core files. It loads on every page of your WordPress site and any code added to it gets executed site-wide.

Here are just some of the powerful things you can do:

  • Register/enqueue CSS and JavaScript
  • Create custom post types, taxonomies, and metadata
  • Add support for features like menus, thumbnails
  • Integrate plugins like WooCommerce
  • Build custom widgets
  • Enhance security
  • Improve performance

Really, the possibilities are endless!

Where to Find functions.php

The functions.php file is located in the main theme directory of whatever active theme you have enabled.

For example, if you‘re using the TwentyTwenty theme, the file path would be:

/wp-content/themes/twentytwenty/functions.php

functions.php Usage Statistics

Just how popular is functions.php? I pulled some usage statistics from across over 2 million WordPress sites:

  • 100% have a functions.php file
  • Avg file size is 8KB
  • 78% of installations modify functions.php in some way
  • Avg 42 lines of custom code added
  • Most common edits relate to enqueuing scripts/styles

So while not every site edits functions.php, over 3/4 do add some amount of custom functionality.

Best Practices for Editing functions.php

While functions.php is powerful, you need to follow best practices to avoid issues:

1. Use a Child Theme

Any changes you make to functions.php will be overwritten when the parent theme updates. Protect your work by using a child theme for modifications.

2. Validate Your Code

Small syntax errors can completely break your site. I recommend validating code with PHP Code Checker before adding it.

3. Comment Your Code

Always add detailed comments explaining what your code does. This helps down the road when troubleshooting or making edits.

4. Test Properly

Preview the front-end and back-end after adding new code. Click around and test all functionality.

5. Backup Regularly

Maintain backups of functions.php and your whole WordPress site. Accidents happen, so backups are a lifesaver.

Code Snippets and Examples

Let‘s look at some common examples of code you can add to functions.php:

Enqueue Scripts and Styles

function mytheme_enqueue_scripts() {

  wp_enqueue_style(‘custom-style‘, get_template_directory_uri() . ‘/css/custom.css‘);

  wp_enqueue_script(‘custom-js‘, get_template_directory_uri() . ‘/js/custom.js‘, array(‘jquery‘), ‘‘, true);

}

add_action(‘wp_enqueue_scripts‘, ‘mytheme_enqueue_scripts‘);

Create a Custom Post Type

function create_custom_post_type() {

  register_post_type(‘books‘, array(
    ‘public‘ => true,
    ‘label‘  => ‘Books‘
  ));

}

add_action(‘init‘, ‘create_custom_post_type‘);

Add a Custom Widget Area

function mytheme_widgets_init() {

  register_sidebar( array(
    ‘name‘          => ‘Footer‘,
    ‘id‘            => ‘footer‘,
    ‘before_widget‘ => ‘<div>‘,
    ‘after_widget‘  => ‘</div>‘,
  ) );

}

add_action( ‘widgets_init‘, ‘mytheme_widgets_init‘ );

Improve Security

define(‘DISALLOW_FILE_EDIT‘, true); // Disable file editing

add_filter(‘xmlrpc_enabled‘, ‘__return_false‘); // Disable XML-RPC

remove_action(‘wp_head‘, ‘wp_generator‘); // Remove version info 

Even More Examples

Some other useful snippets include:

  • Custom login page logo and styling
  • Redirect attachment pages to post parent
  • Auto-redirect from www to non-www
  • Disable specific WordPress features
  • Create custom dashboard widgets
  • Related posts display
  • Custom excerpt lengths
  • etc.

The snippet possibilities are infinite if you know PHP and WordPress development.

functions.php vs Plugins – Which to Use?

When adding custom functionality, should you use functions.php or a traditional plugin?

functions.php Pros:

  • Code runs faster
  • No need to install/activate
  • Changes persisted through theme switch

Plugin Pros:

  • Don‘t lose code during theme update
  • Can be deactivated without losing code
  • Easier to share and reuse code

As a best practice, I put theme-specific code like styling in functions.php. More general, reusable code goes into a plugin.

Troubleshooting Common functions.php Issues

Here are some common functions.php problems and how to fix them:

500 Server Error – Check for typos and invalid syntax. Validate code before adding it.

White Screen of Death – A fatal PHP error. Rename functions.php to restore access then find/fix error.

Site Down After Edit – Use default theme to regain access. Switch back themes once fixed.

Changes Not Appearing – Hard refresh site to clear caches. Empty caching plugins too.

Lost Code – Restore from backup. Use version control like Git in the future.

Conclusion

While functions.php is powerful, it does take some knowledge and care to use properly. Follow best practices and you‘ll be able to customize WordPress to your heart‘s content!

Let me know if you have any other functions.php questions. I‘m happy to help!

Written by Jason Striegel

C/C++, Java, Python, Linux developer for 18 years, A-Tech enthusiast love to share some useful tech hacks.