The get_page_template() WordPress PHP function retrieves the path of the page template in the current or parent template.
Usage
$template_path = get_page_template();
Parameters
- None
More information
See WordPress Developer Resources: get_page_template()
Note: For block themes, use locate_block_template() function instead.
The template hierarchy looks like:
- {Page Template}.php
- page-{page_name}.php
- page-{id}.php
- page.php
Example:
- page-templates/full-width.php
- page-about.php
- page-4.php
- page.php
The template hierarchy and template path are filterable via the {$type}_template_hierarchy
and {$type}_template
dynamic hooks, where $type is ‘page’.
Examples
Display Page Template Filename
Code:
echo '<!-- ' . basename( get_page_template() ) . ' -->';
Explanation: This code will display the filename of the page template used to render a page within an HTML comment.
Check if a Specific Template is Being Used
Code:
if ( 'page-about.php' === basename( get_page_template() ) ) { // Your code here }
Explanation: This code checks if the current page is using the ‘page-about.php’ template. If true, the code inside the if statement will run.
Customize Content Based on Template
Code:
$template_name = basename( get_page_template() ); if ( 'page-about.php' === $template_name ) { // Custom content for the about page } elseif ( 'page-contact.php' === $template_name ) { // Custom content for the contact page } else { // Default content }
Explanation: This code customizes the content based on the current page template. It checks for ‘page-about.php’ and ‘page-contact.php’, displaying custom content for each. If neither of those templates is used, it shows the default content.
Add a Body Class Based on Template
Code:
function my_body_class( $classes ) { $template_name = basename( get_page_template() ); $classes[] = 'template-' . sanitize_html_class( $template_name, '' ); return $classes; } add_filter( 'body_class', 'my_body_class' );
Explanation: This code adds a body class based on the current page template. The class name will be ‘template-‘ followed by the sanitized template name.
Display a Message for a Specific Template
Code:
$template_name = basename( get_page_template() ); if ( 'page-about.php' === $template_name ) { echo 'Welcome to the about page!'; }
Explanation: This code displays a welcome message only when the ‘page-about.php’ template is being used.