Every time more often you may find yourself needing to add options to a theme you are building or using. By options I’m referring to colors you might want to allow the user to change, font size, etc.

There are several ways to approach this.

If you are using a preexisting theme

If you are suing a preexisting theme which you bought or downloaded from the WP repertory and you only need to add few extra options, you probably don’t need to dive into the code at all. There are plugins like OptionTree or even the latest version of Advanced Custom Fields which will offer you a visual interface to create new theme options the same way they allow you to create new custom post types or new fields. You can use any of them to create your theme options page and later call those values wherever you need them in your theme

If you are building your own theme

If you are building your own theme you might want to consider building your own theme options page, especially if you want to sell your theme later on (you don’t want to be paying ACF royalties just for that).

If you decide to take this route you can either create your own admin menu item and build your theme options there, or even better, build your theme options into the standard WordPress customizer so that they will show along the basic options that all themes share such as the blog title or tagline. This tutorial explains very well how to achieve this