仅在插件激活时运行,而不是wp_head

时间:2015-12-08 作者:Ohsik

我的插件上有以下功能,可以为当前用户添加更多功能。

// Role setting for add media
function wh_edit_roles(){
    if ( current_user_can( \'edit_posts\' ) ){
        $user = new WP_User(get_current_user_id());
        $user->add_cap(\'edit_post\');
        $user->add_cap(\'edit_others_pages\');
        $user->add_cap(\'edit_published_pages\');
    }
}
add_action(\'wp_head\', \'wh_edit_roles\');
根据WordPress\'s add_cap codex, 建议在插件激活时运行此功能。激活插件而不是wp_head

非常感谢。

1 个回复
最合适的回答,由SO网友:jdm2112 整理而成

这取决于您的插件是以过程风格还是面向对象风格编写的。

register_activation_hook 是你想要的。https://codex.wordpress.org/Function_Reference/register_activation_hook

具体的合并方式取决于插件编码风格。法典中列出的示例显示了多种方法。

程序示例:如果主插件文件中有一个名为myplugin\\u activate()的函数,位于:wp content/plugins/myplugin。php orwp内容/插件/我的插件/我的插件。php

使用此代码:

function myplugin_activate() {

    // Activation code here...
}
register_activation_hook( __FILE__, \'myplugin_activate\' );
如果您的插件使用singleton类模式,请添加如下激活挂钩:

class MyPlugin {
     static function install() {
            // do not generate any output here
     }
}
register_activation_hook( __FILE__, array( \'MyPlugin\', \'install\' ) );
不要忘记附带一个停用挂钩,特别是如果您正在设置cron作业并执行其他需要在插件停用或删除时清理的任务。

相关推荐

Testing Plugins for Multisite

我最近发布了一个WordPress插件,它在单个站点上非常有效。我被告知该插件在多站点安装上不能正常工作,我理解其中的一些原因。我已经更新了代码,现在需要一种方法来测试更新后的代码,然后才能转到实时客户的多站点安装。我有一个用于测试的WordPress安装程序的单站点安装,但需要在多站点安装上进行测试。根据我所能找到的唯一方法是在网络上至少有两个站点来安装整个多站点安装,以测试我的插件。设置WordPress的整个多站点安装是插件开发人员的唯一/首选方式,还是有更快的测试环境可用。