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 query variables are also available.
Parameters
$_template_file
stringrequired- Path to template file.
$load_once
booloptional- Whether to require_once or require.
Default:
true
$args
arrayoptional- Additional arguments passed to the template.
Default:
array()
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->query_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_SKIP flag is the safest option, ensuring globals and
* function variables cannot be overwritten.
*/
// phpcs:ignore WordPress.PHP.DontExtract.extract_extract
extract( $wp_query->query_vars, EXTR_SKIP );
}
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 arguments 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 arguments passed to the template.
*/
do_action( 'wp_after_load_template', $_template_file, $load_once, $args );
}
Hooks
- 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.
Loading a template in a plugin, but allowing theme and child theme to override template
Send variable with load_template()
you can send additional variable with load_template() . load_template() extracts all of the WP_Query query variables, into the scope of the loaded template.
use set_query_var() to make your variable available to the template part.
In template.php file you can access this variable like this
Note that the arguments 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.
The above will not work since we have the $result in the $args variable. I remove this entry since I do not understand how I can make a line break in the code…