How to Create Custom Page Templates in WordPress

How to Create Custom Page Templates in WordPress

Want to design unique pages in WordPress? Custom page templates let you control how specific pages look and work – beyond the default options. Here’s what you’ll learn:

  • Why use custom templates? Tailor layouts for landing pages, portfolios, team profiles, and more.
  • What you need: Basic knowledge of HTML, CSS, PHP, and a code editor like VS Code.
  • How to get started:
    1. Set up a local WordPress environment (e.g., LocalWP).
    2. Create a child theme to protect your edits.
    3. Build and apply your custom template using simple PHP code.

Quick Steps to Create a Custom Template:

  1. Create a PHP file in your child theme folder (e.g., page-portfolio.php).
  2. Add a header like this:

    /*
    Template Name: Custom Portfolio
    Template Post Type: page
    */
    
  3. Use WordPress functions like get_header() and the_content() to structure your page.
  4. Apply the template in the WordPress Page Editor.

Custom templates save time, ensure consistency, and improve user experience. Want to go deeper? Learn about reusable template parts, debugging, and optimization to make your pages even better.

3 Easy Ways to Create Custom Page Templates in WordPress

WordPress

Before You Start

Set up your environment carefully to avoid issues and create templates efficiently.

Required Skills and Tools

To build custom WordPress page templates, you’ll need to be familiar with these technologies and tools:

Skill/Tool Purpose Proficiency Level
HTML Structure content Intermediate
CSS Style templates Intermediate
PHP Handle WordPress logic Basic
Code Editor Write and edit files
Browser DevTools Debug and test templates Basic

For a smooth workflow, use editors like Visual Studio Code, Sublime Text, or Atom. These tools provide syntax highlighting and WordPress-specific plugins to make your work easier.

Local WordPress Setup

Avoid working on a live site while developing templates – it can cause errors and disrupt visitors. Instead, set up a local environment:

  • Install tools like LocalWP, XAMPP, or MAMP.
  • Set up a fresh local WordPress installation.
  • Import sample content to test your templates.
  • Add plugins like Debug Bar and Query Monitor to help with troubleshooting.

Once your local setup is ready, create a child theme to protect your customizations.

Child Theme Basics

Child themes ensure your custom templates remain intact during theme updates. Here’s how to set one up:

1. Create a child theme folder

In the wp-content/themes directory, create a new folder named after your child theme (e.g., your-theme-child).

2. Add a style.css file

Include the following header in your style.css file:

/*
Theme Name: Your Theme Child
Template: your-theme
Version: 1.0
Description: Child theme for custom templates
*/

3. Create a functions.php file

Use this file to load the parent theme’s styles:

<?php
add_action('wp_enqueue_scripts', function() {
    wp_enqueue_style('parent-style', 
        get_template_directory_uri() . '/style.css');
});

Activate your child theme, and you’re ready to safely create and modify templates. Keep all your custom template files in the child theme folder.

Creating Your First Template

Setting Up the File

Start by creating a new PHP file in your child theme folder. Give it a name that clearly reflects its purpose, like this:

// wp-content/themes/your-theme-child/page-portfolio.php

For example, you might name it page-about.php for an About page or page-services.php for a Services page.

Writing Template Headers

Add a template header at the top of your file so WordPress can identify it as a custom template:

<?php
/*
Template Name: Custom Portfolio
Template Post Type: page
*/

Here’s what each part does:

  • Template Name: The name that shows up in the WordPress admin panel.
  • Template Post Type: Defines which content types can use this template (optional).

Building the Template

Now, structure your template by including the following elements:

<?php
get_header();
?>

<main id="primary" class="site-main">
    <?php
    while ( have_posts() ) :
        the_post();
        ?>
        <article id="post-<?php the_ID(); ?>" <?php post_class(); ?>>
            <header class="entry-header">
                <?php the_title( '<h1 class="entry-title">', '</h1>' ); ?>
            </header>

            <div class="entry-content">
                <?php
                the_content();
                ?>
            </div>
        </article>
    <?php
    endwhile;
    ?>
</main>

<?php
get_footer();
?>

This code includes:

  • Header and footer calls: Ensures your page uses the theme’s header and footer.
  • The WordPress loop: Displays the content of the page.
  • Content display functions: Outputs the title and content of the page.
  • HTML structure: Provides the layout for your custom page.

Using the Template

To apply your new template, follow these steps:

  1. Go to the WordPress dashboard and edit the page you want to customize.
  2. In the Page Attributes section, select your custom template from the Template dropdown menu.
  3. Click Update to save your changes.

Now, your custom template will control the layout and functionality of the selected page. You can reuse this template for other pages as well. Once it’s set up, you can explore more advanced features to further refine your design.

