Function and usage of locate_template() in wordpress


Answers ( 1 )


    The locate_template() function in WordPress is an essential tool for theme developers. It is used to retrieve the name of the highest-priority template file that exists based on a given set of criteria. This function provides a flexible and efficient way to load template files, ensuring that the most appropriate template is used in various contexts.


    locate_template( string|array $template_names, bool $load = false, bool $load_once = true, array $args = array() ): string


    locate_template() searches for template files in a specific order, prioritizing the stylesheet directory (child theme), then the template directory (parent theme), and finally the wp-includes/theme-compat directory. This search order is particularly useful for child themes, allowing them to override specific files from the parent theme simply by having a file with the same name.


    1. $template_names (string|array, required):

      • Description: An array or a string specifying the template file(s) to search for, in order. The function will return the first template file that exists.
      • Example: array('custom-template.php', 'page.php')
    2. $load (bool, optional):

      • Description: Determines whether to load the template file if it is found. If true, the file is loaded.
      • Default: false
      • Example: true
    3. $load_once (bool, optional):

      • Description: Indicates whether to use require_once or require when loading the template. This parameter has no effect if $load is false.
      • Default: true
      • Example: false
    4. $args (array, optional):

      • Description: An array of additional arguments that can be passed to the template. These arguments are available in the template file using get_template_part().
      • Default: array()
      • Example: array('arg1' => 'value1', 'arg2' => 'value2')


    • Type: string
    • Description: The function returns the template filename if one is located. If no matching template file is found, it returns an empty string.

    Example Usage:

    $template = locate_template(
        array('custom-template.php', 'page.php'),
        array('arg1' => 'value1', 'arg2' => 'value2')
    if ($template) {
        // The template exists and has been loaded
    } else {
        // No template found

    In this example, the function looks for 'custom-template.php' first and 'page.php' next. If 'custom-template.php' exists in either the child or parent theme, it will be loaded with require (not require_once), and the additional arguments arg1 and arg2 will be passed to it. If 'custom-template.php' doesn't exist, the function will look for 'page.php'.

Leave an answer