โœจ The Prompt Phrase
get_footer()

๐Ÿ’ป 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_footer(); - 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: #0a0e27;
            --bg-secondary: #151a35;
            --bg-card: #1a2142;
            --accent-purple: #a855f7;
            --accent-blue: #3b82f6;
            --accent-green: #10b981;
            --accent-cyan: #06b6d4;
            --accent-pink: #ec4899;
            --accent-orange: #f59e0b;
            --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>๐ŸŽฌ Complete Your WordPress Pages</h1>
            <div class="code-highlight">get_footer();</div>
            <p>The Perfect Ending to Every Page</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_footer()?</h2>
                <p>The function that wraps up your pages beautifully</p>
            </div>

            <div class="card">
                <h3>๐Ÿ“– The Simple Definition</h3>
                <p><strong>get_footer()</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>footer.php</code> file from your theme. It's the closing act of your websiteโ€”the credits roll, the curtain call, the grand finale!</p>
                
                <div class="info-box">
                    <strong>๐ŸŽญ Real-World Analogy:</strong>
                    <p>Think of a movie. The footer is like the end creditsโ€”it wraps everything up, closes all the tags, and gives credit where it's due. Without it, your movie (webpage) would just... stop abruptly. Awkward!</p>
                </div>

                <div class="grid">
                    <div class="grid-item">
                        <span class="icon">๐Ÿ“‚</span>
                        <h4>What It Does</h4>
                        <p>Includes <code>footer.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 END of template files (after your content)</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 footer.php
&lt;?php get_footer(); ?&gt;

// With parameter - includes footer-custom.php
&lt;?php get_footer('custom'); ?&gt;

// With parameter - includes footer-minimal.php
&lt;?php get_footer('minimal'); ?&gt;</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_footer()?</h2>
                <p>The superpowers of proper page endings</p>
            </div>

            <div class="grid">
                <div class="card">
                    <h3>โ™ป๏ธ DRY Principle</h3>
                    <p><strong>Don't Repeat Yourself!</strong> Write your footer once in footer.php, then summon it anywhere with one line of code. Update once, change everywhere!</p>
                </div>

                <div class="card">
                    <h3>๐Ÿ”’ Closes HTML Properly</h3>
                    <p>Ensures all HTML tags are closed correctly (&lt;/body&gt;, &lt;/html&gt;). No more broken layouts or validation errors!</p>
                </div>

                <div class="card">
                    <h3>๐Ÿ“Š Critical Hooks</h3>
                    <p>Fires the <code>wp_footer()</code> hookโ€”essential for plugins to add tracking codes, scripts, and the WordPress admin bar!</p>
                </div>

                <div class="card">
                    <h3>๐Ÿ”— Footer Content</h3>
                    <p>Perfect place for copyright info, social links, footer menus, and widgets. All managed in one place!</p>
                </div>

                <div class="card">
                    <h3>โšก Performance Scripts</h3>
                    <p>Load JavaScript at the end of the page for faster initial rendering. Better user experience!</p>
                </div>

                <div class="card">
                    <h3>๐ŸŽจ Multiple Footers</h3>
                    <p>Create different footer styles (footer-shop.php, footer-minimal.php) and load them conditionally!</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>The magic behind the curtain</p>
            </div>

            <div class="card">
                <h3>๐Ÿ”„ The Execution Flow</h3>
                
                <div class="flow-diagram">
                    <div class="flow-step">
                        <strong>1. Content Ends</strong>
                        <p>Your page content finishes</p>
                    </div>
                    <div class="flow-arrow">โ†’</div>
                    <div class="flow-step">
                        <strong>2. Call get_footer()</strong>
                        <p>Function is executed</p>
                    </div>
                    <div class="flow-arrow">โ†’</div>
                    <div class="flow-step">
                        <strong>3. Footer Loads</strong>
                        <p>footer.php included</p>
                    </div>
                    <div class="flow-arrow">โ†’</div>
                    <div class="flow-step">
                        <strong>4. Page Complete!</strong>
                        <p>HTML closed properly</p>
                    </div>
                </div>

                <div class="info-box">
                    <strong>Step-by-Step Breakdown:</strong>
                    <ol>
                        <li><strong>Function Call:</strong> Your template executes <code>get_footer()</code></li>
                        <li><strong>Hook Fires:</strong> WordPress triggers the <code>get_footer</code> action (plugins can hook in!)</li>
                        <li><strong>File Search:</strong> WordPress looks for <code>footer.php</code> in your theme</li>
                        <li><strong>File Inclusion:</strong> The footer.php file is loaded and executed</li>
                        <li><strong>wp_footer() Runs:</strong> Critical hook fires (plugins add scripts here)</li>
                        <li><strong>HTML Closes:</strong> &lt;/body&gt; and &lt;/html&gt; tags close the page</li>
                    </ol>
                </div>
            </div>

            <div class="card">
                <h3>๐Ÿ“ Complete Page Example</h3>
                <p>Here's how a full WordPress page template flows:</p>
                
                <div class="code-block">
                    <button class="copy-btn" onclick="copyCode(this)">๐Ÿ“‹ Copy</button>
                    <pre><code>/**
 * Template Name: Full Page Example
 */

