WordPress makes it easy to modify your site’s behavior via the functions.php file in your themes. Many tutorials across the Internet often suggest to apply code snippets and examples to this file. While your new updates may function, the functions.php file is not always the best fit.
Themes are not about function
The code you apply to functions.php should be code that directly correlates to the specific theme. If you are applying website behavior updates it really should be done in the form of plugins. Plugins are about functionality, and the benefit you gain from using plugins is the functionality travels with you from theme to theme. When you’re ready to update your site to a brand new theme and don’t want to lose those cool features a plugin allows that smooth transition without remembering to copy and paste a bunch of code.
Design vs. Functionality
What should show up in your theme’s functions.php file? Anything to do with the design. This includes sidebar registration, layout controls, theme details, thumbnail images, and other design supporting functions. If you want your site to function in a specific way I recommend creating or finding a plugin to meet those needs. I found an interesting idea on creating a functionality plugin solely for your site’s needs which keeps your settings and transfers them from theme to theme. I really like this approach.
Always build for the future
The odds are you won’t keep the design for your website for more than 2-4 years, and WordPress will no doubt change during that time. It’s also important to realize your site will likely need to be updated with different features during that time. It’s great that functions.php makes it simple to make these updates, but if you’re looking to keep your work and not worry about overhead when making design changes I recommend using plugins when it comes to functional updates.