sbb-itb-77ae9a4

Advanced Template Features

Template Parts

Template parts allow you to create modular and reusable sections within your theme, reducing repetitive code. By breaking your template into smaller components, you can streamline your workflow and maintain consistency across your site.

To use template parts, save common elements as separate files in your template-parts directory. For example:

// wp-content/themes/your-theme-child/template-parts/content-hero.php
<section class="hero-section">
    <h1><?php the_title(); ?></h1>
    <?php if ( has_post_thumbnail() ) : ?>
        <div class="hero-image">
            <?php the_post_thumbnail('full'); ?>
        </div>
    <?php endif; ?>

Template Development Tips

File Structure

Organize your files for better management. Place custom templates in your child theme’s root directory and use clear, descriptive names:

wp-content/themes/your-child-theme/
β”œβ”€β”€ template-parts/
β”‚   β”œβ”€β”€ content-hero.php
β”‚   └── content-sidebar.php
β”œβ”€β”€ page-portfolio.php
β”œβ”€β”€ page-landing.php
└── functions.php

Stick to lowercase, hyphenated file names to prevent server-related issues. Use prefixes like page- or single- to indicate the template’s purpose.

Security Measures

Once your file structure is ready, focus on securing your templates with these techniques:

  • Input Validation: Clean user inputs using WordPress functions:
$clean_title = sanitize_text_field($_POST['title']);
$clean_content = wp_kses_post($_POST['content']);
  • Safe Database Queries: Use prepared statements with $wpdb to avoid vulnerabilities:
global $wpdb;
$results = $wpdb->get_results(
    $wpdb->prepare(
        "SELECT * FROM $wpdb->posts WHERE post_author = %d",
        $user_id
    )
);
  • File Access Control: Add this line to your template files to block direct access:
defined('ABSPATH') || exit;

Speed Optimization

After securing your templates, work on improving performance by reducing unnecessary overhead:

  • Minimize Database Queries: Cache results to enhance efficiency:
$args = array(
    'post_type' => 'post',
    'posts_per_page' => 10,
    'cache_results' => true
);
$query = new WP_Query($args);
  • Asset Management: Load only the necessary CSS and JavaScript files:
function optimize_template_assets() {
    wp_enqueue_style('template-style', get_stylesheet_directory_uri() . '/assets/css/template.css', array(), '1.0.0');
    wp_enqueue_script('template-script', get_stylesheet_directory_uri() . '/assets/js/template.js', array('jquery'), '1.0.0', true);
}
add_action('wp_enqueue_scripts', 'optimize_template_assets');

Testing Methods

  • Local Testing: Use tools like LocalWP or XAMPP for development to simulate a server environment.
  • Cross-Browser Testing: Ensure compatibility across major browsers:
Browser Minimum Version
Chrome 90+
Firefox 88+
Safari 14+
Edge 90+
  • Responsive Testing: Test layouts on different screen sizes. For example, adjust styles for tablets:
@media screen and (max-width: 768px) {
    .template-content {
        padding: 15px;
        flex-direction: column;
    }
}
  • Debug Mode: Enable WordPress debug mode to catch issues:
// Add to wp-config.php
define('WP_DEBUG', true);
define('WP_DEBUG_LOG', true);
define('WP_DEBUG_DISPLAY', false);

Use browser DevTools and WordPress debug logs to monitor performance and fix errors.

Conclusion

Summary

Custom page templates let you create tailored website experiences. This guide outlines the key steps and methods for building templates effectively. Success in template creation depends on keeping files well-organized, ensuring strong security, and focusing on performance.

Here are some benefits of using custom templates:

  • More Control Over Design: Tailor layouts for specific content needs
  • Better User Experience: Design pages with a clear purpose
  • Consistent Site Organization: Keep styling uniform across similar pages
  • Faster Development: Reuse template components for common elements

This guide walks you through the process, from setup to optimization.

Steps to follow:

  1. Set up your local environment
  2. Create a child theme
  3. Add the right template headers
  4. Write clean, efficient code
  5. Test on multiple devices

Next Steps

Want to grow your WordPress skills? Check out WP Winners for tutorials on advanced template development. Dive deeper into areas like building custom forms with PHP, creating taxonomy templates, or managing user meta fields.

Join the WP Winners community to stay updated on WordPress best practices. Our platform regularly updates content to match the latest trends and security standards. Whether you’re designing a portfolio page or a complex landing page system, you’ll find expert guidance to improve your skills.

Have questions or challenges? Submit them to help us create content that meets your needs!

Related posts

More WorDPRESS Tips, tutorials and Guides