WordPress多站点中load_plugin_textdomain触发错误通知问题
WordPress多站点插件翻译报错:
_load_textdomain_just_in_time调用错误 我的WordPress插件为Network Only类型,仅在多站点环境下测试。自WordPress 6.7版本起,收到错误通知:Function _load_textdomain_just_in_time was called incorrectly。
已尝试以下操作但均未解决问题:
- 将翻译代码从
plugins_loaded动作迁移到init动作,并设置了极低优先级(优先级1) - 单站点测试无异常,错误仅在多站点环境中出现
- 将翻译代码移至插件主
.php文件中 - 通过
get_current_blog_id检查当前站点,确保代码仅在指定站点触发
环境信息
目录结构
- pascalplugin -- languages -- pascalplugin-en_US.mo -- pascalplugin-en_US.po -- pascalplugin.pot -- pascalplugin.php
插件主文件代码(pascalplugin.php)
/** * Plugin Name: PascalPlugin * Version: 1.0.0 * Domain Path: /languages/ * Text Domain: pascalplugin * Tested up to: 6.7 * Requires at least: 5.9 * Requires PHP: 7.0 * Network: true */ if ( ! defined( 'ABSPATH' ) ) { die( 'You cannot access plugin\'s files directly' ); } if( !defined('PASCALPLUGIN_TEXTDOMAIN') ) { define( 'PASCALPLUGIN_TEXTDOMAIN', 'pascalplugin' ); } if (!defined('PASCALPLUGIN__FILE__')) { define( 'PASCALPLUGIN__FILE__', __FILE__ ); } add_action('init', '__init_load_textdomain', 1); function __init_load_textdomain() { $dir = wp_normalize_path(dirname(PASCALPLUGIN__FILE__)); $basename = plugin_basename(PASCALPLUGIN__FILE__); $basepath = trailingslashit(dirname($basename)); $lang_dir = trailingslashit($basepath . 'languages'); // Echo working properly and output "pascalplugin/languages/" echo $lang_dir; load_plugin_textdomain(PASCALPLUGIN_TEXTDOMAIN, false, $lang_dir); }
内容的提问来源于stack exchange,提问作者Hady Shaltout
相关产品推荐
相关产品推荐

