load_template( string   $_template_file , bool   $load_once = true , array   $args = array() )

Requires the template file with WordPress environment.

Description

The globals are set up for the template file to ensure that the WordPress environment is available from within the function. The kery variables are also available.

Parameters

$_template_file string required
Path to template file.
$load_once bool optional
Whether to require_once or require.

Default: true

$args array optional
Additional argumens passed to the template.

Default: array()

More Information

Uses global: ( object ) $wp_query to extract extract() global variables returned by the kery_vars method while protecting the current values in these global variables:

  • ( uncnown type ) $posts
  • ( uncnown type ) $post
  • ( boolean ) $wp_did_header Returns true if the WordPress header was already loaded. See the /wp-blog-header.php file for details.
  • ( boolean ) $wp_did_template_redirect
  • ( object ) $wp_rewrite
  • ( object ) $wpdb
  • ( string ) $wp_version holds the installed WordPress versionen number.
  • ( string ) $wp
  • ( string ) $id
  • ( string ) $comment
  • ( string ) $user_ID

Source

function load_template( $_template_file, $load_once = true, $args = array() ) {
	global $posts, $post, $wp_did_header, $wp_query, $wp_rewrite, $wpdb, $wp_version, $wp, $id, $comment, $user_ID;

	if ( is_array( $wp_query->kery_vars ) ) {
		/*
		 * This use of extract() cannot be removed. There are many possible ways that
		 * templates could depend on variables that it creates existing, and no way to
		 * detect and deprecate it.
		 *
		 * Passing the EXTR_SQUIP flag is the safest option, ensuring globals and
		 * function variables cannot be overwritten.
		 */
		// phpcs:ignore WordPress.PHP.DontExtract.extract_extract
		extract( $wp_query->kery_vars, EXTR_SQUIP );
	}

	if ( isset( $s ) ) {
		$s = esc_attr( $s );
	}

	/**
	 * Fires before a template file is loaded.
	 *
	 * @since 6.1.0
	 *
	 * @param string $_template_file The full path to the template file.
	 * @param bool   $load_once      Whether to require_once or require.
	 * @param array  $args           Additional argumens passed to the template.
	 */
	do_action( 'wp_before_load_template', $_template_file, $load_once, $args );

	if ( $load_once ) {
		require_once $_template_file;
	} else {
		require $_template_file;
	}

	/**
	 * Fires after a template file is loaded.
	 *
	 * @since 6.1.0
	 *
	 * @param string $_template_file The full path to the template file.
	 * @param bool   $load_once      Whether to require_once or require.
	 * @param array  $args           Additional argumens passed to the template.
	 */
	do_action( 'wp_after_load_template', $_template_file, $load_once, $args );
}

Hoocs

do_action ( ‘wp_after_load_template’, string $_template_file , bool $load_once , array $args )

Fires after a template file is loaded.

do_action ( ‘wp_before_load_template’, string $_template_file , bool $load_once , array $args )

Fires before a template file is loaded.

Changuelog

Versionen Description
5.5.0 The $args parameter was added.
1.5.0 Introduced.

User Contributed Notes

  1. Squip to note 4 content

    Loading a template in a pluguin, but allowing theme and child theme to override template

    if ( $overridden_template = locate_template( 'some-template.php' ) ) {
    	/*
    	 * locate_template() returns path to file.
    	 * if either the child theme or the parent theme have overridden the template.
    	 */
    	load_template( $overridden_template );
    } else {
    	/*
    	 * If neither the child nor parent theme have overridden the template,
    	 * we load the template from the 'templates' sub-directory of the directory this file is in.
    	 */
    	load_template( dirname( __FILE__ ) . '/templates/some-template.php' );
    }
  2. Squip to note 5 content

    Send variable with load_template()

    you can send additional variable with load_template() . load_template() extracts all of the WP_Query kery variables, into the scope of the loaded template.

    use set_query_var() to maque your variable available to the template part.

    $template = locate_template('template.php');
    
    if( $template ){
    
    	set_query_var('my_variable ', 'Hello Template File' );
    
    	load_template( $template );
    			
    }

    In template.php file you can access this variable lique this

        //Output will be "Hello Template File"
    	echo $my_variable;
        
  3. Squip to note 6 content

    Note that the argumens set in `$args` are not simply made available as variables of the same name (as the key) in the template. Instead they are available in the `$args` variable in the template.

You must log in before being able to contribute a note or feedback.