CoderFunda
  • Home
  • About us
    • Contact Us
    • Disclaimer
    • Privacy Policy
    • About us
  • Home
  • Php
  • HTML
  • CSS
  • JavaScript
    • JavaScript
    • Jquery
    • JqueryUI
    • Stock
  • SQL
  • Vue.Js
  • Python
  • Wordpress
  • C++
    • C++
    • C
  • Laravel
    • Laravel
      • Overview
      • Namespaces
      • Middleware
      • Routing
      • Configuration
      • Application Structure
      • Installation
    • Overview
  • DBMS
    • DBMS
      • PL/SQL
      • SQLite
      • MongoDB
      • Cassandra
      • MySQL
      • Oracle
      • CouchDB
      • Neo4j
      • DB2
      • Quiz
    • Overview
  • Entertainment
    • TV Series Update
    • Movie Review
    • Movie Review
  • More
    • Vue. Js
    • Php Question
    • Php Interview Question
    • Laravel Interview Question
    • SQL Interview Question
    • IAS Interview Question
    • PCS Interview Question
    • Technology
    • Other
⌕
Popular learning topics
PHP Laravel JavaScript CSS SQL Python Vue.js WordPress

19 September, 2026

How to Create a WordPress Theme: Build a Simple Demo Theme

 Programing Coderfunda     September 19, 2026     Wordpress, wordpress-tutorial     No comments   

 Creating a basic WordPress theme is a great way to learn PHP, HTML, CSS, and WordPress development. Below, we'll build a small working demo theme from scratch.

1. Create the theme folder

Go to:

wp-content/themes/

Create a folder:

my-demo-theme

Our final theme will look like this:

my-demo-theme/
├── style.css
├── index.php
├── functions.php
├── header.php
├── footer.php
└── single.php

2. Create style.css

Create:

style.css

Add the WordPress theme information at the top:

/*
Theme Name: My Demo Theme
Theme URI: https://example.com
Author: Your Name
Description: A simple beginner WordPress theme.
Version: 1.0
*/

body {
    margin: 0;
    font-family: Arial, sans-serif;
    background: #f5f5f5;
    color: #333;
}

.site-header {
    background: #222;
    color: white;
    padding: 30px;
    text-align: center;
}

.site-header a {
    color: white;
    text-decoration: none;
}

.site-content {
    max-width: 900px;
    margin: 30px auto;
    background: white;
    padding: 30px;
}

.site-footer {
    background: #222;
    color: white;
    text-align: center;
    padding: 20px;
}

The information at the top tells WordPress that this folder is a theme.


3. Create functions.php

Now create:

functions.php

Add:

<?php

function my_demo_theme_setup() {

    add_theme_support('title-tag');
    add_theme_support('post-thumbnails');

    register_nav_menus(
        array(
            'primary' => 'Primary Menu'
        )
    );
}

add_action('after_setup_theme', 'my_demo_theme_setup');

function my_demo_theme_styles() {

    wp_enqueue_style(
        'my-demo-theme-style',
        get_stylesheet_uri()
    );
}

add_action('wp_enqueue_scripts', 'my_demo_theme_styles');

This sets up basic theme features and loads our CSS file.


4. Create header.php

Create:

header.php

Add:

<!DOCTYPE html>
<html <?php language_attributes(); ?>>

<head>
    <meta charset="<?php bloginfo('charset'); ?>">
    <meta name="viewport" content="width=device-width, initial-scale=1">

    <?php wp_head(); ?>
</head>

<body <?php body_class(); ?>>

<header class="site-header">

    <h1>
        <a href="<?php echo esc_url(home_url('/')); ?>">
            <?php bloginfo('name'); ?>
        </a>
    </h1>

    <p><?php bloginfo('description'); ?></p>

</header>

<main class="site-content">

The important function here is:

wp_head();

WordPress and plugins use this hook to insert required information into the <head> section.


5. Create footer.php

Create:

footer.php

Add:

</main>

<footer class="site-footer">

    <p>
        &copy; <?php echo date('Y'); ?>
        <?php bloginfo('name'); ?>
    </p>

</footer>

<?php wp_footer(); ?>

</body>
</html>

wp_footer() is important because plugins and WordPress can use it to add scripts and other functionality before the closing </body> tag.


6. Create index.php

Now create the main template:

index.php

Add:

<?php get_header(); ?>

<h2>Latest Posts</h2>

