Table of Contents
Toggle
Create the Theme Folder and style.css:
Create a folder in wp-content/themes/
directory of your WordPress installation. Let’s name it my-custom-theme
.
Inside the my-custom-theme
folder, create a style.css
file. This file will contain metadata about your theme:
/*
Theme Name: My Custom Theme
Theme URI: http://example.com/my-custom-theme
Description: A simple custom WordPress theme.
Author: Your Name
Author URI: http://example.com
Version: 1.0
*/
Create index.php File:
<?php get_header(); ?>
<div id="content">
<div class="container">
<?php if (have_posts()) : ?>
<?php while (have_posts()) : the_post(); ?>
<div class="post">
<h2><a href="<?php the_permalink(); ?>"><?php the_title(); ?></a></h2>
<div class="entry">
<?php the_content(); ?>
</div>
</div>
<?php endwhile; ?>
<?php else : ?>
<p><?php _e('Sorry, no posts matched your criteria.'); ?></p>
<?php endif; ?>
</div>
</div>
<?php get_footer(); ?>
Create header.php and footer.php Files:
These files contain the header and footer markup.
header.php
:
<!DOCTYPE html>
<html <?php language_attributes(); ?>>
<head>
<meta charset="<?php bloginfo('charset'); ?>">
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<title><?php bloginfo('name'); ?><?php wp_title('|'); ?></title>
<?php wp_head(); ?>
</head>
<body <?php body_class(); ?>>
<header>
<div class="container">
<h1><a href="<?php echo home_url(); ?>"><?php bloginfo('name'); ?></a></h1>
<p><?php bloginfo('description'); ?></p>
</div>
</header>
footer.php
:
<footer>
<div class="container">
<p>© <?php echo date('Y'); ?> <?php bloginfo('name'); ?></p>
</div>
</footer>
<?php wp_footer(); ?>
</body>
</html>
Create functions.php File:
This file can be used to enqueue styles and scripts.

<?php
function my_custom_theme_scripts() {
wp_enqueue_style('style', get_stylesheet_uri());
}
add_action('wp_enqueue_scripts', 'my_custom_theme_scripts');
Add CSS Styles:
You can add custom CSS styles in style.css
to customize your theme’s appearance.
/*
Theme Name: My Custom Theme
Theme URI: http://example.com/my-custom-theme
Description: A simple custom WordPress theme.
Author: Your Name
Author URI: http://example.com
Version: 1.0
License: GNU General Public License v2 or later
License URI: http://www.gnu.org/licenses/gpl-2.0.html
Text Domain: my-custom-theme
*/
/* Reset styles */
html, body, div, span, applet, object, iframe,
h1, h2, h3, h4, h5, h6, p, blockquote, pre,
a, abbr, acronym, address, big, cite, code,
del, dfn, em, img, ins, kbd, q, s, samp,
small, strike, strong, sub, sup, tt, var,
b, u, i, center,
dl, dt, dd, ol, ul, li,
fieldset, form, label, legend,
table, caption, tbody, tfoot, thead, tr, th, td,
article, aside, canvas, details, embed,
figure, figcaption, footer, header, hgroup,
menu, nav, output, ruby, section, summary,
time, mark, audio, video {
margin: 0;
padding: 0;
border: 0;
font: inherit;
vertical-align: baseline;
}
/* Global styles */
body {
font-family: Arial, sans-serif;
font-size: 16px;
line-height: 1.5;
background-color: #f0f0f0;
color: #333;
}
.container {
width: 90%;
margin: 0 auto;
}
a {
color: #0073e6;
text-decoration: none;
}
a:hover {
text-decoration: underline;
}
/* Header styles */
header {
background-color: #333;
color: #fff;
padding: 20px 0;
}
header h1 {
font-size: 24px;
}
/* Footer styles */
footer {
background-color: #333;
color: #fff;
padding: 20px 0;
text-align: center;
}
Testing and Customization:
Activate your theme from the WordPress admin dashboard and test it to ensure everything is working correctly. Customize your theme further by adding additional template files (single.php
, archive.php
, etc.) and incorporating more advanced functionalities if needed.
This is a basic WordPress theme structure. As you become more comfortable, you can explore more advanced features like custom post types, theme options, widget areas, and more.