The parent_theme_file_path WordPress PHP filter allows you to modify the file path of a specific file in the parent theme.
Usage
add_filter('parent_theme_file_path', 'your_function_name', 10, 2); function your_function_name($path, $file) { // your custom code here return $path; }
Parameters
$path
(string) – The original file path.$file
(string) – The requested file to search for.
More information
See WordPress Developer Resources: parent_theme_file_path
Examples
Change a specific file path
Change the file path for single.php
in the parent theme.
add_filter('parent_theme_file_path', 'change_single_file_path', 10, 2); function change_single_file_path($path, $file) { if ($file == 'single.php') { $path = get_template_directory() . '/custom/single.php'; } return $path; }
Add a prefix to all file paths
Add a custom prefix to all file paths in the parent theme.
add_filter('parent_theme_file_path', 'add_prefix_to_file_path', 10, 2); function add_prefix_to_file_path($path, $file) { $path = get_template_directory() . '/custom-' . $file; return $path; }
Change the path for all template files
Change the path for all template files in the parent theme to a custom folder.
add_filter('parent_theme_file_path', 'change_template_path', 10, 2); function change_template_path($path, $file) { if (preg_match('/\.php$/', $file)) { $path = get_template_directory() . '/custom_templates/' . $file; } return $path; }
Exclude a specific file from being loaded
Prevent archive.php
from being loaded in the parent theme.
add_filter('parent_theme_file_path', 'exclude_archive_file', 10, 2); function exclude_archive_file($path, $file) { if ($file == 'archive.php') { $path = ''; } return $path; }
Change the path for files in a specific folder
Change the path for all files inside the blocks
folder in the parent theme.
add_filter('parent_theme_file_path', 'change_blocks_folder_path', 10, 2); function change_blocks_folder_path($path, $file) { if (strpos($file, 'blocks/') !== false) { $path = get_template_directory() . '/custom_blocks/' . $file; } return $path; }