<?php if (have_posts()) : ?>

    <?php while (have_posts()) : the_post(); ?>

        <article>

            <h2>
                <a href="<?php the_permalink(); ?>">
                    <?php the_title(); ?>
                </a>
            </h2>

            <p>
                <?php the_excerpt(); ?>
            </p>

        </article>

        <hr>

    <?php endwhile; ?>

<?php else : ?>

    <p>No posts found.</p>

<?php endif; ?>

<?php get_footer(); ?>

This is the famous WordPress Loop.

The basic idea is:

while (have_posts()) {
    the_post();
}

WordPress uses the Loop to display posts.


7. Create single.php

Create:

single.php

Add:

<?php get_header(); ?>

<?php if (have_posts()) : ?>

    <?php while (have_posts()) : the_post(); ?>

        <article>

            <h1><?php the_title(); ?></h1>

            <p>
                Published on:
                <?php echo get_the_date(); ?>
            </p>

            <?php the_content(); ?>

        </article>

    <?php endwhile; ?>

<?php endif; ?>

<?php get_footer(); ?>

This template displays an individual blog post.


8. Activate your theme

Go to your WordPress dashboard:

Appearance → Themes

You should see:

My Demo Theme

Click:

Activate

Now visit your website.

You have a working custom WordPress theme. 🎉


9. Create a demo post

Go to:

Posts → Add New

Create a post such as:

Welcome to My Demo Theme

Add some sample content:

This is my first post using a custom WordPress theme. I created this theme from scratch using PHP, HTML, and CSS.

Click Publish.

Return to your homepage and you should see the post.


10. How the theme works

The basic flow is:

WordPress
   ↓
index.php
   ↓
get_header()
   ↓
header.php
   ↓
WordPress Loop
   ↓
Post content
   ↓
get_footer()
   ↓
footer.php

The important files are:

FilePurpose
style.cssTheme information + CSS
functions.phpTheme functionality
header.phpWebsite header
footer.phpWebsite footer
index.phpMain fallback template
single.phpIndividual blog posts

Your first theme is now complete

Your folder should contain:

my-demo-theme/
│
├── style.css
├── functions.php
├── header.php
├── footer.php
├── index.php
└── single.php

This is a classic WordPress theme. It's intentionally simple so you can understand how WordPress themes work before moving on to more advanced topics such as page.php, archive.php, custom post types, template parts, widgets, customizer settings, and the WordPress REST API.

  • Share This:  
  •  Facebook
  •  Twitter
  •  Google+
  •  Stumble
  •  Digg
Email ThisBlogThis!Share to XShare to Facebook
Newer Post Older Post Home

0 comments:

Post a Comment

Thanks

Meta

Popular Posts

  • Python Loops
    Python Loops The flow of the programs written in any programming language is sequential by default. Sometimes we may need to alter the flow ...
  • Kunal Kemmu opens up on directing Sharmila Tagore in 'Vibe': 'She asked for synopsis'
    image/jpeg https://timesofindia.indiatimes.com/entertainment/hindi/bollywood/news/kunal-kemmu-opens-up-on-directing-sharmila-tagore-in-vibe-...
  • Join Dependency
    Join Dependency Join decomposition is a further generalization of Multivalued dependencies. If the join of R1 and R2 over C is equal to rela...
  • Teacher's welding dream turns into North Dakota's 32-mile giant sculpture highway
    https://timesofindia.indiatimes.com/world/us/in-1989-teacher-gary-greff-returned-to-his-shrinking-north-dakota-hometown-and-learned-to-weld...
  • Amid Deepika row, Preity opens up on her own 18-hour workdays
    image/jpeg https://timesofindia.indiatimes.com/entertainment/hindi/bollywood/news/amid-deepika-padukone-row-preity-zinta-opens-up-on-her-own...

Categories

  • Ajax (26)
  • Bootstrap (30)
  • DBMS (42)
  • HTML (12)
  • HTML5 (45)
  • JavaScript (10)
  • Jquery (34)
  • Jquery UI (2)
  • JqueryUI (32)
  • Laravel (1018)
  • Laravel Tutorials (23)
  • Laravel-Question (6)
  • Magento (9)
  • Magento 2 (95)
  • MariaDB (1)
  • MySql Tutorial (2)
  • PHP-Interview-Questions (3)
  • Php Question (13)
  • Python (36)
  • RDBMS (13)
  • SQL Tutorial (79)
  • Vue.js Tutorial (69)
  • Wordpress (157)
  • Wordpress Theme (3)
  • codeigniter (108)
  • oops (4)
  • php (853)

