有一种简单的方法可以绕过这个问题。将所有前端消息存储为主题选项。让我们定义一个选项“messages”:
add_option(\'messages\',array());
现在,我们必须填充此选项。让我们定义默认值:
$theme_messages_defaults = array (
\'read-more\' => __(\'Read more\',\'tekko\'),
\'next-page\' => __(\'Next page\',\'tekko\'),
... and so on ...
)
现在,我们必须将默认值转换为选项。我们只想在第一次安装、翻译文件更新或用户切换语言时执行此操作。此测试通过后,运行此功能:
function run_only_at_install_or_new_version {
global $theme_messages_defaults;
var $messages = array();
foreach ($theme_messages_defaults as $message_key => $message_val) {
$messages[$message_key] = $theme_messages_defaults[$message_val];
}
update_option(\'messages\',$messages);
}
考虑到该选项是一个数组,我们需要一个稍微不同的
get_option
功能:
function mytheme_get_message_option ($message_key) {
$messages = get_option(\'messages\');
$message = $messages[$message_key];
return $message;
}
在模板中,替换所有echo语句,如下所示:
mytheme_get_message_option(\'read-more\');
不要忘记,前端不再需要textdomain,因此在函数文件中添加一个条件:
if (is_admin()) load_theme_textdomain (\'mytheme\', \'path/to/languages\');
现在,您将所有消息放在一个地方,并正在防止不必要的翻译操作。事实上,你有更多的可能性。您可以将消息添加到选项页面,并让客户更改文本,而无需更改模板。嘿,如果你用mod代替选项,你甚至可以将它们添加到主题定制器中。请注意,您必须向
run_only_at_install_or_new_version
防止在更新主题时重写客户端消息。
Note: 以上内容改编自我自己使用的更复杂的设置,因此可能会有一些拼写错误。如果您正处于调试阶段,那么应该不会有问题。