// ๐Ÿ‘† Start with the header
&lt;?php get_header(); ?&gt;

&lt;!-- Your main content area --&gt;
&lt;main id="primary" class="site-main"&gt;
  
  &lt;?php
  while ( have_posts() ) :
      the_post();
      the_title( '&lt;h1&gt;', '&lt;/h1&gt;' );
      the_content();
  endwhile;
  ?&gt;
  
&lt;/main&gt;

&lt;!-- ๐Ÿ‘‡ End with the footer --&gt;
&lt;?php get_footer(); ?&gt;</code></pre>
                </div>

                <div class="success-box">
                    <strong>โœ… Perfect Structure:</strong>
                    <p>Header opens everything, content fills the middle, footer closes everything. Like a sandwichโ€”bread, filling, bread! ๐Ÿฅช</p>
                </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_footer() in action!</p>
            </div>

            <div class="card">
                <h3>๐ŸŽฏ Try Different Footers</h3>
                <p>Click the buttons to see how different footer calls work:</p>
                
                <div class="demo-box">
                    <button class="demo-button" onclick="showFooterDemo('default')">Default Footer</button>
                    <button class="demo-button" onclick="showFooterDemo('minimal')">Minimal Footer</button>
                    <button class="demo-button" onclick="showFooterDemo('shop')">Shop Footer</button>
                    
                    <div class="demo-output" id="footerDemoOutput">
                        <p style="color: var(--text-muted);">๐Ÿ‘† Click a button 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 Footers</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 close your pages:</p>
                    <div class="code-block">
                        <button class="copy-btn" onclick="copyCode(this)">๐Ÿ“‹ Copy</button>
                        <pre><code>/**
 * index.php - Blog index
 */

&lt;?php get_header(); ?&gt;

&lt;div class="blog-posts"&gt;
  &lt;?php
  if ( have_posts() ) :
      while ( have_posts() ) :
          the_post();
          get_template_part( 'content', 'post' );
      endwhile;
  endif;
  ?&gt;
&lt;/div&gt;

&lt;!-- Close it all up! --&gt;
&lt;?php get_footer(); ?&gt;</code></pre>
                    </div>
                    <div class="success-box">
                        <strong>โœ… What happens:</strong>
                        <ul>
                            <li>Footer widgets display (if registered)</li>
                            <li>Copyright and links appear</li>
                            <li><code>wp_footer()</code> hook fires</li>
                            <li>JavaScript loads</li>
                            <li>HTML tags close properly</li>
                        </ul>
                    </div>
                </div>

                <div id="custom" class="tab-content">
                    <h3>๐Ÿš€ Custom Footer Variations</h3>
                    <p>Load different footers for different purposes:</p>
                    <div class="code-block">
                        <button class="copy-btn" onclick="copyCode(this)">๐Ÿ“‹ Copy</button>
                        <pre><code>/**
 * page-landing.php - Landing page
 */

&lt;?php get_header('minimal'); ?&gt;

&lt;div class="landing-content"&gt;
  &lt;!-- No distractions, just CTA --&gt;
&lt;/div&gt;

&lt;!-- Minimal footer without navigation --&gt;
&lt;?php get_footer('minimal'); ?&gt;

// ---

/**
 * woocommerce.php - Shop pages
 */

&lt;?php get_header('shop'); ?&gt;

&lt;div class="shop-content"&gt;
  &lt;!-- Products here --&gt;
&lt;/div&gt;

