The get_single_template() WordPress PHP function retrieves the path of a single template in the current or parent theme. This function is applicable to single Posts, single Attachments, and single custom post types.
Usage
$template_path = get_single_template();
Parameters
- None
More information
See WordPress Developer Resources: get_single_template
Examples
Display a custom single post template
add_filter( 'single_template', 'my_custom_single_template' ); function my_custom_single_template( $template ) { global $post; // Check for a specific post ID if ( $post->ID == 123 ) { $new_template = locate_template( array( 'single-custom.php' ) ); if ( '' != $new_template ) { return $new_template; } } return $template; }
Use a different single template for a specific category
add_filter( 'single_template', 'custom_single_template_for_category' ); function custom_single_template_for_category( $template ) { if ( in_category( 'my-category' ) ) { $new_template = locate_template( array( 'single-my-category.php' ) ); if ( '' != $new_template ) { return $new_template; } } return $template; }
Load a specific single template for a custom post type
add_filter( 'single_template', 'load_single_template_for_custom_post_type' ); function load_single_template_for_custom_post_type( $template ) { global $post; if ( 'my_custom_post_type' === $post->post_type ) { $new_template = locate_template( array( 'single-my-custom-post-type.php' ) ); if ( '' != $new_template ) { return $new_template; } } return $template; }
Display a custom single template based on post format
add_filter( 'single_template', 'load_single_template_for_post_format' ); function load_single_template_for_post_format( $template ) { if ( has_post_format( 'gallery' ) ) { $new_template = locate_template( array( 'single-gallery.php' ) ); if ( '' != $new_template ) { return $new_template; } } return $template; }
Use a specific single template for posts with a specific tag
add_filter( 'single_template', 'custom_single_template_for_tag' ); function custom_single_template_for_tag( $template ) { if ( has_tag( 'my-tag' ) ) { $new_template = locate_template( array( 'single-my-tag.php' ) ); if ( '' != $new_template ) { return $new_template; } } return $template; }