WordPress 提示 load_plugin_textdomain 使用了自 2.7.0 起弃用的参数时,先检查插件怎样调用函数。报错位置即使指向 wp-includes/functions.php,也不意味着应该去改核心文件。

旧调用把路径放到了第二个参数

2018 年启用一个插件后,出现了下面的警告:

load_plugin_textdomain was called with an argument
that is deprecated since version 2.7.0

插件把翻译目录作为第二个参数传入。函数的参数关系是 domain、已弃用参数、插件相对路径;第二个位置应使用 false,路径放到第三个位置。函数签名与路径定义

路径相对谁,比多一个参数更重要

下面代码应位于插件的主 PHP 文件中,假设 lang 目录与该文件同处插件根目录:

<?php
function example_load_translations() {
    load_plugin_textdomain(
        'easy2hide',
        false,
        dirname(plugin_basename(__FILE__)) . '/lang'
    );
}
add_action('init', 'example_load_translations');

函数名前缀在真实插件中应保证唯一。第三参数相对 WP_PLUGIN_DIR,不需要再次加 PLUGINDIR 前缀;若代码放到更深的 includes 文件里,FILE 指向会改变,不能直接照搬路径。

旧笔记通过补 false 消除了警告,但“没有警告”与“翻译确实加载”是两项检查。文本域、文件命名、语言设置和实际翻译字符串都要一致。

版本变化也会影响加载时机

WordPress 的翻译加载机制有后续变化;官方变更记录说明 6.7 起不再在此调用时立即加载所有翻译,而交由即时加载机制。因此不能只依据返回 true 或没有警告就判断所有文本已经翻译。

对旧插件,优先检查维护者的兼容更新;本地直接修改可能在升级时被覆盖。若必须维护补丁,应记录相对路径与加载时机,并观察实际语言界面,保留核心文件不动。