获取插件文件中的用户角色

时间:2014-10-28 作者:Hasan Akhtar

我有一个插件,其中需要使用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功能都正常工作。任何建议都将不胜感激。

提前谢谢。

1 个回复
最合适的回答,由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。在尝试使用“可编辑角色”功能之前,您可能也会考虑在插件的某个地方进行检查。

结束

相关推荐

Custom taxonomy template loop

我知道这个问题问得很多,但我找不到一个适合我的答案。我制作了一些自定义帖子类型和一些自定义分类法。我有自定义的帖子类型Products 并与分类法相联系Product Categories. 当用户在产品页面上单击产品类别时,我想向他显示该特定类别中的所有产品。问题是,产品类别将约为50种。现在我发现的唯一一件事就是把这个<?php $loop = new WP_Query( array( \'post_type\' => \'all_products\', \'posts_per_page\