The load_script_textdomain_relative_path WordPress PHP Filter allows you to filter the relative path of scripts, which is used for locating translation files.
Usage
add_filter( 'load_script_textdomain_relative_path', 'your_custom_function', 10, 2 );
function your_custom_function( $relative, $src ) {
// Your custom code here
return $relative;
}
Parameters
$relative(string|false) – The relative path of the script. False if it could not be determined.$src(string) – The full source URL of the script.
More information
See WordPress Developer Resources: load_script_textdomain_relative_path
Examples
Remove version query string from script URL
Remove the version query string from the script URL to improve caching.
add_filter( 'load_script_textdomain_relative_path', 'remove_version_query_string', 10, 2 );
function remove_version_query_string( $relative, $src ) {
// Remove the version query string from the script URL
$src = remove_query_arg( 'ver', $src );
return $relative;
}
Set a custom translations folder
Change the default translations folder to a custom folder within your theme.
add_filter( 'load_script_textdomain_relative_path', 'custom_translations_folder', 10, 2 );
function custom_translations_folder( $relative, $src ) {
// Set the custom translations folder
$relative = '/your-theme/translations/';
return $relative;
}
Filter relative path for a specific script
Filter the relative path only for a specific script by checking the $src parameter.
add_filter( 'load_script_textdomain_relative_path', 'specific_script_relative_path', 10, 2 );
function specific_script_relative_path( $relative, $src ) {
// Check if the script is the one we want to filter
if ( strpos( $src, 'your-script-name.js' ) !== false ) {
// Set a custom relative path for this specific script
$relative = '/custom-path/translations/';
}
return $relative;
}
Set different translations folders for multiple scripts
Assign different translations folders for different scripts.
add_filter( 'load_script_textdomain_relative_path', 'multiple_scripts_translations_folders', 10, 2 );
function multiple_scripts_translations_folders( $relative, $src ) {
// Set a custom translations folder for script1
if ( strpos( $src, 'script1.js' ) !== false ) {
$relative = '/custom-path1/translations/';
}
// Set a custom translations folder for script2
if ( strpos( $src, 'script2.js' ) !== false ) {
$relative = '/custom-path2/translations/';
}
return $relative;
}
Skip translations for a specific script
Disable translations for a specific script by returning false.
add_filter( 'load_script_textdomain_relative_path', 'skip_translation_for_script', 10, 2 );
function skip_translation_for_script( $relative, $src ) {
// Check if the script is the one we want to skip translations
if ( strpos( $src, 'no-translation-script.js' ) !== false ) {
// Skip translations for this specific script
return false;
}
return $relative;
}