get_header();
๐ฆ WordPress
โจ The Prompt Phrase
get_header();
๐ป Code Preview
๐ฆ All-in-One Code
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<title>get_header(); - Interactive Tutorial</title>
<link href="https://fonts.googleapis.com/css2?family=Poppins:wght@300;400;600;700&family=Fira+Code:wght@400;500&display=swap" rel="stylesheet">
<style>
:root {
--bg-primary: #0d1117;
--bg-secondary: #161b22;
--bg-card: #1c2128;
--accent-purple: #a855f7;
--accent-blue: #3b82f6;
--accent-green: #10b981;
--accent-cyan: #06b6d4;
--accent-pink: #ec4899;
--text-primary: #f0f6fc;
--text-secondary: #c9d1d9;
--text-muted: #8b949e;
--border-color: #30363d;
}
* {
margin: 0;
padding: 0;
box-sizing: border-box;
}
body {
font-family: 'Poppins', sans-serif;
background: var(--bg-primary);
color: var(--text-primary);
line-height: 1.6;
overflow-x: hidden;
}
.container {
max-width: 1200px;
margin: 0 auto;
padding: 20px;
}
/* Hero Section */
.hero {
min-height: 100vh;
display: flex;
align-items: center;
justify-content: center;
background: linear-gradient(135deg, #667eea 0%, #764ba2 50%, #f093fb 100%);
position: relative;
overflow: hidden;
}
.hero::before {
content: '';
position: absolute;
width: 200%;
height: 200%;
background:
repeating-linear-gradient(45deg, transparent, transparent 10px, rgba(255,255,255,0.03) 10px, rgba(255,255,255,0.03) 20px);
animation: moveBackground 20s linear infinite;
}
@keyframes moveBackground {
0% { transform: translate(0, 0); }
100% { transform: translate(50px, 50px); }
}
.hero-content {
text-align: center;
z-index: 1;
animation: fadeInUp 1s ease;
}
@keyframes fadeInUp {
from {
opacity: 0;
transform: translateY(30px);
}
to {
opacity: 1;
transform: translateY(0);
}
}
.hero h1 {
font-size: 4rem;
font-weight: 700;
margin-bottom: 20px;
text-shadow: 0 0 40px rgba(0,0,0,0.3);
animation: pulse 2s ease-in-out infinite;
}
@keyframes pulse {
0%, 100% { transform: scale(1); }
50% { transform: scale(1.05); }
}
.hero .code-highlight {
background: rgba(0,0,0,0.5);
padding: 20px 50px;
border-radius: 20px;
font-family: 'Fira Code', monospace;
display: inline-block;
backdrop-filter: blur(10px);
border: 3px solid rgba(255,255,255,0.3);
font-size: 2.5rem;
box-shadow: 0 10px 40px rgba(0,0,0,0.3);
}
.hero p {
font-size: 1.5rem;
margin-top: 30px;
opacity: 0.95;
}
.scroll-indicator {
position: absolute;
bottom: 30px;
left: 50%;
transform: translateX(-50%);
animation: bounce 2s infinite;
font-size: 2.5rem;
cursor: pointer;
filter: drop-shadow(0 0 10px rgba(255,255,255,0.5));
}
@keyframes bounce {
0%, 20%, 50%, 80%, 100% { transform: translateX(-50%) translateY(0); }
40% { transform: translateX(-50%) translateY(-15px); }
60% { transform: translateX(-50%) translateY(-7px); }
}
/* Progress Bar */
.progress-bar {
position: fixed;
top: 0;
left: 0;
height: 5px;
background: linear-gradient(90deg, var(--accent-purple), var(--accent-blue), var(--accent-green));
z-index: 1000;
transition: width 0.3s ease;
box-shadow: 0 0 20px rgba(168, 85, 247, 0.6);
}
/* Section Styles */
section {
padding: 80px 0;
opacity: 0;
transform: translateY(30px);
transition: all 0.6s ease;
}
section.visible {
opacity: 1;
transform: translateY(0);
}
.section-header {
text-align: center;
margin-bottom: 60px;
}
.section-header h2 {
font-size: 3rem;
background: linear-gradient(135deg, var(--accent-purple), var(--accent-cyan));
-webkit-background-clip: text;
-webkit-text-fill-color: transparent;
background-clip: text;
margin-bottom: 15px;
}
.section-header p {
color: var(--text-secondary);
font-size: 1.2rem;
}
/* Card Styles */
.card {
background: var(--bg-card);
border-radius: 20px;
padding: 40px;
margin-bottom: 30px;
border: 1px solid var(--border-color);
transition: all 0.3s ease;
position: relative;
overflow: hidden;
}
.card::before {
content: '';
position: absolute;
top: 0;
left: 0;
width: 100%;
height: 4px;
background: linear-gradient(90deg, var(--accent-purple), var(--accent-cyan));
transform: scaleX(0);
transition: transform 0.3s ease;
}
.card:hover::before {
transform: scaleX(1);
}
.card:hover {
transform: translateY(-5px);
box-shadow: 0 20px 40px rgba(0,0,0,0.4);
border-color: var(--accent-purple);
}
.card h3 {
font-size: 1.8rem;
margin-bottom: 20px;
color: var(--accent-purple);
}
.card h4 {
font-size: 1.3rem;
margin-bottom: 10px;
color: var(--accent-cyan);
}
.card ul {
margin-left: 20px;
margin-top: 10px;
}
.card li {
margin-bottom: 8px;
}
/* Code Block */
.code-block {
background: #0d1117;
border-radius: 15px;
padding: 25px;
margin: 20px 0;
position: relative;
font-family: 'Fira Code', monospace;
overflow-x: auto;
border: 1px solid var(--border-color);
box-shadow: 0 4px 20px rgba(0,0,0,0.3);
}
.code-block .copy-btn {
position: absolute;
top: 15px;
right: 15px;
background: var(--accent-purple);
color: white;
border: none;
padding: 8px 16px;
border-radius: 8px;
cursor: pointer;
font-size: 0.9rem;
transition: all 0.3s ease;
font-family: 'Poppins', sans-serif;
font-weight: 600;
}
.code-block .copy-btn:hover {
background: var(--accent-pink);
transform: scale(1.05);
}
.code-block pre {
margin: 0;
color: #e6edf3;
font-size: 0.95rem;
line-height: 1.6;
}
/* Grid Layout */
.grid {
display: grid;
grid-template-columns: repeat(auto-fit, minmax(300px, 1fr));
gap: 30px;
margin: 40px 0;
}
.grid-item {
background: var(--bg-card);
padding: 30px;
border-radius: 15px;
border: 1px solid var(--border-color);
transition: all 0.3s ease;
}
.grid-item:hover {
border-color: var(--accent-purple);
transform: translateY(-5px);
box-shadow: 0 10px 30px rgba(168, 85, 247, 0.3);
}
.grid-item .icon {
font-size: 3rem;
margin-bottom: 15px;
display: block;
}
/* Tabs */
.tabs {
display: flex;
gap: 10px;
margin-bottom: 30px;
flex-wrap: wrap;
}
.tab-btn {
background: var(--bg-secondary);
color: var(--text-secondary);
border: 1px solid var(--border-color);
padding: 12px 24px;
border-radius: 10px;
cursor: pointer;
transition: all 0.3s ease;
font-size: 1rem;
font-family: 'Poppins', sans-serif;
font-weight: 600;
}
.tab-btn:hover {
border-color: var(--accent-purple);
transform: translateY(-2px);
}
.tab-btn.active {
background: linear-gradient(135deg, var(--accent-purple), var(--accent-cyan));
color: white;
border-color: transparent;
}
.tab-content {
display: none;
}
.tab-content.active {
display: block;
animation: fadeIn 0.5s ease;
}
@keyframes fadeIn {
from { opacity: 0; }
to { opacity: 1; }
}
/* Quiz Styles */
.quiz-question {
background: var(--bg-card);
padding: 30px;
border-radius: 15px;
margin-bottom: 20px;
border: 1px solid var(--border-color);
}
.quiz-options {
display: flex;
flex-direction: column;
gap: 15px;
margin-top: 20px;
}
.quiz-option {
background: var(--bg-secondary);
padding: 15px 20px;
border-radius: 10px;
border: 2px solid var(--border-color);
cursor: pointer;
transition: all 0.3s ease;
}
.quiz-option:hover {
border-color: var(--accent-purple);
transform: translateX(5px);
}
.quiz-option.correct {
border-color: var(--accent-green);
background: rgba(16, 185, 129, 0.1);
}
.quiz-option.incorrect {
border-color: #ef4444;
background: rgba(239, 68, 68, 0.1);
}
.quiz-feedback {
margin-top: 20px;
padding: 15px;
border-radius: 10px;
display: none;
}
.quiz-feedback.show {
display: block;
animation: fadeIn 0.5s ease;
}
.quiz-feedback.correct {
background: rgba(16, 185, 129, 0.1);
border: 1px solid var(--accent-green);
color: var(--accent-green);
}
.quiz-feedback.incorrect {
background: rgba(239, 68, 68, 0.1);
border: 1px solid #ef4444;
color: #ef4444;
}
/* Summary Card */
.summary-card {
background: linear-gradient(135deg, rgba(168, 85, 247, 0.1), rgba(6, 182, 212, 0.1));
border: 2px solid var(--accent-purple);
border-radius: 20px;
padding: 40px;
margin: 40px 0;
}
.summary-grid {
display: grid;
grid-template-columns: repeat(auto-fit, minmax(250px, 1fr));
gap: 20px;
margin-top: 30px;
}
.summary-item {
background: var(--bg-card);
padding: 20px;
border-radius: 10px;
border-left: 4px solid var(--accent-purple);
}
.summary-item strong {
color: var(--accent-purple);
display: block;
margin-bottom: 10px;
}
/* Footer */
footer {
background: var(--bg-secondary);
padding: 40px 20px;
text-align: center;
border-top: 1px solid var(--border-color);
}
footer p {
color: var(--text-muted);
}
.badge {
display: inline-block;
background: linear-gradient(135deg, var(--accent-purple), var(--accent-cyan));
padding: 8px 16px;
border-radius: 20px;
font-size: 0.9rem;
margin: 5px;
}
/* Tooltip */
.tooltip {
position: relative;
display: inline-block;
border-bottom: 2px dotted var(--accent-purple);
cursor: help;
}
.tooltip .tooltiptext {
visibility: hidden;
background: var(--bg-card);
color: var(--text-primary);
text-align: center;
padding: 10px 15px;
border-radius: 10px;
border: 1px solid var(--accent-purple);
position: absolute;
z-index: 1;
bottom: 125%;
left: 50%;
transform: translateX(-50%);
opacity: 0;
transition: opacity 0.3s;
white-space: nowrap;
}
.tooltip:hover .tooltiptext {
visibility: visible;
opacity: 1;
}
/* Confetti */
.confetti {
position: fixed;
width: 10px;
height: 10px;
animation: confetti-fall 3s linear forwards;
}
@keyframes confetti-fall {
to {
transform: translateY(100vh) rotate(360deg);
opacity: 0;
}
}
/* Warning/Info Boxes */
.warning-box {
background: rgba(239, 68, 68, 0.1);
border-left: 4px solid #ef4444;
padding: 20px;
border-radius: 10px;
margin: 20px 0;
}
.success-box {
background: rgba(16, 185, 129, 0.1);
border-left: 4px solid var(--accent-green);
padding: 20px;
border-radius: 10px;
margin: 20px 0;
}
.info-box {
background: rgba(59, 130, 246, 0.1);
border-left: 4px solid var(--accent-blue);
padding: 20px;
border-radius: 10px;
margin: 20px 0;
}
/* Comparison Table */
.comparison-table {
width: 100%;
border-collapse: collapse;
margin: 20px 0;
}
.comparison-table th,
.comparison-table td {
padding: 15px;
text-align: left;
border-bottom: 1px solid var(--border-color);
}
.comparison-table th {
background: var(--bg-secondary);
color: var(--accent-purple);
font-weight: 600;
}
.comparison-table tr:hover {
background: rgba(168, 85, 247, 0.05);
}
/* Responsive */
@media (max-width: 768px) {
.hero h1 {
font-size: 2.5rem;
}
.hero .code-highlight {
font-size: 1.5rem;
padding: 15px 30px;
}
.hero p {
font-size: 1.2rem;
}
.section-header h2 {
font-size: 2rem;
}
.grid {
grid-template-columns: 1fr;
}
}
/* Flow Diagram */
.flow-diagram {
display: flex;
align-items: center;
justify-content: space-around;
flex-wrap: wrap;
gap: 20px;
margin: 30px 0;
}
.flow-step {
background: var(--bg-card);
padding: 20px;
border-radius: 15px;
border: 2px solid var(--accent-purple);
text-align: center;
min-width: 150px;
}
.flow-arrow {
font-size: 2rem;
color: var(--accent-purple);
}
/* Achievement Badge */
#quiz-complete {
text-align: center;
padding: 40px;
background: linear-gradient(135deg, rgba(168, 85, 247, 0.2), rgba(6, 182, 212, 0.2));
border-radius: 20px;
border: 2px solid var(--accent-purple);
margin-top: 30px;
}
/* Interactive Demo */
.demo-box {
background: var(--bg-secondary);
border: 2px solid var(--accent-purple);
border-radius: 15px;
padding: 30px;
margin: 20px 0;
}
.demo-button {
background: linear-gradient(135deg, var(--accent-purple), var(--accent-cyan));
color: white;
border: none;
padding: 12px 30px;
border-radius: 10px;
cursor: pointer;
font-size: 1rem;
font-weight: 600;
transition: all 0.3s ease;
margin: 10px;
}
.demo-button:hover {
transform: translateY(-2px);
box-shadow: 0 10px 20px rgba(168, 85, 247, 0.3);
}
.demo-output {
background: #0d1117;
border: 1px solid var(--border-color);
border-radius: 10px;
padding: 20px;
margin-top: 20px;
min-height: 100px;
font-family: 'Fira Code', monospace;
}
</style>
</head>
<body>
<div class="progress-bar" id="progressBar"></div>
<!-- Hero Section -->
<section class="hero">
<div class="hero-content">
<h1>๐ Master WordPress Functions</h1>
<div class="code-highlight">get_header();</div>
<p>The Function That Brings Your Header to Life</p>
</div>
<div class="scroll-indicator" onclick="document.getElementById('what-is-it').scrollIntoView({behavior: 'smooth'})">
โฌ๏ธ
</div>
</section>
<!-- What Is It Section -->
<section id="what-is-it">
<div class="container">
<div class="section-header">
<h2>๐ค What Is get_header()?</h2>
<p>Understanding this essential WordPress function</p>
</div>
<div class="card">
<h3>๐ The Simple Definition</h3>
<p><strong>get_header()</strong> is a <span class="tooltip">WordPress template tag<span class="tooltiptext">A PHP function that outputs or retrieves data</span></span> that includes the <code>header.php</code> file from your theme. Think of it as a magic command that summons your website's header wherever you need it!</p>
<div class="info-box">
<strong>๐ฌ Real-World Analogy:</strong>
<p>Imagine you're building with LEGO blocks. Instead of recreating the same roof piece for every house, you have a master roof piece you can snap onto any building. That's what <code>get_header()</code> doesโit snaps your pre-built header onto any page!</p>
</div>
<div class="grid">
<div class="grid-item">
<span class="icon">๐</span>
<h4>What It Does</h4>
<p>Includes <code>header.php</code> from your active theme directory</p>
</div>
<div class="grid-item">
<span class="icon">๐ง</span>
<h4>Type</h4>
<p>WordPress template tag / PHP function</p>
</div>
<div class="grid-item">
<span class="icon">๐</span>
<h4>Where to Use</h4>
<p>At the beginning of template files (index.php, page.php, etc.)</p>
</div>
</div>
</div>
<div class="card">
<h3>๐ Basic Syntax</h3>
<div class="code-block">
<button class="copy-btn" onclick="copyCode(this)">๐ Copy</button>
<pre><code>// Basic usage - includes header.php
<?php get_header(); ?>
// With parameter - includes header-custom.php
<?php get_header('custom'); ?>
// With parameter - includes header-home.php
<?php get_header('home'); ?></code></pre>
</div>
</div>
</div>
</section>
<!-- Why Use It Section -->
<section id="why-use-it">
<div class="container">
<div class="section-header">
<h2>๐ก Why Use get_header()?</h2>
<p>The superpowers this function gives you</p>
</div>
<div class="grid">
<div class="card">
<h3>โป๏ธ Code Reusability</h3>
<p><strong>Write Once, Use Everywhere!</strong> Instead of copying 100+ lines of header code to every template, just call get_header() and boomโinstant header!</p>
</div>
<div class="card">
<h3>๐ฏ Easy Maintenance</h3>
<p>Update your header in ONE place (header.php) and it changes across your entire website. No more hunting through 20 files!</p>
</div>
<div class="card">
<h3>๐๏ธ WordPress Standard</h3>
<p>Follows WordPress best practices. Your theme will be professional, maintainable, and compatible with plugins.</p>
</div>
<div class="card">
<h3>๐จ Multiple Headers</h3>
<p>Create different header styles (header-home.php, header-shop.php) and load them conditionally!</p>
</div>
<div class="card">
<h3>๐ Plugin Friendly</h3>
<p>Plugins can hook into the header loading process, adding features without breaking your theme.</p>
</div>
<div class="card">
<h3>โก Performance</h3>
<p>PHP includes are lightning fast. Plus, no duplicate code means smaller file sizes!</p>
</div>
</div>
</div>
</section>
<!-- How It Works Section -->
<section id="how-it-works">
<div class="container">
<div class="section-header">
<h2>โ๏ธ How Does It Work?</h2>
<p>Behind the scenes magic explained</p>
</div>
<div class="card">
<h3>๐ The Execution Flow</h3>
<div class="flow-diagram">
<div class="flow-step">
<strong>1. You Call</strong>
<p>get_header()</p>
</div>
<div class="flow-arrow">โ</div>
<div class="flow-step">
<strong>2. WordPress Searches</strong>
<p>Finds header.php</p>
</div>
<div class="flow-arrow">โ</div>
<div class="flow-step">
<strong>3. File Loads</strong>
<p>Includes the file</p>
</div>
<div class="flow-arrow">โ</div>
<div class="flow-step">
<strong>4. Magic!</strong>
<p>Header appears</p>
</div>
</div>
<div class="info-box">
<strong>Step-by-Step Breakdown:</strong>
<ol>
<li><strong>Function Call:</strong> Your template file executes <code>get_header()</code></li>
<li><strong>File Search:</strong> WordPress looks for <code>header.php</code> in your theme folder</li>
<li><strong>Hook Fires:</strong> WordPress triggers the <code>get_header</code> action hook (plugins can use this!)</li>
<li><strong>File Inclusion:</strong> WordPress uses PHP's include system to load the file</li>
<li><strong>Execution:</strong> The header.php code runs, outputting HTML</li>
</ol>
</div>
</div>
<div class="card">
<h3>๐ Real-World Example</h3>
<p>Here's how a typical WordPress page template uses get_header():</p>
<div class="code-block">
<button class="copy-btn" onclick="copyCode(this)">๐ Copy</button>
<pre><code>/**
* Template Name: My Page Template
*/
// ๐ This brings in your entire header
<?php get_header(); ?>
<!-- Now your main content goes here -->
<main id="primary" class="site-main">
<?php
while ( have_posts() ) :
the_post();
the_title( '<h1>', '</h1>' );
the_content();
endwhile;
?>
</main>
<!-- And finish with the footer -->
<?php get_footer(); ?></code></pre>
</div>
</div>
</div>
</section>
<!-- Live Demo Section -->
<section id="live-demo">
<div class="container">
<div class="section-header">
<h2>๐ฎ Interactive Demo</h2>
<p>See get_header() in action!</p>
</div>
<div class="card">
<h3>๐ฏ Try It Yourself</h3>
<p>Click the buttons to see how different get_header() calls work:</p>
<div class="demo-box">
<button class="demo-button" onclick="showDemo('default')">Default Header</button>
<button class="demo-button" onclick="showDemo('custom')">Custom Header</button>
<button class="demo-button" onclick="showDemo('home')">Home Header</button>
<div class="demo-output" id="demoOutput">
<p style="color: var(--text-muted);">๐ Click a button above to see the output!</p>
</div>
</div>
</div>
<div class="card">
<div class="tabs">
<button class="tab-btn active" onclick="switchTab(event, 'basic')">Basic Usage</button>
<button class="tab-btn" onclick="switchTab(event, 'custom')">Custom Headers</button>
<button class="tab-btn" onclick="switchTab(event, 'conditional')">Conditional Loading</button>
</div>
<div id="basic" class="tab-content active">
<h3>๐ฏ Basic Usage</h3>
<p>The standard way to include your header:</p>
<div class="code-block">
<button class="copy-btn" onclick="copyCode(this)">๐ Copy</button>
<pre><code>/**
* index.php - Main template file
*/
<?php get_header(); ?>
<div class="container">
<?php
if ( have_posts() ) :
while ( have_posts() ) :
the_post();
the_title( '<h2>', '</h2>' );
the_content();
endwhile;
endif;
?>
</div>
<?php get_footer(); ?></code></pre>
</div>
<div class="success-box">
<strong>โ
What happens:</strong>
<ul>
<li>WordPress includes <code>header.php</code></li>
<li>Your header HTML renders (logo, nav, etc.)</li>
<li>The <code>wp_head()</code> hook fires</li>
<li>Page content displays</li>
</ul>
</div>
</div>
<div id="custom" class="tab-content">
<h3>๐ Custom Headers</h3>
<p>Load different header variations:</p>
<div class="code-block">
<button class="copy-btn" onclick="copyCode(this)">๐ Copy</button>
<pre><code>/**
* front-page.php - Homepage
*/
// Loads header-home.php (with hero section)
<?php get_header('home'); ?>
<div class="hero-section">
<h1>Welcome!</h1>
</div>
<?php get_footer(); ?>
// ---
/**
* page-shop.php - Shop page
*/
// Loads header-shop.php (with cart icon)
<?php get_header('shop'); ?>
<div class="shop-content">
<!-- Products here -->
</div>
<?php get_footer(); ?></code></pre>
</div>
<div class="info-box">
<strong>๐ก File Naming:</strong>
<ul>
<li><code>get_header('home')</code> โ header-home.php</li>
<li><code>get_header('shop')</code> โ header-shop.php</li>
<li><code>get_header('minimal')</code> โ header-minimal.php</li>
</ul>
</div>
</div>
<div id="conditional" class="tab-content">
<h3>๐ Conditional Loading</h3>
<p>Load different headers based on page type:</p>
<div class="code-block">
<button class="copy-btn" onclick="copyCode(this)">๐ Copy</button>
<pre><code><?php
// Smart header loading
if ( is_front_page() ) {
// Homepage gets hero header
get_header('home');
} elseif ( is_page('shop') ) {
// Shop gets e-commerce header
get_header('shop');
} elseif ( is_singular('post') ) {
// Blog posts get minimal header
get_header('minimal');
} else {
// Everything else gets default
get_header();
}
?>
<main class="site-content">
<!-- Content here -->
</main>
<?php get_footer(); ?></code></pre>
</div>
</div>
</div>
</div>
</section>
<!-- Code Breakdown Section -->
<section id="code-breakdown">
<div class="container">
<div class="section-header">
<h2>๐ Code Breakdown</h2>
<p>Understanding every piece</p>
</div>
<div class="card">
<h3>๐ Function Signature</h3>
<div class="code-block">
<button class="copy-btn" onclick="copyCode(this)">๐ Copy</button>
<pre><code>get_header( $name = null )</code></pre>
</div>
<table class="comparison-table">
<thead>
<tr>
<th>Parameter</th>
<th>Type</th>
<th>Default</th>
<th>Description</th>
</tr>
</thead>
<tbody>
<tr>
<td><code>$name</code></td>
<td>string</td>
<td>null</td>
<td>Name of specialized header (optional)</td>
</tr>
</tbody>
</table>
<div class="grid" style="margin-top: 30px;">
<div class="grid-item">
<h4>Return Value</h4>
<p><strong>Type:</strong> void</p>
<p>This function doesn't return anythingโit directly outputs HTML</p>
</div>
<div class="grid-item">
<h4>File Search Order</h4>
<p>1. header-{name}.php</p>
<p>2. header.php</p>
<p>3. Fallback (if neither exists)</p>
</div>
</div>
</div>
<div class="card">
<h3>๐ฏ What WordPress Does Internally</h3>
<p>Simplified version of the actual WordPress code:</p>
<div class="code-block">
<button class="copy-btn" onclick="copyCode(this)">๐ Copy</button>
<pre><code>function get_header( $name = null ) {
// Fire action hook (plugins can use this)
do_action( 'get_header', $name );
// Build array of templates to search for
$templates = array();
if ( $name ) {
$templates[] = "header-{$name}.php";
}
$templates[] = 'header.php';
// Find and load the template
locate_template( $templates, true );
}</code></pre>
</div>
</div>
</div>
</section>
<!-- Common Mistakes Section -->
<section id="common-mistakes">
<div class="container">
<div class="section-header">
<h2>โ ๏ธ Common Mistakes</h2>
<p>Avoid these pitfalls!</p>
</div>
<div class="card">
<div class="warning-box">
<h3>โ Mistake #1: Forgetting the Semicolon</h3>
<div class="code-block">
<pre><code>// WRONG - PHP syntax error!
<?php get_header() ?>
// CORRECT
<?php get_header(); ?></code></pre>
</div>
</div>
<div class="warning-box">
<h3>โ Mistake #2: Wrong File Naming</h3>
<div class="code-block">
<pre><code>// If you call:
<?php get_header('custom'); ?>
// WRONG file names:
// โ customheader.php
// โ header_custom.php
// โ custom-header.php
// CORRECT:
// โ
header-custom.php</code></pre>
</div>
</div>
<div class="warning-box">
<h3>โ Mistake #3: Calling After HTML</h3>
<div class="code-block">
<pre><code>// WRONG - Header in wrong place
<div class="content">
<h1>My Page</h1>
<?php get_header(); ?> <!-- Too late! -->
// CORRECT - Header first
<?php get_header(); ?>
<div class="content">
<h1>My Page</h1></code></pre>
</div>
</div>
<div class="warning-box">
<h3>โ Mistake #4: Using include() Instead</h3>
<div class="code-block">
<pre><code>// WRONG - Bypasses WordPress hooks
<?php include('header.php'); ?>
// CORRECT - Use WordPress function
<?php get_header(); ?></code></pre>
</div>
</div>
</div>
</div>
</section>
<!-- Pro Tips Section -->
<section id="pro-tips">
<div class="container">
<div class="section-header">
<h2>๐ Pro Tips</h2>
<p>Level up your skills!</p>
</div>
<div class="grid">
<div class="card">
<h3>๐ก Tip #1: Hook Into Loading</h3>
<div class="code-block">
<pre><code>// In functions.php
add_action('get_header', function($name) {
// Run code before header loads
error_log('Loading: ' . $name);
});</code></pre>
</div>
</div>
<div class="card">
<h3>๐ Tip #2: Smart Switcher</h3>
<div class="code-block">
<pre><code>function mytheme_smart_header() {
if (is_front_page()) {
get_header('home');
} elseif (is_woocommerce()) {
get_header('shop');
} else {
get_header();
}
}</code></pre>
</div>
</div>
<div class="card">
<h3>๐จ Tip #3: Pass Data</h3>
<div class="code-block">
<pre><code>// In template
global $header_class;
$header_class = 'transparent';
get_header();
// In header.php
global $header_class;
echo $header_class;</code></pre>
</div>
</div>
<div class="card">
<h3>โก Tip #4: Child Themes</h3>
<div class="code-block">
<pre><code>// Parent: header.php (untouched)
// Child: header.php (custom)
// WordPress uses child version!</code></pre>
</div>
</div>
<div class="card">
<h3>๐ Tip #5: Mobile Headers</h3>
<div class="code-block">
<pre><code>if (wp_is_mobile()) {
get_header('mobile');
} else {
get_header();
}</code></pre>
</div>
</div>
<div class="card">
<h3>๐ฑ Tip #6: Documentation</h3>
<div class="code-block">
<pre><code>/**
* Header Template
* @package MyTheme
* @version 1.0
*/</code></pre>
</div>
</div>
</div>
</div>
</section>
<!-- Quiz Section -->
<section id="quiz">
<div class="container">
<div class="section-header">
<h2>๐ฏ Test Your Knowledge!</h2>
<p>Time to prove you're a get_header() master!</p>
</div>
<div class="quiz-question">
<h3>Question 1: What file does get_header('shop'); load?</h3>
<div class="quiz-options">
<div class="quiz-option" onclick="checkAnswer(this, false, 1)">
A) shop-header.php
</div>
<div class="quiz-option" onclick="checkAnswer(this, true, 1)">
B) header-shop.php
</div>
<div class="quiz-option" onclick="checkAnswer(this, false, 1)">
C) header_shop.php
</div>
<div class="quiz-option" onclick="checkAnswer(this, false, 1)">
D) shop.php
</div>
</div>
<div class="quiz-feedback" id="feedback1"></div>
</div>
<div class="quiz-question">
<h3>Question 2: Where should get_header() be called?</h3>
<div class="quiz-options">
<div class="quiz-option" onclick="checkAnswer(this, true, 2)">
A) At the very beginning of template files
</div>
<div class="quiz-option" onclick="checkAnswer(this, false, 2)">
B) After the <body> tag
</div>
<div class="quiz-option" onclick="checkAnswer(this, false, 2)">
C) In the middle of content
</div>
<div class="quiz-option" onclick="checkAnswer(this, false, 2)">
D) Before get_footer()
</div>
</div>
<div class="quiz-feedback" id="feedback2"></div>
</div>
<div class="quiz-question">
<h3>Question 3: What's the correct syntax?</h3>
<div class="quiz-options">
<div class="quiz-option" onclick="checkAnswer(this, false, 3)">
A) include('header.php');
</div>
<div class="quiz-option" onclick="checkAnswer(this, true, 3)">
B) <?php get_header(); ?>
</div>
<div class="quiz-option" onclick="checkAnswer(this, false, 3)">
C) <?php the_header(); ?>
</div>
<div class="quiz-option" onclick="checkAnswer(this, false, 3)">
D) <?php load_header(); ?>
</div>
</div>
<div class="quiz-feedback" id="feedback3"></div>
</div>
<div id="quiz-complete" style="display: none;">
<h2 style="font-size: 3rem;">๐ Congratulations!</h2>
<p style="font-size: 1.5rem; margin-top: 20px;">You're now a get_header() expert!</p>
<div class="badge">WordPress Master</div>
<div class="badge">Function Expert</div>
<div class="badge">Theme Developer</div>
</div>
</div>
</section>
<!-- Summary Section -->
<section id="summary">
<div class="container">
<div class="section-header">
<h2>๐ Quick Reference</h2>
<p>Your get_header() cheat sheet</p>
</div>
<div class="summary-card">
<h3>๐ฏ get_header() Essentials</h3>
<div class="summary-grid">
<div class="summary-item">
<strong>โ
Basic Usage</strong>
<p><?php get_header(); ?></p>
</div>
<div class="summary-item">
<strong>โ
Custom Header</strong>
<p><?php get_header('name'); ?></p>
</div>
<div class="summary-item">
<strong>โ
File Loaded</strong>
<p>header.php or header-{name}.php</p>
</div>
<div class="summary-item">
<strong>โ
When to Call</strong>
<p>Start of template files</p>
</div>
<div class="summary-item">
<strong>โ
Action Hook</strong>
<p>do_action('get_header')</p>
</div>
<div class="summary-item">
<strong>โ
Return Value</strong>
<p>void (outputs directly)</p>
</div>
<div class="summary-item">
<strong>โ
File Naming</strong>
<p>header-{name}.php format</p>
</div>
<div class="summary-item">
<strong>โ
Child Theme</strong>
<p>Overrides parent automatically</p>
</div>
</div>
<div class="success-box" style="margin-top: 30px;">
<h4>๐ Key Takeaways:</h4>
<ul>
<li>โจ Includes your theme's header template</li>
<li>๐ฏ Always call at the start of templates</li>
<li>๐จ Use parameters for custom variations</li>
<li>โก Never use PHP include() instead</li>
<li>๐ง Follows WordPress best practices</li>
<li>๐ Makes maintenance super easy</li>
</ul>
</div>
</div>
</div>
</section>
<!-- Footer -->
<footer>
<div class="container">
<h3 style="margin-bottom: 20px;">๐ You Did It!</h3>
<p>You've mastered get_header() and are ready to build amazing WordPress themes!</p>
<p style="margin-top: 20px; color: var(--text-muted); font-size: 0.9rem;">
Generated by <strong>AI Prompt Dictionary</strong> ๐ค<br>
Making learning interactive, fun, and effective!
</p>
<div style="margin-top: 30px;">
<span class="badge">Interactive Learning</span>
<span class="badge">WordPress Expert</span>
<span class="badge">Theme Development</span>
</div>
</div>
</footer>
<script>
// Progress Bar
window.addEventListener('scroll', () => {
const windowHeight = window.innerHeight;
const documentHeight = document.documentElement.scrollHeight - windowHeight;
const scrolled = window.scrollY;
const progress = (scrolled / documentHeight) * 100;
document.getElementById('progressBar').style.width = progress + '%';
});
// Intersection Observer
const sections = document.querySelectorAll('section');
const observerOptions = {
threshold: 0.1,
rootMargin: '0px 0px -100px 0px'
};
const observer = new IntersectionObserver((entries) => {
entries.forEach(entry => {
if (entry.isIntersecting) {
entry.target.classList.add('visible');
}
});
}, observerOptions);
sections.forEach(section => observer.observe(section));
// Tab Switching
function switchTab(event, tabName) {
const tabContents = document.querySelectorAll('.tab-content');
const tabBtns = document.querySelectorAll('.tab-btn');
tabContents.forEach(content => content.classList.remove('active'));
tabBtns.forEach(btn => btn.classList.remove('active'));
document.getElementById(tabName).classList.add('active');
event.target.classList.add('active');
}
// Copy Code
function copyCode(button) {
const codeBlock = button.nextElementSibling;
const code = codeBlock.textContent;
navigator.clipboard.writeText(code).then(() => {
button.textContent = 'โ Copied!';
button.style.background = 'var(--accent-green)';
setTimeout(() => {
button.textContent = '๐ Copy';
button.style.background = 'var(--accent-purple)';
}, 2000);
});
}
// Interactive Demo
function showDemo(type) {
const output = document.getElementById('demoOutput');
const demos = {
default: `<span style="color: var(--accent-green);">โ
Loading:</span> header.php
<span style="color: var(--text-secondary);">// WordPress includes your default header
// Contains: logo, navigation, wp_head() hook</span>`,
custom: `<span style="color: var(--accent-cyan);">โ
Loading:</span> header-custom.php
<span style="color: var(--text-secondary);">// Custom header with special styling
// Perfect for unique page layouts</span>`,
home: `<span style="color: var(--accent-pink);">โ
Loading:</span> header-home.php
<span style="color: var(--text-secondary);">// Homepage header with hero section
// Optimized for landing pages</span>`
};
output.innerHTML = `<pre style="margin: 0;">${demos[type]}</pre>`;
}
// Quiz Logic
let correctAnswers = 0;
let answeredQuestions = new Set();
function checkAnswer(element, isCorrect, questionNum) {
if (answeredQuestions.has(questionNum)) return;
answeredQuestions.add(questionNum);
const feedback = document.getElementById('feedback' + questionNum);
const options = element.parentElement.querySelectorAll('.quiz-option');
options.forEach(opt => opt.style.pointerEvents = 'none');
if (isCorrect) {
element.classList.add('correct');
feedback.className = 'quiz-feedback correct show';
feedback.innerHTML = '๐ Correct! You\'re crushing it!';
correctAnswers++;
createConfetti();
} else {
element.classList.add('incorrect');
feedback.className = 'quiz-feedback incorrect show';
feedback.innerHTML = 'โ Not quite! Review the section above.';
}
if (answeredQuestions.size === 3 && correctAnswers === 3) {
setTimeout(() => {
document.getElementById('quiz-complete').style.display = 'block';
createMegaConfetti();
}, 1000);
}
}
// Confetti
function createConfetti() {
const colors = ['#a855f7', '#3b82f6', '#10b981', '#ec4899'];
for (let i = 0; i < 30; i++) {
const confetti = document.createElement('div');
confetti.className = 'confetti';
confetti.style.left = Math.random() * 100 + '%';
confetti.style.background = colors[Math.floor(Math.random() * colors.length)];
confetti.style.animationDelay = Math.random() * 0.5 + 's';
document.body.appendChild(confetti);
setTimeout(() => confetti.remove(), 3000);
}
}
function createMegaConfetti() {
const colors = ['#a855f7', '#3b82f6', '#10b981', '#ec4899', '#f59e0b'];
for (let i = 0; i < 100; i++) {
const confetti = document.createElement('div');
confetti.className = 'confetti';
confetti.style.left = Math.random() * 100 + '%';
confetti.style.background = colors[Math.floor(Math.random() * colors.length)];
confetti.style.animationDelay = (Math.random() * 2) + 's';
confetti.style.width = (Math.random() * 10 + 5) + 'px';
confetti.style.height = confetti.style.width;
document.body.appendChild(confetti);
setTimeout(() => confetti.remove(), 5000);
}
}
</script>
</body>
</html>
Live Preview