When you’re starting developing with WordPress, you might find yourself browsing through so many tutorials. Since there are a lot of tutorials, you’re starting to learn advanced topic before you understand the basics. In this tutorial, you will learn how to create a simple custom WordPress theme.

I won’t show the CSS in this post, so you can easily copy the entire CSS for the style.css here. If you want, you can just watch each video and see how I have implemented everything & also written the CSS from scratch (some of it).

Starting the Custom WordPress Theme

When starting a theme, you need to go into wp-content/themes and create your theme folder. When you’re done with that, you also need to create two mandatory files index.php and style.css.

Inside the style.css you only need the Theme Name so WordPress can find your theme and list it so you can also activate it.

Your First index.php

So, what goes inside the index.php? Just think of everything you would put in a simple HTML file when starting a website. You can do that also there but be sure to include functions wp_head() and wp_footer().

Displaying Posts inside the Index.php

For displaying posts you will need to use The Loop. That is the most important thing when you’re developing a custom WordPress theme since that is how you will show the content.

To display the content of each post you will have to use Template Tags. Here is a simple way on how to use the template tag the_title() for displaying the title of each post.

CSS First Steps & Adding it to our Custom WordPress Theme

If you have copied the completed style.css, you might have noticed that even if we have some styles in the style.css, we don’t see that on our site. That is because that style was not added in our site.

We won’t hard code it inside our template but instead, we will use the function wp_enqueue_style() to add it in our theme. When we use that function, we are telling WordPress to add that style in our <head/>. How will WordPress know that? That is done inside the function wp_head().

We are adding such functionalities inside the file functions.php so, go ahead and create one. For adding functions such as wp_enqueue_script() and wp_enqueue_style(), we need to hook a function that will contain those inside the hook wp_enqueue_scripts.

Theme Functions

With the file functions.php we can do a lot more than just registering the styles or scripts. One of the first steps when creating Theme functions is to set up the theme and register menu locations and other similar things. That is done by hooking a function on the action after_setup_theme.

We can add other languages to translate our strings inside the theme by using the function load_theme_textdomain. To add various features that our theme will support, we can use add_theme_support.

Registering various menu locations can be done by using the function register_nav_menus where we pass the location as the key in the array and the name of the menu as the value.

We should also set the maximum width of the content so that the user of our theme, when editing content, can see approximately how the content will be laid out.

Title & HTML5 Support

With the current setup, the browser won’t be able to show the title of the page. We can also add various HTML5 supports so some of the WordPress core templates will be rendered in HTML5 markup.

Add this next lines of code inside the function st_setup:

Separating Header & Footer

We will have to use more than just one file index.php. When creating such templates, we don’t want to copy and paste footer and header code for each template. What if the header changes? We would need to copy and paste it again.

We can help ourselves by separating the header and the footer into separate templates header.php and footer.php.




Now we need to include that header and footer in our templates. Our first template is index.php. To include them we are using the functions get_header() and get_footer().


This is not a finished theme yet. In the next tutorial regarding our custom WordPress theme, we will create everything else. In this tutorial we have learned just the basics. Now we need to learn how to display each post with much more content.

Have you ever created a custom WordPress theme? What were the things you like or hate about it? Please share in the comments below.

Become a Sponsor

Posted by Igor Benic

Web Developer who mainly uses WordPress for projects. Working on various project through Codeable & Toptal. Author of several ebooks at https://leanpub.com/u/igorbenic.


  1. Darrell Brogdon August 30, 2018 at 11:46 pm

    Where is Part 2?


    1. I hope to complete it by next week. You can watch the whole thing on YouTube: https://www.youtube.com/playlist?list=PLObNInvLiEdpS-upYudW36IvMXlwvEmGZ


Leave a reply

Your email address will not be published. Required fields are marked *

This site uses Akismet to reduce spam. Learn how your comment data is processed.