En ocasiones, al trabajar con plugins o temas en WordPress, pueden aparecer errores relacionados con la carga anticipada de archivos de traducción. Esto suele ocurrir cuando se intenta invocar funciones de internacionalización (como __()
o _e()
) antes de que WordPress haya inicializado correctamente el sistema de traducciones.
El problema se complica cuando el mensaje de error no indica con claridad de dónde proviene la llamada prematura. Para rastrear el origen exacto, podemos apoyarnos en un pequeño truco muy útil.
Simplemente coloca el siguiente fragmento de código al inicio del archivo principal del plugin que sospeches que está causando el conflicto:
if ( defined('WP_DEBUG') && WP_DEBUG ) {
set_error_handler(function($errno, $errstr, $errfile, $errline) {
// Filtramos solo el Notice específico de load_textdomain_just_in_time
if ( strpos($errstr, '_load_textdomain_just_in_time') !== false && strpos($errstr, '[nombre-del-plugin]') !== false ) {
error_log("=== DEBUG NOTICE LOAD_TEXTDOMAIN ===");
error_log("Mensaje: $errstr");
error_log("Archivo: $errfile");
error_log("Línea: $errline");
// Stack trace
ob_start();
debug_print_backtrace(DEBUG_BACKTRACE_IGNORE_ARGS);
$trace = ob_get_clean();
error_log($trace);
}
// Llamamos al handler anterior para no romper otros errores
return false;
});
}
Esto genera una salida completa en el archivo de debug, debug.log que está en /wp-content/debug.log, donde se muestra toda la traza hasta el punto exacto que genera el error.
Es necesario haber habilitado antes en wp-config.php el debug con estas líneas:
define( 'WP_DEBUG', true );
define( 'WP_DEBUG_DISPLAY', true);
define('WP_DEBUG_LOG', true);