&lt;!-- Footer with trust badges & payment icons --&gt;
&lt;?php get_footer('shop'); ?&gt;</code></pre>
                    </div>
                    <div class="info-box">
                        <strong>๐Ÿ’ก File Naming:</strong>
                        <ul>
                            <li><code>get_footer('minimal')</code> โ†’ footer-minimal.php</li>
                            <li><code>get_footer('shop')</code> โ†’ footer-shop.php</li>
                            <li><code>get_footer('landing')</code> โ†’ footer-landing.php</li>
                        </ul>
                    </div>
                </div>

                <div id="conditional" class="tab-content">
                    <h3>๐Ÿ’Ž Smart Conditional Loading</h3>
                    <p>Load different footers based on context:</p>
                    <div class="code-block">
                        <button class="copy-btn" onclick="copyCode(this)">๐Ÿ“‹ Copy</button>
                        <pre><code>&lt;?php get_header(); ?&gt;

&lt;main class="site-content"&gt;
  &lt;!-- Page content --&gt;
&lt;/main&gt;

&lt;?php
// Smart footer selection
if ( is_page('landing') || is_page('signup') ) {
  // Minimal footer for conversion pages
  get_footer('minimal');
} elseif ( is_woocommerce() || is_shop() ) {
  // E-commerce footer with trust signals
  get_footer('shop');
} elseif ( is_404() ) {
  // Helpful footer for error pages
  get_footer('404');
} else {
  // Standard footer for everything else
  get_footer();
}
?&gt;</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_footer( $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 footer (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>Doesn't return anythingโ€”outputs HTML directly</p>
                    </div>

                    <div class="grid-item">
                        <h4>File Search Order</h4>
                        <p>1. footer-{name}.php</p>
                        <p>2. footer.php</p>
                        <p>3. wp-includes/theme-compat/footer.php</p>
                    </div>
                </div>
            </div>

            <div class="card">
                <h3>๐ŸŽฏ What's Inside footer.php?</h3>
                <p>A typical footer.php structure:</p>
                
                <div class="code-block">
                    <button class="copy-btn" onclick="copyCode(this)">๐Ÿ“‹ Copy</button>
                    <pre><code>&lt;!-- Footer Widget Area --&gt;
&lt;footer id="colophon" class="site-footer"&gt;
  &lt;div class="container"&gt;
      
      &lt;!-- Footer Widgets --&gt;
      &lt;?php if (is_active_sidebar('footer-1')) : ?&gt;
          &lt;div class="footer-widgets"&gt;
              &lt;?php dynamic_sidebar('footer-1'); ?&gt;
          &lt;/div&gt;
      &lt;?php endif; ?&gt;

      &lt;!-- Copyright --&gt;
      &lt;div class="site-info"&gt;
          &lt;p&gt;&copy; &lt;?php echo date('Y'); ?&gt; 
              &lt;?php bloginfo('name'); ?&gt;
          &lt;/p&gt;
      &lt;/div&gt;

  &lt;/div&gt;
&lt;/footer&gt;

&lt;!-- CRITICAL: wp_footer() hook --&gt;
&lt;?php wp_footer(); ?&gt;

&lt;!-- Close HTML --&gt;
&lt;/body&gt;
&lt;/html&gt;</code></pre>
                </div>

                <div class="warning-box">
                    <strong>โš ๏ธ NEVER FORGET wp_footer()!</strong>
                    <p>This hook is CRITICAL! Without it, plugins can't add scripts, the admin bar won't work, and many features will break. Always include it before &lt;/body&gt;!</p>
                </div>
            </div>
        </div>
    </section>

    <!-- Common Mistakes Section -->
    <section id="common-mistakes">
        <div class="container">
            <div class="section-header">
                <h2>โš ๏ธ Common Mistakes</h2>
                <p>Don't fall into these traps!</p>
            </div>

            <div class="card">
                <div class="warning-box">
                    <h3>โŒ Mistake #1: Forgetting get_footer()</h3>
                    <div class="code-block">
                        <pre><code>// WRONG - Page never closes properly
&lt;?php get_header(); ?&gt;

&lt;main&gt;
  &lt;!-- Content --&gt;
&lt;/main&gt;

&lt;!-- Missing get_footer()! --&gt;

// CORRECT
&lt;?php get_header(); ?&gt;

&lt;main&gt;
  &lt;!-- Content --&gt;
&lt;/main&gt;

&lt;?php get_footer(); ?&gt;</code></pre>
                    </div>
                </div>

                <div class="warning-box">
                    <h3>โŒ Mistake #2: Wrong File Naming</h3>
                    <div class="code-block">
                        <pre><code>// If you call:
&lt;?php get_footer('shop'); ?&gt;

// WRONG file names:
// โŒ shopfooter.php
// โŒ footer_shop.php
// โŒ shop-footer.php

// CORRECT:
// โœ… footer-shop.php</code></pre>
                    </div>
                </div>

                <div class="warning-box">
                    <h3>โŒ Mistake #3: Missing wp_footer() in footer.php</h3>
                    <div class="code-block">
                        <pre><code>// WRONG footer.php
&lt;footer&gt;
  &lt;p&gt;Copyright 2024&lt;/p&gt;
&lt;/footer&gt;
&lt;/body&gt;
&lt;/html&gt;
&lt;!-- Missing wp_footer()! --&gt;

// CORRECT footer.php
&lt;footer&gt;
  &lt;p&gt;Copyright 2024&lt;/p&gt;
&lt;/footer&gt;
&lt;?php wp_footer(); ?&gt;
&lt;/body&gt;
&lt;/html&gt;</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
&lt;?php include('footer.php'); ?&gt;

// CORRECT - Use WordPress function
&lt;?php get_footer(); ?&gt;</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 footer game!</p>
            </div>

            <div class="grid">
                <div class="card">
                    <h3>๐Ÿ’ก Tip #1: Footer Widgets</h3>
                    <div class="code-block">
                        <pre><code>// In functions.php
register_sidebar(array(
  'name' => 'Footer 1',
  'id' => 'footer-1',
  'before_widget' => '&lt;div class="widget"&gt;',
  'after_widget' => '&lt;/div&gt;'
));</code></pre>
                    </div>
                </div>

                <div class="card">
                    <h3>๐Ÿš€ Tip #2: Dynamic Copyright</h3>
                    <div class="code-block">
                        <pre><code>// Auto-updating year
&lt;p&gt;&copy; &lt;?php echo date('Y'); ?&gt;
  &lt;?php bloginfo('name'); ?&gt;
&lt;/p&gt;</code></pre>
                    </div>
                </div>

                <div class="card">
                    <h3>๐ŸŽจ Tip #3: Footer Menu</h3>
                    <div class="code-block">
                        <pre><code>// In footer.php
wp_nav_menu(array(
  'theme_location' => 'footer',
  'menu_class' => 'footer-menu'
));</code></pre>
                    </div>
                </div>

                <div class="card">
                    <h3>โšก Tip #4: Conditional Footers</h3>
                    <div class="code-block">
                        <pre><code>// Smart footer helper
function mytheme_smart_footer() {
  if (is_page_template('landing.php')) {
      get_footer('minimal');
  } else {
      get_footer();
  }
}</code></pre>
                    </div>
                </div>

                <div class="card">
                    <h3>๐Ÿ”’ Tip #5: Back to Top Button</h3>
                    <div class="code-block">
                        <pre><code>// In footer.php
&lt;a href="#top" class="back-to-top"&gt;
  โ†‘ Back to Top
&lt;/a&gt;</code></pre>
                    </div>
                </div>

                <div class="card">
                    <h3>๐Ÿ“ฑ Tip #6: Mobile Footer</h3>
                    <div class="code-block">
                        <pre><code>if (wp_is_mobile()) {
  get_footer('mobile');
} else {
  get_footer();
}</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 footer master!</p>
            </div>

            <div class="quiz-question">
                <h3>Question 1: What's the most critical function that MUST be in footer.php?</h3>
                <div class="quiz-options">
                    <div class="quiz-option" onclick="checkAnswer(this, false, 1)">
                        A) get_footer()
                    </div>
                    <div class="quiz-option" onclick="checkAnswer(this, true, 1)">
                        B) wp_footer()
                    </div>
                    <div class="quiz-option" onclick="checkAnswer(this, false, 1)">
                        C) the_footer()
                    </div>
                    <div class="quiz-option" onclick="checkAnswer(this, false, 1)">
                        D) footer_content()
                    </div>
                </div>
                <div class="quiz-feedback" id="feedback1"></div>
            </div>

            <div class="quiz-question">
                <h3>Question 2: What file does get_footer('shop'); load?</h3>
                <div class="quiz-options">
                    <div class="quiz-option" onclick="checkAnswer(this, false, 2)">
                        A) shop-footer.php
                    </div>
                    <div class="quiz-option" onclick="checkAnswer(this, true, 2)">
                        B) footer-shop.php
                    </div>
                    <div class="quiz-option" onclick="checkAnswer(this, false, 2)">
                        C) footer_shop.php
                    </div>
                    <div class="quiz-option" onclick="checkAnswer(this, false, 2)">
                        D) shopfooter.php
                    </div>
                </div>
                <div class="quiz-feedback" id="feedback2"></div>
            </div>

            <div class="quiz-question">
                <h3>Question 3: Where should get_footer() be called?</h3>
                <div class="quiz-options">
                    <div class="quiz-option" onclick="checkAnswer(this, false, 3)">
                        A) At the beginning of template files
                    </div>
                    <div class="quiz-option" onclick="checkAnswer(this, false, 3)">
                        C) In the middle of content
                    </div>
                    <div class="quiz-option" onclick="checkAnswer(this, true, 3)">
                        B) At the END of template files
                    </div>
                    <div class="quiz-option" onclick="checkAnswer(this, false, 3)">
                        D) Inside header.php
                    </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_footer() expert!</p>
                <div class="badge">Footer Master</div>
                <div class="badge">WordPress Pro</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_footer() cheat sheet</p>
            </div>

            <div class="summary-card">
                <h3>๐ŸŽฏ get_footer() Essentials</h3>
                
                <div class="summary-grid">
                    <div class="summary-item">
                        <strong>โœ… Basic Usage</strong>
                        <p>&lt;?php get_footer(); ?&gt;</p>
                    </div>

                    <div class="summary-item">
                        <strong>โœ… Custom Footer</strong>
                        <p>&lt;?php get_footer('name'); ?&gt;</p>
                    </div>

                    <div class="summary-item">
                        <strong>โœ… File Loaded</strong>
                        <p>footer.php or footer-{name}.php</p>
                    </div>

                    <div class="summary-item">
                        <strong>โœ… When to Call</strong>
                        <p>END of template files</p>
                    </div>

                    <div class="summary-item">
                        <strong>โœ… Critical Hook</strong>
                        <p>wp_footer() must be in footer.php</p>
                    </div>

                    <div class="summary-item">
                        <strong>โœ… Closes Tags</strong>
                        <p>&lt;/body&gt; and &lt;/html&gt;</p>
                    </div>

                    <div class="summary-item">
                        <strong>โœ… Action Hook</strong>
                        <p>do_action('get_footer')</p>
                    </div>

                    <div class="summary-item">
                        <strong>โœ… Return Value</strong>
                        <p>void (outputs directly)</p>
                    </div>
                </div>

                <div class="success-box" style="margin-top: 30px;">
                    <h4>๐Ÿ”‘ Key Takeaways:</h4>
                    <ul>
                        <li>โœจ Always call get_footer() at the END of templates</li>
                        <li>๐ŸŽฏ Never forget wp_footer() inside footer.php</li>
                        <li>๐ŸŽจ Use parameters for custom footer variations</li>
                        <li>โšก Closes HTML tags properly</li>
                        <li>๐Ÿ”ง Essential for plugin compatibility</li>
                        <li>๐Ÿš€ Makes site maintenance easy</li>
                    </ul>
                </div>
            </div>
        </div>
    </section>

    <!-- Footer -->
    <footer>
        <div class="container">
            <h3 style="margin-bottom: 20px;">๐ŸŽ“ Mission Accomplished!</h3>
            <p>You've mastered get_footer() and are ready to build professional 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 since 2024!
            </p>
            <div style="margin-top: 30px;">
                <span class="badge">Interactive Learning</span>
                <span class="badge">WordPress Master</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 Footer Demo
        function showFooterDemo(type) {
            const output = document.getElementById('footerDemoOutput');
            const demos = {
                default: `<span style="color: var(--accent-green);">โœ… Loading:</span> footer.php

<span style="color: var(--text-secondary);">// Standard footer with:
// - Footer widgets
// - Copyright info
// - Social links
// - wp_footer() hook
// - Closes &lt;/body&gt; and &lt;/html&gt;</span>`,
                minimal: `<span style="color: var(--accent-cyan);">โœ… Loading:</span> footer-minimal.php

<span style="color: var(--text-secondary);">// Minimal footer with:
// - Just copyright
// - No widgets or navigation
// - Perfect for landing pages
// - Still includes wp_footer()!</span>`,
                shop: `<span style="color: var(--accent-pink);">โœ… Loading:</span> footer-shop.php

<span style="color: var(--text-secondary);">// E-commerce footer with:
// - Trust badges
// - Payment icons
// - Return policy links
// - Customer support info</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 = '๐ŸŽ‰ Perfect! You nailed 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