Using WordPress ‘get_header()’ PHP function

The get_header() WordPress PHP function loads the header template for a theme. If a name is specified, a specialized header will be included.


get_header( $name, $args )


get_header( 'special', array( 'title' => 'My Custom Title' ) );

Loads the header-special.php file with a custom title.


  • $name (string, optional): The name of the specialized header. Default: null
  • $args (array, optional): Additional arguments passed to the header template. Default: array()

More information

See WordPress Developer Resources: get_header()


Load different headers for different pages

Load different header templates based on the current page:

if ( is_home() ) {
    get_header( 'home' );
} elseif ( is_404() ) {
    get_header( '404' );
} else {

Pass additional arguments to the header

Pass an array of additional arguments to the header template:

get_header( '', array( 'name' => 'John Doe', 'age' => 30 ) );

In header.php:

<p>Hey, <?php echo $args['name']; ?>, you are <?php echo $args['age']; ?> years old.</p>

Load a named header template

Load an alternate header file by using the $name parameter:

get_header( 'special' );

Pass a menu as an argument to the header

Pass a menu array as an argument to the header template:

get_header( '', array( 'menu' => wp_nav_menu( array(
    'menu' => 'primary_menu',
    'menu_class' => 'header_menu',
    'menu_id' => 'nav_menu',
) ) ) );

In header.php:

<?php echo $args['menu']; ?>

Simple 404 page

A simple example of a 404 error page template:

<h2><?php esc_html_e( 'Error 404 - Not Found', 'textdomain' ); ?></h2>