我通过常量定义方法将插件路径定义为常量,如下所示。
define( 'MY_PLUGIN_DIR', untrailingslashit( plugin_dir_path( __FILE__ ) ) );
可以在插件中访问所有文件和主题。但是当我在另一个插件中调用此常量时,此常量将变为未定义。
如何在另一个插件中使此插件保持不变?任何帮助将不胜感激。
谢谢,
答案 0 :(得分:0)
可能你的问题是wordpress调用你的插件的顺序:设置常量的插件在调用它之后加载。
可以找到有关如何强制插件首先加载的更好解释here。我在这里引用了重要部分的引用:
加载插件的顺序(至少从WP 2.9.1开始)由存储为" active_plugins"的数组的顺序决定。在WP选项表中。每当激活一个插件时,它就被添加到这个数组中,该数组按插件名的字母顺序排序,并且数组被保存到数据库中。
幸运的是,有一个方便的动作挂钩" activated_plugins",在活动插件阵列保存到数据库后调用。这允许您在最初保存数组后操纵存储在此数组中的插件的顺序。
您必须在插件中使用以下PHP代码来定义常量,然后停用并重新激活它(从我上面提供的链接复制)。
function this_plugin_first() {
// ensure path to this file is via main wp plugin path
$wp_path_to_this_file = preg_replace('/(.*)plugins\/(.*)$/', WP_PLUGIN_DIR."/$2", __FILE__);
$this_plugin = plugin_basename(trim($wp_path_to_this_file));
$active_plugins = get_option('active_plugins');
$this_plugin_key = array_search($this_plugin, $active_plugins);
if ($this_plugin_key) { // if it's 0 it's the first plugin already, no need to continue
array_splice($active_plugins, $this_plugin_key, 1);
array_unshift($active_plugins, $this_plugin);
update_option('active_plugins', $active_plugins);
}
}
add_action("activated_plugin", "this_plugin_first");
希望它有所帮助!