I'm currently developing a theme that will have a 'hero' section on the homepage.

I'm fairly new to theme development and I know in theory I could just enter this as html.

However I'd like to give some of the more non-techy users a way of editing this, but I'm not sure what the ideal method of creating this dynamic area should be. I only need the information from them, I don't have any need for them to add additional html or markup/styles.

Users will need to specify a single image, some text and define a call-to-action button (most likely a link).

Am I better of creating a custom widget and registering a custom sidebar for this? Should it be shortcode?

Or is the preferred approach to create a plugin? Or indeed am I better of defining a custom post type (though not sure how I would limit this to only 1).

Or should this be some kind of custom theme setting?

I've been going through the wordpress codex but not sure where the best place to store this is as it seems like there's a number of different ways to achieve the same goal.

closed as primarily opinion-based by Max Yudin, cjbj, Howdy_McGee Jan 23 '18 at 17:51

Many good questions generate some degree of opinion based on expert experience, but answers to this question will tend to be almost entirely based on opinions, rather than facts, references, or specific expertise. If this question can be reworded to fit the rules in the help center, please edit the question.

  • Have you tried using the Customizer? It's the ideal choice to add settings like this for the front page. – swissspidy Jan 17 '18 at 12:50
  • If using a plugin is an option, you should checkout Advanced Custom Fields: wordpress.org/plugins/advanced-custom-fields. You can assign settings very easily to a page template specifically for the front page. The UI is also pretty great for non-techie users. You can also export the settings and save to your theme if you want it quickly in all environments (plugin is still required to be activated). – Atari Jan 17 '18 at 15:04