首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
您现在的位置: 程式碼之家 >> 編程語言 >  >> 網頁程式設計 >> PHP 程式設計 >> PHP 綜合知識

WordPress 主題開發核心:get_header() 載入頁面頭部模板完整參數與子模板機制

     編輯:PHP 綜合知識

get_header() 是 WordPress 主題模板系統的基石函數,負責載入 header.php 或其子模板變體。本文詳細拆解參數、子模板命名規則、載入優先級、Hook 機制與實戰場景。

函數簽名

<?php get_header( $name = null ); ?>
  • $name (string, 可選):子模板標識。傳 'home' → 載入 header-home.php

源碼實現 (wp-includes/general-template.php)

function get_header( $name = null ) {
    do_action( 'get_header', $name ); // 觸發 Hook
    $templates = array();
    if ( isset($name) ) $templates[] = "header-{$name}.php";
    $templates[] = 'header.php';
    // 兼容舊版主題(未來將移除)
    if ('' == locate_template($templates, true))
        load_template( ABSPATH . WPINC . '/theme-compat/header.php');
}

載入優先級

  1. 子主題 header-{$name}.php
  2. 子主題 header.php
  3. 父主題 header-{$name}.php
  4. 父主題 header.php
  5. 核心兼容 wp-includes/theme-compat/header.php

實戰場景

1. 簡單 404 頁面

<?php get_header(); ?>
<h2>Error 404 - Not Found</h2>
<?php get_sidebar(); ?>
<?php get_footer(); ?>

2. 不同頁面加載不同頭部

<?php
if ( is_home() ) {
    get_header('home');      // header-home.php
} elseif ( is_404() ) {
    get_header('404');       // header-404.php
} else {
    get_header();            // header.php
}
?>

Hook 擴展點

  • do_action('get_header', $name):在載入前觸發,可用於注入頁面級 CSS/JS、修改全局變量
  • 對應 get_footer、get_sidebar、get_template_part 同理

最佳實踐

  • 公共頭部邏輯放 header.php,差異化片段拆分為 header-{context}.php
  • 避免在 header.php 直接輸出大量 HTML,改用 get_template_part('header','nav') 等模組化
  • 子主題覆蓋父主題頭部時,只需創建同名文件,無需複製整個父主題文件
  • 若需在頭部輸出前修改 wp_head 內容,掛鉤 wp_head 而非 get_header

掌握 get_header() 子模板機制,能讓主題結構清晰、易維護、極易擴展,是專業 WordPress 主題開發的入門必修課。

  1. 上一篇文章:
  2. 下一篇文章:
Copyright © 程式碼之家 All Rights Reserved