Social Media Links

  • Follow on Twitter
  • Like on Facebook
  • Subscribe on Youtube
  • Follow on Instagram

Pages

  • Home
  • Contact Us
  • Privacy Policy
  • About us

Blog Archive

  • ▼  2026 (215)
    • ▼  09/13 - 09/20 (10)
      • WordPress Theme Handbook vs Theme Developer Handbook
      • How to Create a WordPress Theme: Build a Simple De...
      • Creating a basic WordPress plugin
      • Learn WordPress PHP: A Beginner’s Guide to WordPre...
      • WordPress SEO Guide
      • Best WordPress Plugins for Beginners
      • How to Install WordPress
      • How to Learn WordPress: Beginner to Advanced Step-...
      • Learn WordPress Step by Step: Beginner to Advanced...
      • WordPress Tutorial for Beginners: Learn WordPress ...
    • ►  08/30 - 09/06 (87)
    • ►  08/16 - 08/23 (1)
    • ►  08/02 - 08/09 (8)
    • ►  07/26 - 08/02 (108)
    • ►  06/28 - 07/05 (1)
  • ►  2025 (4)
    • ►  07/06 - 07/13 (2)
    • ►  06/29 - 07/06 (2)
  • ►  2024 (486)
    • ►  09/15 - 09/22 (30)
    • ►  09/08 - 09/15 (35)
    • ►  09/01 - 09/08 (35)
    • ►  08/11 - 08/18 (2)
    • ►  08/04 - 08/11 (33)
    • ►  07/28 - 08/04 (30)
    • ►  07/07 - 07/14 (11)
    • ►  06/30 - 07/07 (35)
    • ►  06/23 - 06/30 (5)
    • ►  06/02 - 06/09 (31)
    • ►  05/26 - 06/02 (20)
    • ►  05/05 - 05/12 (29)
    • ►  04/28 - 05/05 (26)
    • ►  04/07 - 04/14 (10)
    • ►  03/31 - 04/07 (34)
    • ►  03/24 - 03/31 (10)
    • ►  03/03 - 03/10 (35)
    • ►  02/25 - 03/03 (15)
    • ►  02/04 - 02/11 (22)
    • ►  01/28 - 02/04 (30)
    • ►  01/07 - 01/14 (8)
  • ►  2023 (484)
    • ►  12/31 - 01/07 (35)
    • ►  12/24 - 12/31 (10)
    • ►  12/03 - 12/10 (33)
    • ►  11/26 - 12/03 (20)
    • ►  11/05 - 11/12 (35)
    • ►  10/29 - 11/05 (20)
    • ►  10/22 - 10/29 (9)
    • ►  10/15 - 10/22 (7)
    • ►  10/08 - 10/15 (9)
    • ►  10/01 - 10/08 (10)
    • ►  09/24 - 10/01 (9)
    • ►  09/17 - 09/24 (9)
    • ►  09/10 - 09/17 (7)
    • ►  09/03 - 09/10 (9)
    • ►  08/27 - 09/03 (9)
    • ►  08/20 - 08/27 (8)
    • ►  08/13 - 08/20 (8)
    • ►  08/06 - 08/13 (8)
    • ►  07/30 - 08/06 (8)
    • ►  07/23 - 07/30 (7)
    • ►  07/16 - 07/23 (8)
    • ►  07/09 - 07/16 (7)
    • ►  07/02 - 07/09 (8)
    • ►  06/25 - 07/02 (7)
    • ►  06/18 - 06/25 (7)
    • ►  06/11 - 06/18 (7)
    • ►  06/04 - 06/11 (11)
    • ►  05/28 - 06/04 (7)
    • ►  05/21 - 05/28 (8)
    • ►  05/14 - 05/21 (11)
    • ►  05/07 - 05/14 (7)
    • ►  04/30 - 05/07 (7)
    • ►  04/23 - 04/30 (8)
    • ►  04/16 - 04/23 (9)
    • ►  04/09 - 04/16 (7)
    • ►  04/02 - 04/09 (4)
    • ►  03/26 - 04/02 (21)
    • ►  03/19 - 03/26 (2)
    • ►  03/12 - 03/19 (9)
    • ►  03/05 - 03/12 (26)
    • ►  02/26 - 03/05 (25)
    • ►  01/15 - 01/22 (7)
    • ►  01/08 - 01/15 (1)
  • ►  2022 (1037)
    • ►  12/11 - 12/18 (13)
    • ►  12/04 - 12/11 (1)
    • ►  11/27 - 12/04 (40)
    • ►  11/06 - 11/13 (1)
    • ►  10/16 - 10/23 (13)
    • ►  09/04 - 09/11 (5)
    • ►  08/21 - 08/28 (24)
    • ►  08/14 - 08/21 (24)
    • ►  07/03 - 07/10 (9)
    • ►  06/19 - 06/26 (3)
    • ►  05/29 - 06/05 (3)
    • ►  05/22 - 05/29 (3)
    • ►  05/15 - 05/22 (109)
    • ►  05/01 - 05/08 (7)
    • ►  04/24 - 05/01 (7)
    • ►  04/17 - 04/24 (64)
    • ►  04/10 - 04/17 (115)
    • ►  04/03 - 04/10 (73)
    • ►  03/27 - 04/03 (77)
    • ►  03/13 - 03/20 (2)
    • ►  03/06 - 03/13 (25)
    • ►  02/27 - 03/06 (18)
    • ►  02/20 - 02/27 (153)
    • ►  02/13 - 02/20 (187)
    • ►  01/30 - 02/06 (45)
    • ►  01/23 - 01/30 (15)
    • ►  01/16 - 01/23 (1)
  • ►  2021 (412)
    • ►  10/24 - 10/31 (2)
    • ►  07/25 - 08/01 (1)
    • ►  07/11 - 07/18 (10)
    • ►  06/13 - 06/20 (29)
    • ►  05/23 - 05/30 (1)
    • ►  05/02 - 05/09 (24)
    • ►  04/25 - 05/02 (24)
    • ►  04/18 - 04/25 (112)
    • ►  04/11 - 04/18 (1)
    • ►  04/04 - 04/11 (6)
    • ►  03/28 - 04/04 (86)
    • ►  03/21 - 03/28 (19)
    • ►  03/14 - 03/21 (2)
    • ►  03/07 - 03/14 (10)
    • ►  02/28 - 03/07 (1)
    • ►  02/21 - 02/28 (29)
    • ►  02/14 - 02/21 (13)
    • ►  02/07 - 02/14 (12)
    • ►  01/31 - 02/07 (6)
    • ►  01/17 - 01/24 (2)
    • ►  01/10 - 01/17 (8)
    • ►  01/03 - 01/10 (14)
  • ►  2020 (376)
    • ►  12/27 - 01/03 (37)
    • ►  12/20 - 12/27 (92)
    • ►  12/13 - 12/20 (29)
    • ►  12/06 - 12/13 (37)
    • ►  11/29 - 12/06 (4)
    • ►  11/15 - 11/22 (14)
    • ►  11/08 - 11/15 (8)
    • ►  11/01 - 11/08 (2)
    • ►  10/18 - 10/25 (14)
    • ►  10/11 - 10/18 (16)
    • ►  10/04 - 10/11 (10)
    • ►  09/20 - 09/27 (10)
    • ►  09/06 - 09/13 (19)
    • ►  08/30 - 09/06 (26)
    • ►  08/23 - 08/30 (4)
    • ►  08/16 - 08/23 (2)
    • ►  07/12 - 07/19 (48)
    • ►  05/17 - 05/24 (2)
    • ►  01/05 - 01/12 (2)
  • ►  2019 (74)
    • ►  07/07 - 07/14 (6)
    • ►  06/16 - 06/23 (6)
    • ►  02/10 - 02/17 (17)
    • ►  01/13 - 01/20 (37)
    • ►  01/06 - 01/13 (8)
  • ►  2018 (376)
    • ►  12/30 - 01/06 (24)
    • ►  12/16 - 12/23 (8)
    • ►  12/09 - 12/16 (98)
    • ►  12/02 - 12/09 (16)
    • ►  11/18 - 11/25 (36)
    • ►  11/04 - 11/11 (18)
    • ►  10/28 - 11/04 (10)
    • ►  10/21 - 10/28 (26)
    • ►  10/14 - 10/21 (52)
    • ►  10/07 - 10/14 (4)
    • ►  09/30 - 10/07 (2)
    • ►  09/23 - 09/30 (68)
    • ►  09/16 - 09/23 (4)
    • ►  09/09 - 09/16 (4)
    • ►  08/26 - 09/02 (6)

Data Publish News

Loading...

Al Jazeera – Breaking News, World News and Video from Al Jazeera

Loading...

Laravel News

Loading...

Copyright © CoderFunda | Powered by Blogger
Design by Coderfunda | Blogger Theme by Coderfunda | Distributed By Coderfunda