我有一个插件,其中需要使用get\\u editable\\u roles()函数,但我一直收到一个致命错误,说该函数不存在。
在我的主插件文件中,我有以下代码:
function prefix_run_plugin() {
$plugin = new Plugin_Class("1.0");
$plugin->run();
register_activation_hook( __FILE__, array($plugin, \'initialize\') );
register_uninstall_hook( __FILE__, array(\'Plugin_Class\', \'rollback\') );
}
prefix_run_plugin();
我需要在构造函数中使用get\\u editable\\u roles函数。调用此函数时,似乎尚未加载相应的WordPress文件,这会导致致命错误。所有其他WordPress功能都正常工作。任何建议都将不胜感激。
提前谢谢。
最合适的回答,由SO网友:Andrew Bartel 整理而成
我想我的评论会给出更好的答案,所以我们开始吧。
您可以将plugin类中的其他方法挂接到构造函数中的admin\\u init(对于admin端),如下所示:
class Plugin_Class {
public function __construct() {
add_action( \'admin_init\', array( $this, \'some_other_method\' ) );
}
public function some_other_method() {
// do something fancy with get_editable_roles()
}
}
这通常是更好的做法,同时将init挂接到前端,而不是直接从构造函数调用东西,因为它允许首先正确加载所有内容。此外,如果其他开发人员正在使用您的插件并希望对其进行扩展/修改,则可以删除该钩子,而无需直接破解该文件。从本质上讲,构造函数只是一大组init挂钩,或者是单独初始化方法的单个挂钩。
此外,请记住get_editable_roles() 仅在管理区域加载,其中is_admin() 将评估为true。在尝试使用“可编辑角色”功能之前,您可能也会考虑在插件的某个地方进行检查。