钩子文档

get_header

💡 云策文档标注

概述

get_header 是一个 WordPress 钩子,在加载头部模板文件之前触发,允许开发者根据特定头部文件执行自定义代码。

关键要点

  • 钩子名称:get_header,在 get_header() 函数调用开始时运行。
  • 参数:$name(字符串或 null,指定头部文件名,null 表示默认头部)和 $args(数组,传递给头部模板的额外参数)。
  • 用途:可用于条件性地添加动作,例如基于不同头部文件加载样式表。
  • 注意事项:适合设置和执行代码,但避免直接输出内容,因为任何 echo 都会在页面标记显示前出现。

代码示例

function wpdocs_themeslug_header_hook( $name ) {
    if ( 'new' == $name ) {
        add_action( 'wp_enqueue_scripts', 'wpdocs_themeslug_header_style' );
    }
}
add_action( 'get_header', 'wpdocs_themeslug_header_hook' );

function wpdocs_themeslug_header_style() {
    wp_enqueue_style( 'wpdocs-header-new-style', get_template_directory_uri() . '/css/header-new.css' );
}

📄 原文内容

Fires before the header template file is loaded.

Parameters

$namestring|null
Name of the specific header file to use. Null for the default header.
$argsarray
Additional arguments passed to the header template.

More Information

get_header is a hook that gets run at the very start of the get_header function call. If you pass in the name for a specific header file into the function get_header(), like get_header( 'new' ), the do_action will pass in the same name as a parameter for the hook. This allows you to limit your add_action calls to specific templates if you wish. Actions added to this hook should be added to your functions.php file.

Note: This hook is best to use to set up and execute code that doesn’t get echoed to the browser until later in the page load. Anything you echo will show up before any of the markups is displayed.

Source

do_action( 'get_header', $name, $args );

Changelog

Version Description
5.5.0 The $args parameter was added.
2.8.0 The $name parameter was added.
2.1.0 Introduced.

User Contributed Notes

  1. Skip to note 2 content

    The following example will enqueue stylesheets conditionally for different headers. This is just one example of how you may use the hook and will use a secondary template file of header-new.php

    function wpdocs_themeslug_header_hook( $name ) {
    	if ( 'new' == $name ) {
    		add_action( 'wp_enqueue_scripts', 'wpdocs_themeslug_header_style' );
    	}
    }
    add_action( 'get_header', 'wpdocs_themeslug_header_hook' );
    
    function wpdocs_themeslug_header_style() {
    	wp_enqueue_style( 'wpdocs-header-new-style', get_template_directory_uri() . '/css/header-new.css' );
    }